LabscoMCP early access ↗
ptbsareMCP SERVER · OFFICIAL PROJECT

MCP Proxy Server with Web UI

Put every one of your MCP servers behind one endpoint, then use a web UI to turn individual tools off and rename the ones with unhelpful descriptions.

by ptbsare ↗MCP Plumbing: Proxies, Registries & Inspectors✓ Official

LABSCO SUMMARY

Aggregation plus an editing layer over other people's tools.

Most proxies stop at merging tool lists. This one lets you disable the tools you never want the model to see and rewrite names and descriptions that read badly, which is the practical fix when a backend ships a dozen tools and you want three. The retry layer is the other quiet win: an SSE backend that drops mid-call gets reconnected and the call replayed rather than surfacing as a failure.

What it is

An aggregating proxy: it connects to a list of backend MCP servers — stdio, SSE or Streamable HTTP — and re-exposes their combined tools and resources as a single server, itself reachable over stdio, SSE (/sse) or Streamable HTTP (/mcp). An optional browser admin UI manages the server list and the per-tool overrides.

What you get

  • One connection in your client that fans out to every backend, with requests routed to the right one and each backend's key joined to the original tool name by a separator that defaults to __
  • Per-tool control: hide a tool from clients entirely, or override its display name and description, written to config/tool_config.json and applied without restarting
  • Backend definitions that accept a command and args for stdio, or a URL plus apiKey / bearerToken for SSE and HTTP, with active set to false to park one without deleting it
  • A live config reload that picks up server and tool changes in place
  • Retries with exponential backoff and jitter on every transport — a dropped SSE connection is re-established before the call is retried, and a crashed stdio backend is restarted; each is tunable through RETRY_SSE_TOOL_CALL, SSE_TOOL_CALL_MAX_RETRIES and their HTTP and stdio counterparts
  • Backend errors returned to the client as standard JSON-RPC error responses rather than swallowed
  • Install commands you can define per stdio backend and trigger from the admin UI, with stdout and stderr streamed live into the browser

Requirements

Node, or the published container image ghcr.io/ptbsare/mcp-proxy-server/mcp-proxy-server. The package.json is marked private (version 0.4.1), so this is a clone-and-build or Docker install rather than an npm one. HTTP mode listens on PORT, default 3663. Authentication on /sse and /mcp is off unless you set ALLOWED_KEYS or ALLOWED_TOKENS. The admin UI is off unless ENABLE_ADMIN_UI=true, and it ships with ADMIN_USERNAME defaulting to admin and ADMIN_PASSWORD to password — the README says change it. Two features carry the project's own warnings: the built-in web terminal gives shell access to the host the proxy runs on, and installCommands execute arbitrary shell.

Setup effort

Build from source — clone the repository and build it, then follow the steps on this page and add the configuration for your client