Labsco
MCP SERVER

xMCP Server

by kovrichard

Run a stdio MCP server whose launch command you do not have installed — xMCP holds npx, bunx, uv and docker in a container and proxies the session over HTTP.

MCP Plumbing: Proxies, Registries & Inspectors
Summary
A runtime you do not have, reachable over the network.

The interesting move is turning a launch command into a URL. That makes a stdio server usable from a client on a machine with no Node, no Python and no Docker, and it makes one container the single place where those runtimes are installed and updated. The other side of that: anything you proxy runs in the container with the container's filesystem and network, so what you point it at matters as much as what you install.

What it is

A streamable HTTP MCP server that proxies to stdio MCP servers. It exists for one problem the other proxies leave alone: the stdio server you want needs a command your machine does not have. xMCP runs inside a container with the common launchers preinstalled, so you address the target server by URL instead of by local command.

What you get
  • A stdio MCP server addressed as a URL: the name, the command and its arguments become query parameters, for example `?name=context7&command=npx&args=-y,@upstash/context7-mcp`
  • Launchers already present in the container so nothing has to be installed on your own machine — `npx`, `bunx`, `uv` and `docker`
  • Room to extend: add whatever else you need to the container image, and the same URL form works for it
  • A local MCP Inspector alongside the server for checking what the proxied session exposes
Requirements

No account and no key. Docker: `docker compose up -d`, or `make start`. The server listens at `http://localhost:3001/mcp`, and the Inspector at `http://localhost:6274` — the Inspector needs an auth token in the URL, which `make logs` prints. The npm package name is `xmcp-server` (1.0.0).

Setup effort

One command — npx -y @upstash/context7-mcp