A central gateway and management platform for MCP (Model Context Protocol) servers. Argus MCP connects to multiple backend MCP servers (stdio, SSE, or streamable-HTTP) and exposes their aggregated capabilities to upstream MCP clients through a single endpoint.
/sse) and Streamable HTTP (/mcp) endpoints for client connections./manage/v1/ for runtime inspection, hot-reload, and control.docker run -d \
--name argus \
-p 9000:9000 \
-v ./config.yaml:/app/config.yaml \
diaz3618/argus-mcp:latest
The server listens on 0.0.0.0:9000 and exposes:
| Endpoint | URL |
|---|---|
| SSE | http://localhost:9000/sse |
| Streamable HTTP | http://localhost:9000/mcp |
| Management API | http://localhost:9000/manage/v1/ |
docker run -d \
--name argus \
-p 8080:8080 \
-v ./config.yaml:/app/config.yaml \
diaz3618/argus-mcp:latest \
server --host 0.0.0.0 --port 8080
Pass environment variables referenced in your config with -e:
docker run -d \
--name argus \
-p 9000:9000 \
-v ./config.yaml:/app/config.yaml \
-e ARGUS_MGMT_TOKEN=my-secret-token \
-e MY_API_KEY=sk-xxx \
diaz3618/argus-mcp:latest
Or use an env file:
docker run -d \
--name argus \
-p 9000:9000 \
-v ./config.yaml:/app/config.yaml \
--env-file .env \
diaz3618/argus-mcp:latest
docker run -d \
--name argus \
-p 9000:9000 \
-v ./config.yaml:/app/config.yaml \
-v ./logs:/app/logs \
diaz3618/argus-mcp:latest
The image includes a built-in health check against /manage/v1/health:
docker inspect --format='{{.State.Health.Status}}' argus
The TUI connects to a running Argus server over HTTP. It requires a TTY:
docker run --rm -it \
diaz3618/argus-mcp:latest \
tui --server http://host.docker.internal:9000
On Linux without Docker Desktop, add
--add-host=host.docker.internal:host-gatewayor use the host's LAN IP.
docker run --rm -it \
diaz3618/argus-mcp:latest \
tui --server https://argus.example.com:9000 --token YOUR_TOKEN
services:
argus:
image: diaz3618/argus-mcp:latest
ports:
- "9000:9000"
volumes:
- ./config.yaml:/app/config.yaml
- ./logs:/app/logs
environment:
ARGUS_MGMT_TOKEN: "${ARGUS_MGMT_TOKEN}"
restart: unless-stopped
Create a config.yaml (mount it to /app/config.yaml):
version: "1"
server:
host: "0.0.0.0"
port: 9000
transport: sse
management:
enabled: true
token: "${ARGUS_MGMT_TOKEN}"
backends:
my_stdio_server:
type: stdio
command: python
args: ["path/to/server.py"]
env:
API_KEY: "${MY_API_KEY}"
remote_sse:
type: sse
url: "https://mcp.example.com/sse"
remote_streamable:
type: streamable-http
url: "https://mcp.example.com/mcp"
All string values support ${VAR_NAME} syntax for environment variable expansion.
See the full configuration docs for backend types, filters, timeouts, auth, and more.
| Property | Value |
|---|---|
| Base | python:3.13-slim |
| Node.js | LTS 22.x (for npx-based stdio backends) |
| User | Non-root argus |
| Entrypoint | argus-mcp |
| Default command | server --host 0.0.0.0 --port 9000 |
| Architectures | linux/amd64, linux/arm64 |
docker pull diaz3618/argus-mcp:0.5.0
Tags follow the project version and are published on each release.
ghcr.io/diaz3618/argus-mcpContent type
Image
Digest
sha256:514e190ff…
Size
137.9 MB
Last updated
5 months ago
docker pull diaz3618/argus-mcp