mirror of
https://github.com/jmagar/unraid-mcp.git
synced 2026-03-01 16:04:24 -08:00
Update docker-compose.yml
This commit is contained in:
23
.dockerignore
Normal file
23
.dockerignore
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
Dockerfile
|
||||||
|
.dockerignore
|
||||||
|
.git
|
||||||
|
.gitignore
|
||||||
|
__pycache__
|
||||||
|
*.pyc
|
||||||
|
*.pyo
|
||||||
|
*.pyd
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
.env.*
|
||||||
|
*.log
|
||||||
|
logs/
|
||||||
|
*.db
|
||||||
|
*.sqlite3
|
||||||
|
instance/
|
||||||
|
.pytest_cache/
|
||||||
|
.mypy_cache/
|
||||||
|
.venv/
|
||||||
|
venv/
|
||||||
|
env/
|
||||||
|
.vscode/
|
||||||
|
cline_docs/
|
||||||
18
.env.example
Normal file
18
.env.example
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# Unraid MCP Server Configuration
|
||||||
|
UNRAID_API_URL=https://your-unraid-server-url/graphql # Ensure this matches what the server script (unraid-mcp-server.py) expects
|
||||||
|
UNRAID_API_KEY=your_unraid_api_key
|
||||||
|
|
||||||
|
# MCP Server Settings
|
||||||
|
UNRAID_MCP_TRANSPORT=sse
|
||||||
|
UNRAID_MCP_HOST=0.0.0.0
|
||||||
|
UNRAID_MCP_PORT=6970
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
UNRAID_MCP_LOG_LEVEL=INFO # Changed from UNRAID_LOG_LEVEL
|
||||||
|
UNRAID_MCP_LOG_FILE=unraid-mcp.log # Added
|
||||||
|
|
||||||
|
# Optional: SSL verification for Unraid API calls
|
||||||
|
# Set to 'false' or '0' to disable (e.g., for self-signed certs).
|
||||||
|
# Set to a path to a CA bundle file to use custom CAs.
|
||||||
|
# Defaults to 'true' (SSL verification enabled) if not set in server code, but explicitly configurable via UNRAID_VERIFY_SSL in script.
|
||||||
|
UNRAID_VERIFY_SSL=true
|
||||||
22
.gitignore
vendored
Normal file
22
.gitignore
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Python-generated files
|
||||||
|
__pycache__/
|
||||||
|
*.py[oc]
|
||||||
|
build/
|
||||||
|
dist/
|
||||||
|
wheels/
|
||||||
|
*.egg-info
|
||||||
|
|
||||||
|
# Virtual environments
|
||||||
|
.venv
|
||||||
|
.venv-backend
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
*.log
|
||||||
|
|
||||||
|
.bivvy
|
||||||
|
.cursor
|
||||||
|
|
||||||
|
|
||||||
|
web-ui/frontend/node_modules
|
||||||
|
web-ui/backend/.venv-backend/
|
||||||
|
.pnpm-store/
|
||||||
30
Dockerfile
Normal file
30
Dockerfile
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# Use an official Python runtime as a parent image
|
||||||
|
FROM python:3.9-slim
|
||||||
|
|
||||||
|
# Set the working directory in the container
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Copy the dependencies file to the working directory
|
||||||
|
COPY requirements.txt .
|
||||||
|
|
||||||
|
# Install any needed packages specified in requirements.txt
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
# Copy the rest of the application's code to the working directory
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Make port UNRAID_MCP_PORT available to the world outside this container
|
||||||
|
# Defaulting to 6970, but can be overridden by environment variable
|
||||||
|
EXPOSE 6970
|
||||||
|
|
||||||
|
# Define environment variables (defaults, can be overridden at runtime)
|
||||||
|
ENV UNRAID_MCP_PORT=6970
|
||||||
|
ENV UNRAID_MCP_HOST="0.0.0.0"
|
||||||
|
ENV UNRAID_MCP_TRANSPORT="streamable-http"
|
||||||
|
ENV UNRAID_API_URL=""
|
||||||
|
ENV UNRAID_API_KEY=""
|
||||||
|
ENV UNRAID_VERIFY_SSL="true"
|
||||||
|
ENV UNRAID_MCP_LOG_LEVEL="INFO"
|
||||||
|
|
||||||
|
# Run unraid-mcp-server.py when the container launches
|
||||||
|
CMD ["python", "unraid-mcp-server.py"]
|
||||||
18
cline_docs/activeContext.md
Normal file
18
cline_docs/activeContext.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# Active Context
|
||||||
|
|
||||||
|
## What you're working on now
|
||||||
|
|
||||||
|
Containerizing the Python MCP server located in the `/mnt/cache/compose/unraid-mcp` directory. The main script is `unraid-mcp-server.py`.
|
||||||
|
|
||||||
|
## Recent changes
|
||||||
|
|
||||||
|
- Confirmed project path accessible to tools is `/mnt/cache/compose/unraid-mcp/`.
|
||||||
|
- Created the `cline_docs` directory at the correct path.
|
||||||
|
|
||||||
|
## Next steps
|
||||||
|
|
||||||
|
1. Create `Dockerfile` for the Python MCP server.
|
||||||
|
2. Create `.dockerignore` file to optimize the Docker build context.
|
||||||
|
3. Inspect `unraid-mcp-server.py` to determine the run command and any exposed ports.
|
||||||
|
4. Inspect `requirements.txt` for dependencies.
|
||||||
|
5. Update `README.md` with instructions for building and running the Docker container.
|
||||||
15
cline_docs/productContext.md
Normal file
15
cline_docs/productContext.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Product Context
|
||||||
|
|
||||||
|
## Why this project exists
|
||||||
|
|
||||||
|
To package the Python MCP server (`unraid-mcp-server.py`) into a portable, isolated, and reproducible Docker container.
|
||||||
|
|
||||||
|
## What problems it solves
|
||||||
|
|
||||||
|
- Simplifies deployment of the MCP server across different environments.
|
||||||
|
- Ensures a consistent runtime environment for the server.
|
||||||
|
- Facilitates easier management and scaling if needed.
|
||||||
|
|
||||||
|
## How it should work
|
||||||
|
|
||||||
|
A Docker image should be buildable from the provided `Dockerfile`. Running a container from this image should successfully start the `unraid-mcp-server.py` application, making its services available as configured.
|
||||||
19
cline_docs/progress.md
Normal file
19
cline_docs/progress.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Progress
|
||||||
|
|
||||||
|
## What works
|
||||||
|
|
||||||
|
- The Python MCP server (`unraid-mcp-server.py`) is assumed to be functional in a local Python environment with dependencies installed from `requirements.txt`.
|
||||||
|
- `cline_docs` directory has been created at `/mnt/cache/compose/unraid-mcp/cline_docs/`.
|
||||||
|
- `productContext.md`, `activeContext.md`, `systemPatterns.md`, `techContext.md`, and `progress.md` have been written to `cline_docs`.
|
||||||
|
|
||||||
|
## What's left to build
|
||||||
|
|
||||||
|
- `Dockerfile`
|
||||||
|
- `.dockerignore`
|
||||||
|
- Updated `README.md` with Docker build and run instructions.
|
||||||
|
|
||||||
|
## Progress status
|
||||||
|
|
||||||
|
- **Initiated**: Task of containerizing the Python MCP server has begun.
|
||||||
|
- **Documentation Created**: `cline_docs` files have been successfully written.
|
||||||
|
- **Pending**: Creation of Docker-related files and documentation updates.
|
||||||
18
cline_docs/systemPatterns.md
Normal file
18
cline_docs/systemPatterns.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# System Patterns
|
||||||
|
|
||||||
|
## How the system is built
|
||||||
|
|
||||||
|
- The core application is a Python script: `unraid-mcp-server.py`.
|
||||||
|
- Python dependencies are managed via `requirements.txt`.
|
||||||
|
- The application will be containerized using Docker.
|
||||||
|
|
||||||
|
## Key technical decisions
|
||||||
|
|
||||||
|
- Utilize an official Python base image for the Docker container to ensure a stable and secure foundation.
|
||||||
|
- Python dependencies will be installed within the Docker image using `pip` and the `requirements.txt` file.
|
||||||
|
- Environment variables will be the primary method for configuring the application within the Docker container. The `.env.example` and `.env.local` files provide templates for these variables, but will not be copied directly into the image for security and flexibility.
|
||||||
|
|
||||||
|
## Architecture patterns
|
||||||
|
|
||||||
|
- Standard Docker containerization pattern for a Python application.
|
||||||
|
- The application is expected to be a network service, exposing one or more ports.
|
||||||
19
cline_docs/techContext.md
Normal file
19
cline_docs/techContext.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Tech Context
|
||||||
|
|
||||||
|
## Technologies used
|
||||||
|
|
||||||
|
- Python (for the MCP server application)
|
||||||
|
- Docker (for containerization)
|
||||||
|
- `pip` (for Python package management)
|
||||||
|
|
||||||
|
## Development setup
|
||||||
|
|
||||||
|
- Current: Local Python development environment.
|
||||||
|
- Target: Dockerized application runnable in any Docker-compatible environment.
|
||||||
|
|
||||||
|
## Technical constraints
|
||||||
|
|
||||||
|
- The Docker container must successfully run the `unraid-mcp-server.py` script.
|
||||||
|
- All dependencies listed in `requirements.txt` must be installed in the Docker image.
|
||||||
|
- The container should be configurable via environment variables (e.g., for API keys, server address/port if applicable).
|
||||||
|
- The necessary network ports used by the MCP server must be exposed by the Docker container.
|
||||||
18
docker-compose.yml
Normal file
18
docker-compose.yml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
services:
|
||||||
|
unraid-mcp:
|
||||||
|
image: unraid-mcp-server # Assumes you've built this image locally using 'docker build -t unraid-mcp-server .'
|
||||||
|
# Or, to build automatically if the image doesn't exist:
|
||||||
|
# build:
|
||||||
|
# context: .
|
||||||
|
# dockerfile: Dockerfile
|
||||||
|
container_name: unraid-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
# HostPort:ContainerPort (maps to UNRAID_MCP_PORT inside the container, default 6970)
|
||||||
|
# Change the host port (left side) if 6970 is already in use on your host
|
||||||
|
- "6970:6970"
|
||||||
|
env_file:
|
||||||
|
- .env.local # Loads environment variables from .env.local in the same directory as this docker-compose.yml
|
||||||
|
# Optional: If you want to mount a specific directory for logs (ensure UNRAID_MCP_LOG_FILE in .env.local points within this mount)
|
||||||
|
# volumes:
|
||||||
|
# - ./logs:/app/logs # Example: maps ./logs on host to /app/logs in container
|
||||||
5
requirements.txt
Normal file
5
requirements.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
python-dotenv>=1.0.0
|
||||||
|
fastmcp>=0.4.0
|
||||||
|
httpx>=0.25.0
|
||||||
|
fastapi>=0.100.0
|
||||||
|
uvicorn>=0.23.0
|
||||||
1193
unraid-mcp-server.py
Normal file
1193
unraid-mcp-server.py
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user