Labsco
MCP SERVER

MCP-Compose

by phildougherty

Docker Compose for MCP servers - declare several in one YAML file, start them together, and reach them through one HTTP proxy.

MCP Plumbing: Proxies, Registries & Inspectors
Summary
The stdio-to-HTTP translation is what earns the extra process.

Most MCP servers are stdio programs a client launches; anything that is not a desktop client - a web app, a script, a service - cannot use them. Fronting them with an HTTP proxy that also generates OpenAPI specifications turns a pile of local servers into something ordinary software can call, which is a different capability from just running them all at once.

What it is

An orchestrator. You describe your servers in a Compose-style YAML file, and it runs them as containers or processes and puts an HTTP proxy in front, translating stdio servers into HTTP endpoints along the way.

What you get
  • One YAML file declaring every server, its protocol, command, arguments, capabilities, volumes and environment
  • Servers started and stopped together or by name, with the usual up, down, restart and status commands
  • An HTTP proxy that translates stdio servers to HTTP, so clients that only speak HTTP can reach them
  • Docker and Podman both supported natively
  • Session management and connection pooling for clients sharing the proxy
  • A built-in dashboard for monitoring, and generated OpenAPI specifications for the servers behind it
Requirements

Go and make to build, then put the binary on your PATH. An interactive init writes a starting configuration, or you write mcp-compose.yaml yourself. Start the servers with up, then run the proxy on a port of your choosing - the examples use 9876 - and check it with a request to the proxy's server listing. Any keys your servers need are passed through the environment as they would be in Docker Compose. The licence is AGPL-3.0.

Setup effort

Run a container — pull the image and point your client at it