Sign inSign up

diaz3618/argus-mcp

By diaz3618

•Updated 5 months ago

Image
0

3.0K

diaz3618/argus-mcp repository overview

⁠Argus MCP

Docker Hub Pulls GitHub License: MIT

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.

⁠Features

  • Capability Aggregation — Tools, resources, and prompts from multiple backends exposed through one address.
  • Multiple Transports — SSE (/sse) and Streamable HTTP (/mcp) endpoints for client connections.
  • Management API — RESTful API at /manage/v1/ for runtime inspection, hot-reload, and control.
  • Terminal UI — Textual-based TUI for monitoring and managing connected backends.
  • Security — JWT/OIDC authentication, RBAC authorization, encrypted secret storage.

⁠Quick Start

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:

EndpointURL
SSEhttp://localhost:9000/sse
Streamable HTTPhttp://localhost:9000/mcp
Management APIhttp://localhost:9000/manage/v1/

⁠Custom Port

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

⁠Environment Variables

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

⁠Persistent Logs

docker run -d \
  --name argus \
  -p 9000:9000 \
  -v ./config.yaml:/app/config.yaml \
  -v ./logs:/app/logs \
  diaz3618/argus-mcp:latest

⁠Health Check

The image includes a built-in health check against /manage/v1/health:

docker inspect --format='{{.State.Health.Status}}' argus

⁠TUI (Terminal Client)

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-gateway or use the host's LAN IP.

⁠Remote Server
docker run --rm -it \
  diaz3618/argus-mcp:latest \
  tui --server https://argus.example.com:9000 --token YOUR_TOKEN

⁠Docker Compose

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

⁠Configuration

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.

⁠Image Details

PropertyValue
Basepython:3.13-slim
Node.jsLTS 22.x (for npx-based stdio backends)
UserNon-root argus
Entrypointargus-mcp
Default commandserver --host 0.0.0.0 --port 9000
Architectureslinux/amd64, linux/arm64

⁠Pinning a Version

docker pull diaz3618/argus-mcp:0.5.0

Tags follow the project version and are published on each release.

⁠Also Available On

  • GHCR: ghcr.io/diaz3618/argus-mcp

Tag summary

Content type

Image

Digest

sha256:514e190ff…

Size

137.9 MB

Last updated

5 months ago

docker pull diaz3618/argus-mcp