{"slug": "show-hn-one-portal-for-all-your-mcp-servers", "title": "Show HN: One portal for all your MCP servers", "summary": "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.", "body_md": "One endpoint for every MCP server\n\n# Stop Burning Context on MCP Tool Definitions.\n\nonemcp 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.\n\n```\n{\n  \"mcpServers\": {\n    \"github\": { \"url\": \"github.mcp\", \"auth\": \"ghp_…\" },\n    \"slack\": { \"url\": \"slack.mcp\", \"auth\": \"xoxb-…\" },\n    \"postgres\": { \"url\": \"pg.internal\", \"auth\": \"pg_…\" },\n    // +17 more servers\n  }\n}\n\n// 20 servers · 480+ tools per request\n```\n\n# the problem\n\n## Every tool is its own server, login, and wall of tool definitions.\n\nEach 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.\n\nevery tool definition, every request\n\nsearch · describe · execute only\n\nA ~97% smaller context footprint per request — the model spends its window on your problem, not on tool schemas.\n\n```\n{ \"name\": \"github.create_issue\",\n  \"inputSchema\": { \"type\": \"object\", \"properties\": { repo, title, body?, labels? } } },\n{ \"name\": \"github.search_issues\",\n  \"inputSchema\": { \"type\": \"object\", \"properties\": { query, state?, sort? } } },\n{ \"name\": \"github.create_pull_request\",\n  \"inputSchema\": { \"type\": \"object\", \"properties\": { repo, head, base, title } } },\n{ \"name\": \"slack.post_message\",\n  \"inputSchema\": { \"type\": \"object\", \"properties\": { channel, text, thread_ts? } } },\n{ \"name\": \"slack.list_channels\",\n  \"inputSchema\": { \"type\": \"object\", \"properties\": { types?, limit? } } },\n{ \"name\": \"postgres.query\",\n  \"inputSchema\": { \"type\": \"object\", \"properties\": { sql, params? } } },\n{ \"name\": \"postgres.list_tables\",\n  \"inputSchema\": { \"type\": \"object\", \"properties\": { schema? } } },\n{ \"name\": \"linear.create_issue\",\n  \"inputSchema\": { \"type\": \"object\", \"properties\": { team, title, priority? } } },\n{ \"name\": \"notion.create_page\",\n  \"inputSchema\": { \"type\": \"object\", \"properties\": { parent, properties, children? } } },\n{ \"name\": \"jira.create_ticket\",\n  \"inputSchema\": { \"type\": \"object\", \"properties\": { project, summary, type } } },\n{ \"name\": \"stripe.create_refund\",\n  \"inputSchema\": { \"type\": \"object\", \"properties\": { charge, amount? } } },\n{ \"name\": \"sentry.list_issues\",\n  \"inputSchema\": { \"type\": \"object\", \"properties\": { project, query? } } }\n// …468 more definitions, re-sent on every turn\n```\n\n# the solution\n\n## One portal, three tools, and the agent writes the rest.\n\nonemcp 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:\n\n```\nportal.search({ query: \"open a GitHub issue\" })\n[\n  { tool: \"github.create_issue\", score: 0.98 },\n  { tool: \"github.search_issues\", score: 0.71 }\n]\n```\n\n### How the proxy layer fits together\n\nYour 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.\n\n# what you get\n\n## Built for how agents actually work.\n\n### Unified endpoint\n\nConnect every MCP client to a single portal URL. Add or swap upstream servers without ever touching client config again.\n\n### Native upstream OAuth\n\nPortals authenticate to upstream servers with a full OAuth flow — credentials stay host-side, never scattered across clients.\n\n### Code Mode efficiency\n\nThree meta-tools replace hundreds of definitions. The model scripts against your tools instead of drowning in their schemas.\n\n### Per-portal auth scoping\n\nThe same server can carry different credentials in different portals — auth is scoped to the membership, not the account.\n\n### Import & export portals\n\nMove a portal between environments or share a setup as a single portable config file.\n\n### Request logs\n\nSee every client request flowing through a portal, so you can debug what your agents are actually calling.\n\n# proof\n\n## Stop wiring up servers. Start shipping agents.\n\nSpin up a portal in minutes, point your client at one endpoint, and let your agents do the rest.", "url": "https://wpnews.pro/news/show-hn-one-portal-for-all-your-mcp-servers", "canonical_source": "https://onemcp.dev/", "published_at": "2026-08-23 04:11:23+00:00", "updated_at": "2026-08-23 04:43:31.959737+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "ai-infrastructure", "ai-agents"], "entities": ["onemcp", "Cloudflare", "Model Context Protocol", "GitHub", "Slack", "Postgres", "Linear", "Notion"], "alternates": {"html": "https://wpnews.pro/news/show-hn-one-portal-for-all-your-mcp-servers", "markdown": "https://wpnews.pro/news/show-hn-one-portal-for-all-your-mcp-servers.md", "text": "https://wpnews.pro/news/show-hn-one-portal-for-all-your-mcp-servers.txt", "jsonld": "https://wpnews.pro/news/show-hn-one-portal-for-all-your-mcp-servers.jsonld"}}