Show HN: One portal for all your MCP servers Onemcp, a new open-source tool, unifies all Model Context Protocol (MCP) servers behind a single portal endpoint, reducing context footprint by ~97% per request. The portal exposes only three meta-tools—search, describe, and execute—and supports native OAuth, per-portal auth scoping, and import/export, enabling agents to script against tools instead of drowning in tool definitions. It integrates with Cloudflare's MCP Code Mode and handles 20 servers with 480+ tools per request. 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. { "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. every tool definition, every request search · describe · execute only A ~97% smaller context footprint per request — the model spends its window on your problem, not on tool schemas. { "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 https://blog.cloudflare.com/code-mode/ . Click through a real round-trip: portal.search { query: "open a GitHub issue" } { 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. 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 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.