A central server for MCP servers
Project description
Argus MCP
License
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for more details.
Project Overview
Argus MCP is a central gateway and management platform for MCP (Model Context Protocol) servers. It connects to and aggregates capabilities from multiple backend MCP servers (stdio, SSE, or streamable-HTTP) and exposes them to upstream MCP clients through SSE (/sse) and Streamable HTTP (/mcp) transports.
The project has a server/client architecture:
argus-mcp server— Headless server that runs the MCP bridge, management API, and transports.argus-mcp build— Pre-build container images for stdio backends.argus-mcp tui— Textual-based terminal UI that connects to a running server over HTTP.argus-mcp secret— Manage encrypted secrets (set, get, list, delete).argus-mcp clean— Remove containers and images created by Argus MCP.
Companion Packages
| Package | Entry Point | Description |
|---|---|---|
argus-cli |
argus |
Client CLI with 20 command groups and an interactive REPL for managing a running server |
argus-cli |
argus-tui |
Alternative TUI launcher from the client package |
argusd |
argusd |
Go sidecar daemon for Docker container and Kubernetes pod management (Unix Domain Socket API) |
See the CLI Reference and REPL Guide for details.
Core Advantages:
- Simplified Client Configuration: MCP clients connect to one Argus MCP address to access all backend services.
- Capability Aggregation: Aggregates MCP tools, resources, and prompts from multiple sources into a single endpoint.
- Management API: RESTful API at
/manage/v1/for runtime inspection and control of backend services. - Multi-Server TUI: Connect the TUI to multiple Argus MCP servers simultaneously and switch between them.
- Security: JWT/OIDC authentication, RBAC authorization, encrypted secret storage, and log redaction.
Installation and Setup
Requires Python 3.10+.
From PyPI
uv tool install — fastest, isolated environment, auto-managed (recommended):
uv tool install argus-mcp
pipx — same isolation concept, more established:
pipx install argus-mcp
pip — installs into the current environment:
pip install argus-mcp
Quick try: Run without installing using
uv run argus-mcp --help
After installing, verify with:
argus-mcp --help
From Docker
See the Docker usage guide.
docker run --rm diaz3618/argus-mcp:latest --help
From Source
-
Clone Repository
git clone https://github.com/diaz3618/argus-mcp.git cd argus-mcp
-
Create and Activate Virtual Environment
uv venv source .venv/bin/activate # Linux/macOS # .venv\Scripts\activate # Windows
-
Install Dependencies
uv sync # runtime only uv sync --group dev --group test # runtime + dev + test tools
-
Makefile Shortcuts
make help # Show available targets make test # Run pytest suite make lint # Run ruff linter make typecheck # Run mypy make quality # Full gate: lint + types + tests + security make docker-build # Build Docker image (local arch) make clean # Remove build artifacts and caches
Quick Start
View Help
argus-mcp --help
usage: argus-mcp [-h] {server,build,stop,status,tui,secret,clean} ...
Argus MCP v0.8.2
positional arguments:
{server,build,stop,status,tui,secret,clean}
server Run the headless Argus server (Uvicorn + MCP bridge,
with container isolation)
build Pre-build container images for all stdio backends
stop Stop a detached Argus server
status List all running Argus server sessions
tui Launch the Textual TUI connected to a running Argus server
secret Manage encrypted secrets (set, get, list, delete)
clean Remove containers and images created by argus-mcp
options:
-h, --help show this help message and exit
Start the Server
# Default: listen on 127.0.0.1:9000, auto-detect config file
argus-mcp server
# Custom host, port, and log level
argus-mcp server --host 0.0.0.0 --port 8080 --log-level debug
# Explicit config file
argus-mcp server --config /path/to/config.yaml
Config file resolution order: --config flag → ARGUS_CONFIG env var → auto-detect (config.yaml → config.yml).
The server exposes:
- SSE endpoint at
http://<host>:<port>/sse— for MCP clients using the SSE transport. - Streamable HTTP endpoint at
http://<host>:<port>/mcp— for MCP clients using the newer Streamable HTTP transport. - Management API at
http://<host>:<port>/manage/v1/— for the TUI and automation.
Set the ARGUS_MGMT_TOKEN environment variable to enable bearer token authentication on the management API.
Launch the TUI
# Connect to a local server
argus-mcp tui --server http://127.0.0.1:9000
# With authentication
argus-mcp tui --server http://127.0.0.1:9000 --token YOUR_TOKEN
# Multi-server mode (uses ~/.config/argus-mcp/servers.json)
argus-mcp tui --servers-config /path/to/servers.json
Multi-Server Configuration
Create a servers.json file to manage multiple Argus MCP servers:
{
"servers": [
{
"name": "local",
"url": "http://127.0.0.1:9000"
},
{
"name": "production",
"url": "https://argus.example.com:9000",
"token": "your-production-token"
}
],
"active": "local"
}
Default location: ~/.config/argus-mcp/servers.json
MCP Client Connection
After starting the server, connect any MCP-compatible client to one of the transport endpoints:
| Transport | URL |
|---|---|
| SSE | http://<host>:<port>/sse |
| Streamable HTTP | http://<host>:<port>/mcp |
Supported clients include Claude Desktop, Cursor, Cline, and any other MCP-compatible application.
Logs
Runtime logs are saved in the logs/ directory with timestamped filenames.
Configuration
The configuration file defines both server settings and backend MCP server connections.
Config Format (YAML)
The config uses a versioned YAML format with server settings and backend definitions:
version: "1"
server:
host: "0.0.0.0"
port: 9000
transport: sse # "sse" or "streamable-http"
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"
Backend Types
stdio — Local MCP server processes managed by Argus MCP.
| Field | Required | Description |
|---|---|---|
type |
Yes | "stdio" |
command |
Yes | Executable to run |
args |
No | Command arguments (default: []) |
env |
No | Environment variables |
container |
No | Container isolation config (enabled by default for stdio) |
sse — Connect to MCP servers over SSE; optionally start a local process.
| Field | Required | Description |
|---|---|---|
type |
Yes | "sse" |
url |
Yes | SSE endpoint URL |
command |
No | Optional local process to start |
args |
No | Command arguments |
headers |
No | Extra HTTP headers |
auth |
No | Outgoing auth config (static, oauth2, or pkce) |
streamable-http — Connect to MCP servers using Streamable HTTP transport.
| Field | Required | Description |
|---|---|---|
type |
Yes | "streamable-http" |
url |
Yes | Streamable HTTP endpoint URL |
headers |
No | Extra HTTP headers |
auth |
No | Outgoing auth config (static, oauth2, or pkce) |
Streamable HTTP backends must always set
type: streamable-httpexplicitly.
Common Backend Options
All backend types also support:
| Field | Default | Description |
|---|---|---|
group |
"default" |
Logical server group name |
filters |
— | Per-capability allow/deny lists (tools, resources, prompts) |
tool_overrides |
— | Rename or override descriptions for individual tools |
timeouts |
— | Per-backend timeout overrides (init, cap_fetch, sse_startup) |
Environment Variable Expansion
All string values support ${VAR_NAME} syntax for environment variable expansion.
Secret References
String values can use secret:name syntax to resolve values from encrypted storage (see argus-mcp secret).
Management API
The management API is mounted at /manage/v1/ and provides:
| Endpoint | Method | Description |
|---|---|---|
/manage/v1/health |
GET | Health check (uptime, backend health summary) |
/manage/v1/ready |
GET | Readiness probe (returns 503 until backends connect) |
/manage/v1/status |
GET | Server status (version, config, endpoints, feature flags) |
/manage/v1/backends |
GET | List all backends with connection state and capabilities |
/manage/v1/groups |
GET | List logical server groups |
/manage/v1/capabilities |
GET | Aggregated tools, resources, prompts |
/manage/v1/sessions |
GET | Active MCP client sessions |
/manage/v1/events |
GET | Recent event log entries |
/manage/v1/events/stream |
GET | Live SSE event stream |
/manage/v1/batch |
GET | Combined status, backends, capabilities, and events in one response |
/manage/v1/reload |
POST | Hot-reload configuration |
/manage/v1/reconnect/{name} |
POST | Reconnect a specific backend |
/manage/v1/reauth/{name} |
POST | Trigger interactive re-authentication for a backend |
/manage/v1/shutdown |
POST | Graceful server shutdown |
/manage/v1/registry/search |
GET | Search external MCP server registries |
/manage/v1/skills |
GET | List all discovered skills with status |
/manage/v1/skills/{name}/enable |
POST | Enable a skill by name |
/manage/v1/skills/{name}/disable |
POST | Disable a skill by name |
/manage/v1/tools/call |
POST | Proxy an MCP tools/call to the correct backend |
/manage/v1/resources/read |
POST | Proxy an MCP resources/read to the correct backend |
When ARGUS_MGMT_TOKEN is set, include Authorization: Bearer <token> in requests.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file argus_mcp-0.8.3.tar.gz.
File metadata
- Download URL: argus_mcp-0.8.3.tar.gz
- Upload date:
- Size: 610.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a2a537f5c53348a0a57e4ae00e29389a7f518ff80adc43a0cf4d6fb58cf3fb21
|
|
| MD5 |
a4038bc21e3f980935c153744d1465e7
|
|
| BLAKE2b-256 |
cc55e995d9023aae58d0368b959f639f72cdaf6ccb49120f5fb5d57ab218f15b
|
Provenance
The following attestation bundles were made for argus_mcp-0.8.3.tar.gz:
Publisher:
build-wheels.yml on diaz3618/argus-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
argus_mcp-0.8.3.tar.gz -
Subject digest:
a2a537f5c53348a0a57e4ae00e29389a7f518ff80adc43a0cf4d6fb58cf3fb21 - Sigstore transparency entry: 1244431669
- Sigstore integration time:
-
Permalink:
diaz3618/argus-mcp@4411902e7a34ab0b40ef5cddc482a9a930983244 -
Branch / Tag:
refs/tags/v0.8.3 - Owner: https://github.com/diaz3618
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@4411902e7a34ab0b40ef5cddc482a9a930983244 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file argus_mcp-0.8.3-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: argus_mcp-0.8.3-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 6.6 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40ad21bae79073a0e828389795e4f286dc38ea21bafab8280a4f3017a3486642
|
|
| MD5 |
b94b80bafcbe3476661fb6678f041cd9
|
|
| BLAKE2b-256 |
d240826ae57017c9bcd72f19d56608154eca3814ffe9946fbd334e28c6012482
|
Provenance
The following attestation bundles were made for argus_mcp-0.8.3-cp310-cp310-win_amd64.whl:
Publisher:
build-wheels.yml on diaz3618/argus-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
argus_mcp-0.8.3-cp310-cp310-win_amd64.whl -
Subject digest:
40ad21bae79073a0e828389795e4f286dc38ea21bafab8280a4f3017a3486642 - Sigstore transparency entry: 1244431910
- Sigstore integration time:
-
Permalink:
diaz3618/argus-mcp@4411902e7a34ab0b40ef5cddc482a9a930983244 -
Branch / Tag:
refs/tags/v0.8.3 - Owner: https://github.com/diaz3618
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@4411902e7a34ab0b40ef5cddc482a9a930983244 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file argus_mcp-0.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: argus_mcp-0.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 7.3 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f705dca7049e4c404c565e382430096a39b775fc438a1bc16fcb4d3e6956c275
|
|
| MD5 |
72c50764e8d6da9669775efbd4bb0f37
|
|
| BLAKE2b-256 |
75da56e892f98f3120129739b92d69aaf35ff1e3ebe6551dce2dbf7f7a654037
|
Provenance
The following attestation bundles were made for argus_mcp-0.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
build-wheels.yml on diaz3618/argus-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
argus_mcp-0.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
f705dca7049e4c404c565e382430096a39b775fc438a1bc16fcb4d3e6956c275 - Sigstore transparency entry: 1244431741
- Sigstore integration time:
-
Permalink:
diaz3618/argus-mcp@4411902e7a34ab0b40ef5cddc482a9a930983244 -
Branch / Tag:
refs/tags/v0.8.3 - Owner: https://github.com/diaz3618
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@4411902e7a34ab0b40ef5cddc482a9a930983244 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file argus_mcp-0.8.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: argus_mcp-0.8.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 6.8 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5fa919e700251463f1096932281c7eea26e48e5974ebfdca27ce9fa057e63bd
|
|
| MD5 |
802fa0f6c205463120604e9d78496fea
|
|
| BLAKE2b-256 |
b9edb5cb6f363005933b7f0e2d3fbb5c1f31422e318b80e6f299833650afd404
|
Provenance
The following attestation bundles were made for argus_mcp-0.8.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
build-wheels.yml on diaz3618/argus-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
argus_mcp-0.8.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
f5fa919e700251463f1096932281c7eea26e48e5974ebfdca27ce9fa057e63bd - Sigstore transparency entry: 1244431875
- Sigstore integration time:
-
Permalink:
diaz3618/argus-mcp@4411902e7a34ab0b40ef5cddc482a9a930983244 -
Branch / Tag:
refs/tags/v0.8.3 - Owner: https://github.com/diaz3618
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@4411902e7a34ab0b40ef5cddc482a9a930983244 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file argus_mcp-0.8.3-cp310-cp310-macosx_12_0_arm64.whl.
File metadata
- Download URL: argus_mcp-0.8.3-cp310-cp310-macosx_12_0_arm64.whl
- Upload date:
- Size: 6.7 MB
- Tags: CPython 3.10, macOS 12.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff2c62c156895f437d68455a2fe2c6652bb35535c3aec6a4e072a386596dfbbc
|
|
| MD5 |
7dafabe57ffc985fddc0d946d03d3343
|
|
| BLAKE2b-256 |
774128c330ad19c0a5940f013d3caac5701ecae7c35309c654526b3262cd2c62
|
Provenance
The following attestation bundles were made for argus_mcp-0.8.3-cp310-cp310-macosx_12_0_arm64.whl:
Publisher:
build-wheels.yml on diaz3618/argus-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
argus_mcp-0.8.3-cp310-cp310-macosx_12_0_arm64.whl -
Subject digest:
ff2c62c156895f437d68455a2fe2c6652bb35535c3aec6a4e072a386596dfbbc - Sigstore transparency entry: 1244431819
- Sigstore integration time:
-
Permalink:
diaz3618/argus-mcp@4411902e7a34ab0b40ef5cddc482a9a930983244 -
Branch / Tag:
refs/tags/v0.8.3 - Owner: https://github.com/diaz3618
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@4411902e7a34ab0b40ef5cddc482a9a930983244 -
Trigger Event:
workflow_dispatch
-
Statement type: