Magg: A meta-MCP server that acts as a universal hub, allowing LLMs to autonomously discover, install, and orchestrate multiple MCP servers - essentially giving AI assistants the power to extend their own capabilities on-demand.
Claude Desktop config.json'a ekle
{
"mcpServers": {
"sitbon-magg": {
"command": "python",
"args": [
"-m",
"magg"
]
}
}
} Kaynak kodu al ve yerel olarak çalıştır
git clone https://github.com/sitbon/magg.git ~/.mcp/magg
cd ~/.mcp/magg A Model Context Protocol server that manages, aggregates, and proxies other MCP servers, enabling LLMs to dynamically extend their own capabilities.
Magg is a meta-MCP server that acts as a central hub for managing multiple MCP servers. It provides tools that allow LLMs to:
Think of Magg as a “package manager for LLM tools” - it lets AI assistants install and manage their own capabilities at runtime.
.magg/config.json.magg_status and magg_check tools for server health checks.uv (recommended) - Install from astral.sh/uvThe easiest way to install Magg is as a tool using uv:
# Install Magg as a tool
uv tool install magg
# Run with stdio transport (for Claude Desktop, Cline, etc.)
magg serve
# Run with HTTP transport (for system-wide access)
magg serve --http
You can also run Magg directly from GitHub without installing:
# Run with stdio transport
uvx --from git+https://github.com/sitbon/magg.git magg
# Run with HTTP transport
uvx --from git+https://github.com/sitbon/magg.git magg serve --http
For development, clone the repository and install in editable mode:
# Clone the repository
git clone https://github.com/sitbon/magg.git
cd magg
# Install in development mode with dev dependencies
uv sync --dev
# Or with poetry
poetry install --with dev
# Run the CLI
magg --help
Magg is available as pre-built Docker images from GitHub Container Registry:
# Run production image (WARNING log level)
docker run -p 8000:8000 ghcr.io/sitbon/magg:latest
# Run with authentication (mount or set private key)
docker run -p 8000:8000 \
-v ~/.ssh/magg:/home/magg/.ssh/magg:ro \
ghcr.io/sitbon/magg:latest
# Or with environment variable
docker run -p 8000:8000 \
-e MAGG_PRIVATE_KEY="$(cat ~/.ssh/magg/magg.key)" \
ghcr.io/sitbon/magg:latest
# Run beta image (INFO log level)
docker run -p 8000:8000 ghcr.io/sitbon/magg:beta
# Run with custom config directory
docker run -p 8000:8000 \
-v /path/to/config:/home/magg/.magg \
ghcr.io/sitbon/magg:latest
Magg uses a multi-stage Docker build with three target stages:
pro (Production): Minimal image with WARNING log level, suitable for production deploymentspre (Pre-production): Same as production but with INFO log level for staging/testing (available but not published)dev (Development): Includes development dependencies and DEBUG logging for troubleshootingImages are automatically published to GitHub Container Registry with the following tags:
1.2.3, 1.2, dev, 1.2-dev, 1.2-dev-py3.12, etc.beta, beta-devbeta-dev-py3.12, beta-dev-py3.13, etc.For easier management, use Docker Compose:
# Clone the repository
git clone https://github.com/sitbon/magg.git
cd magg
# Run production version
docker compose up magg
# Run staging version (on port 8001)
docker compose up magg-beta
# Run development version (on port 8008)
# This uses ./.magg/config.json for configuration
docker compose up magg-dev
# Build and run with custom registry
REGISTRY=my.registry.com docker compose build
REGISTRY=my.registry.com docker compose push
See compose.yaml and .env.example for configuration options.
Magg can run in three modes:
Stdio Mode (default) - For integration with Claude Desktop, Cline, Cursor, etc.:
magg serve
HTTP Mode - For system-wide access or web integrations:
magg serve --http --port 8000
Hybrid Mode - Both stdio and HTTP simultaneously:
magg serve --hybrid
magg serve --hybrid --port 8080 # Custom port
This is particularly useful when you want to use Magg through an MCP client while also allowing HTTP access. For example:
With Claude Code:
# Configure Claude Code to use Magg in hybrid mode
claude mcp add magg -- magg serve --hybrid --port 42000
With mbro:
# mbro hosts Magg and connects via stdio
mbro connect magg "magg serve --hybrid --port 8080"
# Other mbro instances can connect via HTTP
mbro connect magg http://localhost:8080
Once Magg is running, it exposes the following tools to LLMs:
magg_list_servers - List all configured MCP serversmagg_add_server - Add a new MCP servermagg_remove_server - Remove a servermagg_enable_server / magg_disable_server - Toggle server availabilitymagg_search_servers - Search for MCP servers onlinemagg_list_tools - List all available tools from all serversmagg_smart_configure - Intelligently configure a server from a URLmagg_analyze_servers - Analyze configured servers and suggest improvementsmagg_status - Get server and tool statisticsmagg_check - Health check servers with repair actions (report/remount/unmount/disable)magg_reload_config - Reload configuration from disk and apply changesmagg_load_kit - Load a kit and its servers into the configurationmagg_unload_kit - Unload a kit and optionally its servers from the configurationmagg_list_kits - List all available kits with their statusmagg_kit_info - Get detailed information about a specific kitMagg includes the mbro (MCP Browser) CLI tool for interactive exploration. A unique feature is the ability to connect to Magg in stdio mode for quick inspection:
# Connect mbro to a Magg instance via stdio (no HTTP server needed)
mbro connect local-magg magg serve
# Now inspect your Magg setup from the MCP client perspective
mbro:local-magg> call magg_status
mbro:local-magg> call magg_list_servers
MBro also supports:
.mbro files with commands for automationkey=value syntax instead of JSONSee the MBro Documentation for details.
Magg supports optional bearer token authentication to secure access:
Initialize authentication (creates RSA keypair):
magg auth init
Generate a JWT token for clients:
# Generate token (displays on screen)
magg auth token
# Export as environment variable
export MAGG_JWT=$(magg auth token -q)
Connect with authentication:
MaggClient (auto-loads from MAGG_JWT):
from magg.client import MaggClient
async def main():
async with MaggClient("http://localhost:8000/mcp") as client:
tools = await client.list_tools()
from fastmcp import Client
from fastmcp.client import BearerAuth
jwt_token = "your-jwt-token-here"
async with Client("http://localhost:8000/mcp", auth=BearerAuth(jwt_token)) as client:
tools = await client.list_tools()
~/.ssh/magg/ by defaultMAGG_PRIVATE_KEY environment variablekey_path in .magg/auth.jsonmagg auth init - Initialize authentication (generates RSA keypair)magg auth status - Check authentication configurationmagg auth token - Generate JWT tokenmagg auth public-key - Display public key (for verification)magg auth private-key - Display private key (for backup)See examples/authentication.py for more usage patterns.
Magg stores its configuration in .magg/config.json in your current working directory. This allows for project-specific tool configurations.
Magg supports automatic configuration reloading without requiring a restart:
config.json and reloads automatically (uses watchdog when available)kill -HUP <pid> to trigger immediate reload (Unix-like systems)magg_reload_config tool from any MCP clientConfiguration reload is enabled by default. You can control it with:
MAGG_AUTO_RELOAD=false - Disable automatic reloadingMAGG_RELOAD_POLL_INTERVAL=5.0 - Set polling interval in seconds (when watchdog unavailable)See Configuration Reload Documentation for detailed information.
Magg supports several environment variables for configuration:
MAGG_CONFIG_PATH - Path to config file (default: .magg/config.json)MAGG_LOG_LEVEL - Logging level: DEBUG, INFO, WARNING, ERROR, CRITICAL (default: INFO)MAGG_STDERR_SHOW=1 - Show stderr output from subprocess MCP servers (default: suppressed)MAGG_AUTO_RELOAD - Enable/disable config auto-reload (default: true)MAGG_RELOAD_POLL_INTERVAL - Config polling interval in seconds (default: 1.0)MAGG_READ_ONLY=true - Run in read-only modeMAGG_SELF_PREFIX - Prefix for Magg tools (default: “magg”). Tools will be named as {prefix}{sep}{tool} (e.g., magg_list_servers)MAGG_PREFIX_SEP - Separator between prefix and tool name (default: ”_”)Example configuration:
{
"servers": {
"calculator": {
"name": "calculator",
"source": "https://github.com/executeautomation/calculator-mcp",
"command": "npx @executeautomation/calculator-mcp",
"prefix": "calc",
"enabled": true
}
}
}
Servers can be added in several ways:
Using the LLM (recommended):
"Add the Playwright MCP server"
"Search for and add a calculator tool"
Manual configuration via magg_add_server:
name: playwright
url: https://github.com/microsoft/playwright-mcp
command: npx @playwright/mcp@latest
prefix: pw
Direct config editing: Edit .magg/config.json directly
The MaggClient now supports real-time notifications from backend MCP servers:
from magg import MaggClient, MaggMessageHandler
# Using callbacks
handler = MaggMessageHandler(
on_tool_list_changed=lambda n: print("Tools changed!"),
on_progress=lambda n: print(f"Progress: {n.params.progress}")
)
async with MaggClient("http://localhost:8000/mcp", message_handler=handler) as client:
# Client will receive notifications while connected
tools = await client.list_tools()
See Messaging Documentation for advanced usage including custom message handlers.
Magg supports organizing related MCP servers into “kits” - bundles that can be loaded and unloaded as a group:
# List available kits
magg kit list
# Load a kit (adds all its servers)
magg kit load web-tools
# Unload a kit (removes servers only in that kit)
magg kit unload web-tools
# Get information about a kit
magg kit info web-tools
You can also manage kits programmatically through Magg’s tools when connected via an MCP client:
magg_list_kits - List all available kitsmagg_load_kit - Load a kit and its serversmagg_unload_kit - Unload a kitmagg_kit_info - Get detailed kit informationKits are JSON files stored in ~/.magg/kit.d/ or .magg/kit.d/ that define a collection of related servers. See Kit Documentation for details on creating and managing kits.
Automate common workflows with MBro scripts:
# Create a setup script
cat > setup.mbro <<EOF
# Connect to Magg and check status
connect magg magg serve
call magg_status
call magg_list_servers
# Add a new server if needed
call magg_add_server name=calculator source="npx -y @modelcontextprotocol/server-calculator"
EOF
# Run the script
mbro -x setup.mbro
For more documentation, see docs/.
Magg appears in multiple locations. Please feel free to submit a PR to add more appearances below in alphabetical order.
Connect and unify data across various platforms and databases with MindsDB as a single MCP server.
Connect with 2,500 APIs with 8,000+ prebuilt tools, and manage servers for your users, in your own app.
MetaMCP is the one unified middleware MCP server that manages your MCP connections with GUI.
Query more than 40 apps with one binary using SQL. It can also connect to your PostgreSQL, MySQL, or SQLite compatible database. Local-first and private by design.
Self-hosted MCP Server registry for enterprise AI Agents
A reverse proxy and management layer for MCP servers, enabling scalable, session-aware routing and lifecycle management in Kubernetes environments.