One endpoint for every MCP server

Stop Burning Context on MCP Tool Definitions.

onemcp unifies all your Model Context Protocol (MCP) servers behind one portal endpoint. Your AI client connects once — the portal handles routing, native OAuth, and Code Mode, so agents script against your tools instead of drowning in tool definitions.

~90%smaller system prompt
1endpoint, N servers
3meta-tools, not hundreds
~/.config/mcp.json
{
  "mcpServers": {
    "github": { "url": "github.mcp", "auth": "ghp_…" },
    "slack": { "url": "slack.mcp", "auth": "xoxb-…" },
    "postgres": { "url": "pg.internal", "auth": "pg_…" },
    // +17 more servers
  }
}

// 20 servers · 480+ tools per request

# the problem

Every tool is its own server, login, and wall of tool definitions.

Each MCP server floods the prompt with hundreds of tool definitions on every single request — burning context and money before the model has done any work.

Without onemcp~15,000 tokens

every tool definition, every request

With onemcp~500 tokens

search · describe · execute only

A ~97% smaller context footprint per request — the model spends its window on your problem, not on tool schemas.

prompt payload · tools[]
{ "name": "github.create_issue",
  "inputSchema": { "type": "object", "properties": { repo, title, body?, labels? } } },
{ "name": "github.search_issues",
  "inputSchema": { "type": "object", "properties": { query, state?, sort? } } },
{ "name": "github.create_pull_request",
  "inputSchema": { "type": "object", "properties": { repo, head, base, title } } },
{ "name": "slack.post_message",
  "inputSchema": { "type": "object", "properties": { channel, text, thread_ts? } } },
{ "name": "slack.list_channels",
  "inputSchema": { "type": "object", "properties": { types?, limit? } } },
{ "name": "postgres.query",
  "inputSchema": { "type": "object", "properties": { sql, params? } } },
{ "name": "postgres.list_tables",
  "inputSchema": { "type": "object", "properties": { schema? } } },
{ "name": "linear.create_issue",
  "inputSchema": { "type": "object", "properties": { team, title, priority? } } },
{ "name": "notion.create_page",
  "inputSchema": { "type": "object", "properties": { parent, properties, children? } } },
{ "name": "jira.create_ticket",
  "inputSchema": { "type": "object", "properties": { project, summary, type } } },
{ "name": "stripe.create_refund",
  "inputSchema": { "type": "object", "properties": { charge, amount? } } },
{ "name": "sentry.list_issues",
  "inputSchema": { "type": "object", "properties": { project, query? } } }
// …468 more definitions, re-sent on every turn

# the solution

One portal, three tools, and the agent writes the rest.

onemcp puts all your servers behind a single portal endpoint. Instead of exposing every tool, a portal exposes just three and lets the model script against them — Cloudflare's MCP Code Mode. Click through a real round-trip:

portal › search
request
portal.search({ query: "open a GitHub issue" })
response
[
  { tool: "github.create_issue", score: 0.98 },
  { tool: "github.search_issues", score: 0.71 }
]

How the proxy layer fits together

Your client only ever talks to the portal. It discovers what it needs, then writes one script that does the whole job in a single call — instead of a dozen round-trips with the entire toolset stuffed into every prompt.

AI Client
Claude · Cursor · agents
❯_onemcp Gateway
searchdescribeexecute
routing · OAuth · per-portal auth
MCP Servers
GitHubSlackPostgres+17

# what you get

Built for how agents actually work.

Unified endpoint

Connect every MCP client to a single portal URL. Add or swap upstream servers without ever touching client config again.

Native upstream OAuth

Portals authenticate to upstream servers with a full OAuth flow — credentials stay host-side, never scattered across clients.

Code Mode efficiency

Three meta-tools replace hundreds of definitions. The model scripts against your tools instead of drowning in their schemas.

Per-portal auth scoping

The same server can carry different credentials in different portals — auth is scoped to the membership, not the account.

Import & export portals

Move a portal between environments or share a setup as a single portable config file.

Request logs

See every client request flowing through a portal, so you can debug what your agents are actually calling.

# proof

LLMs are better at writing code to call MCP, than at calling MCP directly.
CloudflareCode Mode: the better way to use MCP
~90%
smaller system prompt
Zero
tool-definition bloat
20+
servers, one endpoint
3
meta-tools, not hundreds

Stop wiring up servers. Start shipping agents.

Spin up a portal in minutes, point your client at one endpoint, and let your agents do the rest.