Add it to Claude Code
claude mcp add --transport http mcp-0ne http://127.0.0.1:8150/mcpMake your agent remember this setup
mcp-0ne's config, env vars, and the gotchas you hit — recalled in every future Claude Code, Cursor, and Codex session.
npx conare@latestFree · one command · indexes the sessions already on disk. Set up in the browser instead →
What it does
- Multiplexes multiple backend MCP servers behind a single endpoint
- Supports both HTTP and stdio transport protocols
- Allows dynamic management of backends at runtime
- Organizes tools using configurable namespace prefixes
- Provides a REST API for backend management
Tools 7
0ne__discoverList all backends with state and tool counts0ne__healthHealth check all backends with latency0ne__addRegister a new backend at runtime0ne__removeDisconnect and unregister a backend0ne__enableEnable a disabled backend0ne__disableDisable a backend without removing it0ne__refreshForce reconnect and re-enumerate toolsEnvironment Variables
MCP_0NE_HOSTServer bind addressMCP_0NE_PORTServer portMCP_0NE_CONFIGConfig file pathMCP_0NE_LOG_LEVELLog levelTry it
Original README from ahostbr/mcp-0ne
mcp-0ne
One MCP server to rule them all.
A standalone MCP Gateway that multiplexes N backend MCP servers behind a single endpoint. Connect your MCP client once, manage backends dynamically at runtime.
MCP Client ──(HTTP)──> mcp-0ne (:8150)
│
┌───────────────┼───────────────┐
│ │ │
(HTTP client) (stdio spawn) (stdio spawn)
│ │ │
HTTP MCP stdio MCP stdio MCP
server server server
Quickstart
# Install
pip install -e .
# Start with empty backends
python -m mcp_0ne.server
# Verify
curl http://127.0.0.1:8150/health
Connect Claude Code
Add to your .mcp.json:
{
"mcpServers": {
"0ne": {
"type": "http",
"url": "http://127.0.0.1:8150/mcp"
}
}
}
Add Backends
Via MCP tool (from Claude Code)
Call 0ne__add:
{
"id": "myapp",
"type": "http",
"prefix": "myapp",
"url": "http://127.0.0.1:8100/mcp",
"description": "My App MCP Server"
}
Via REST API
curl -X POST http://127.0.0.1:8150/api/backends/myapp \
-H "Content-Type: application/json" \
-d '{"type":"http","prefix":"myapp","url":"http://127.0.0.1:8100/mcp"}'
Via config file
Edit backends.json:
{
"backends": {
"myapp": {
"type": "http",
"url": "http://127.0.0.1:8100/mcp",
"prefix": "myapp",
"enabled": true,
"description": "My App MCP Server"
}
},
"settings": {
"separator": "__",
"lazy_connect": true,
"tool_cache_ttl": 60,
"log_level": "info"
}
}
Backend Types
HTTP
Connects to an existing MCP server over HTTP JSON-RPC 2.0.
| Field | Required | Description |
|---|---|---|
type |
yes | "http" |
prefix |
yes | Tool namespace prefix |
url |
yes | MCP endpoint URL |
health_url |
no | Health check URL |
timeout |
no | Request timeout (default: 30s) |
description |
no | Human-readable description |
enabled |
no | Auto-connect (default: true) |
Stdio
Spawns a subprocess and communicates via MCP SDK stdio transport.
| Field | Required | Description |
|---|---|---|
type |
yes | "stdio" |
prefix |
yes | Tool namespace prefix |
command |
yes | Executable path |
args |
no | Command arguments |
env |
no | Environment variables |
timeout |
no | Operation timeout (default: 60s) |
description |
no | Human-readable description |
enabled |
no | Auto-connect (default: true) |
Admin Tools
Available as MCP tools (prefix 0ne__):
| Tool | Description |
|---|---|
0ne__discover |
List all backends with state and tool counts |
0ne__health |
Health check all backends with latency |
0ne__add |
Register a new backend at runtime |
0ne__remove |
Disconnect and unregister a backend |
0ne__enable |
Enable a disabled backend |
0ne__disable |
Disable a backend without removing it |
0ne__refresh |
Force reconnect and re-enumerate tools |
REST API
| Method | Path | Description |
|---|---|---|
GET |
/api/backends |
List all backends |
POST |
/api/backends/{id} |
Add a new backend |
DELETE |
/api/backends/{id} |
Remove a backend |
PATCH |
/api/backends/{id} |
Update backend config |
POST |
/api/backends/{id}/refresh |
Reconnect and refresh |
Environment Variables
| Variable | Default | Description |
|---|---|---|
MCP_0NE_HOST |
127.0.0.1 |
Server bind address |
MCP_0NE_PORT |
8150 |
Server port |
MCP_0NE_CONFIG |
./backends.json |
Config file path |
MCP_0NE_LOG_LEVEL |
info |
Log level |
Tool Namespacing
Tools from backends are exposed with a namespace prefix:
{prefix}__{original_tool_name}
For example, a backend with prefix myapp exposing a tool search becomes myapp__search. The separator __ is configurable in settings.