An MCP (Model Context Protocol) server for Jellyseerr that exposes Jellyseerr API functionality as MCP tools usable by LLM clients. It includes colorful, emoji-forward logging and clear console output.
- Exposes key Jellyseerr endpoints as MCP tools (search, request, get request status, etc.)
- Synchronous HTTP client with robust error handling and timeouts
- Colorful, structured logging via Rich with emoji indicators
- Configuration via environment variables (
.envsupported) - Non-blocking stdio server compatible with multi-mcp configurations
- Python 3.10+
- Packages in
requirements.txt
- Create and activate a virtualenv.
pip install -r requirements.txt- Copy
.env.exampleto.envand set your values.
JELLYSEERR_URL=https://your-jellyseerr.example.com
JELLYSEERR_API_KEY=your_api_key_here
JELLYSEERR_TIMEOUT=15
python -m jellyseerr_mcp
You should see colorful logs indicating the server is ready on stdio. The server communicates via stdin/stdout, making it compatible with Claude Desktop and other MCP clients.
You can run the server using Docker by either pulling the pre-built image from the GitHub Container Registry (GHCR) or building it yourself.
docker pull ghcr.io/aserper/jellyseerr-mcp:latestdocker build -t jellyseerr-mcp .# If you pulled from GHCR:
docker run --rm -it \
-e JELLYSEERR_URL="https://your-jellyseerr.com" \
-e JELLYSEERR_API_KEY="your_api_key" \
ghcr.io/aserper/jellyseerr-mcp:latest
# If you built locally:
docker run --rm -it \
-e JELLYSEERR_URL="https://your-jellyseerr.com" \
-e JELLYSEERR_API_KEY="your_api_key" \
jellyseerr-mcpThe server is designed to work seamlessly with multi-mcp configurations. Example mcp.json:
{
"mcpServers": {
"jellyseerr": {
"command": "/path/to/.venv/bin/python",
"args": ["-m", "jellyseerr_mcp"],
"env": {
"JELLYSEERR_URL": "https://your-jellyseerr.example.com",
"JELLYSEERR_API_KEY": "your_api_key_here"
}
}
}
}search_media(query: str)— Search Jellyseerr for media by query.request_media(media_id: int, media_type: str)— Create a media request.get_request(request_id: int)— Fetch a request’s details/status.ping()— Liveness check with server/transport info.
More tools can be added easily — see jellyseerr_mcp/server.py.
