# Show HN: One portal for all your MCP servers

> Source: <https://onemcp.dev/>
> Published: 2026-08-23 04:11:23+00:00

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.
