Skip to main content
Glama
README.md
# SuperMCP

SuperMCP is an orchestration layer for Model Context Protocol (MCP) servers. It gives an AI assistant a single entry point to dynamically discover, inspect, and call tools across many MCP servers — without hard-coding anything.

## How It Works

```
SuperMCP starts
  └─ reads SUPERMCP_REGISTRY   (env var, or from .env file)
       └─ points to a registry file anywhere on disk
            └─ loads mcpServers from that file
                 └─ resolves relative paths from the registry's directory
```

Because the registry file can live **anywhere**, you can keep your servers and their configuration wherever makes sense — a project folder, a shared drive, a dotfiles repo — and just point SuperMCP at it.

## Quick Start

1. **Clone & install dependencies**

```bash
git clone https://github.com/YakupAtahanov/SuperMCP.git
cd SuperMCP
uv pip install "mcp[cli]"
```

2. **Configure the registry path**

```bash
cp .env.example .env
```

Edit `.env`:

```
SUPERMCP_REGISTRY=C:/Users/you/my-servers/mcp.json
```

The path can be absolute or relative (relative paths resolve from the SuperMCP directory).

Alternatively, pass it as an environment variable when launching:

```bash
SUPERMCP_REGISTRY=/path/to/mcp.json python SuperMCP.py
```

Or set it in your MCP host (e.g. Cursor):

```json
{
  "command": "python",
  "args": ["C:/path/to/SuperMCP.py"],
  "env": { "SUPERMCP_REGISTRY": "C:/Users/you/my-servers/mcp.json" }
}
```

3. **Create your registry file** at that location:

```json
{
  "mcpServers": {
    "ShellMCP": {
      "command": "python",
      "args": [".mcps/ShellMCP/server.py"],
      "type": "stdio",
      "description": "Shell command execution",
      "enabled": true
    }
  }
}
```

Relative paths inside the registry (like `.mcps/ShellMCP/server.py`) resolve from the registry file's directory.

4. **Run**

```bash
python SuperMCP.py
```

## Available Tools

| Tool | Description |
|------|-------------|
| `reload_servers` | Reload the registry and rebuild the in-memory server list |
| `list_servers` | List all registered MCP servers |
| `inspect_server` | Inspect a server's tools, prompts, and resources |
| `call_server_tool` | Call a tool on any registered server |
| `add_server` | Add a new server (SSE or stdio) to the registry |
| `remove_server` | Remove a server from the registry |
| `update_server` | Update a server's configuration |

## Server Types

### Stdio (local process)

```json
{
  "mcpServers": {
    "my-server": {
      "command": "python",
      "args": ["path/to/server.py"],
      "type": "stdio",
      "description": "A local MCP server",
      "enabled": true
    }
  }
}
```

### SSE (remote endpoint)

```json
{
  "mcpServers": {
    "remote-server": {
      "url": "https://example.com/mcp/sse",
      "type": "sse",
      "description": "A remote SSE server",
      "enabled": true,
      "env": {
        "API_KEY": "your-key"
      }
    }
  }
}
```

Environment variables in the `env` field are sent as HTTP headers in the format `X-MCP-{VAR_NAME}`.

### Git-based Stdio

```json
{
  "mcpServers": {
    "weather-mcp": {
      "command": "python",
      "args": [".mcps/remote/weather-mcp/server.py"],
      "type": "stdio",
      "url": "https://github.com/user/weather-mcp.git",
      "description": "Cloned from Git, runs locally",
      "enabled": true
    }
  }
}
```

When a stdio server has a `url` field, SuperMCP clones the repository into `.mcps/remote/<name>/` (relative to the registry) and installs its dependencies.

## Project Structure

```
SuperMCP/
├── SuperMCP.py          # Main orchestration server
├── server_manager.py    # Git cloning, SSE testing, dependency install
├── .env.example         # Template — copy to .env and set SUPERMCP_REGISTRY
├── pyproject.toml       # Python dependencies
├── ARCHITECTURE.md      # Architecture overview
└── README.md
```

## Contributing

Contributions welcome. Whether you're building new MCP servers, improving the orchestration layer, or enhancing documentation — all help is appreciated.

## License

See [LICENSE](LICENSE).