Skip to main content
Glama

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.

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ahostbr/mcp-0ne'

If you have feedback or need assistance with the MCP directory API, please join our Discord server