mcpd CLI

mcpd starts MCP servers from one .mcpd.toml file and serves them to agents and scripts as a plain HTTP API on a local port

  • 193 ★ on the repository
  • Last commit
  • Apache-2.0
CLIOfficial

Extended access

Why this level

  • Starts MCP servers as subprocesses with your environment variables and exposes their tools over HTTP on a local port
  • Stores server secrets in ~/.config/mcpd/ and injects them at launch; each server's own permissions decide what it can do
All reasons and checks

mozilla-ai/mcpd

Install

Manual install

brew tap mozilla-ai/tap

Adds the Mozilla AI tap first. Works on macOS and Linux.

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • Starts MCP servers as subprocesses with your environment variables and exposes their tools over HTTP on a local port
  • Stores server secrets in ~/.config/mcpd/ and injects them at launch; each server's own permissions decide what it can do

This is third-party code. Review the repository files before installing.

What it does

mcpd from Mozilla AI keeps MCP servers in one place. A .mcpd.toml file lists the servers you need with their arguments and environment variables, and the daemon starts each one as a stdio subprocess and proxies requests over HTTP. An app or agent does not need to know what a server is written in: Python, JavaScript and Docker images look like a single API. Four commands are enough to begin. `mcpd init` creates a project and the .mcpd.toml file, `mcpd add time` adds a server from the registry, `mcpd config args set` sets its arguments and `mcpd daemon --dev` starts the daemon. After that a server tool is called with an ordinary POST request to localhost:8090, and the API description sits at /docs on the same port. Secrets stay in ~/.config/mcpd/ and do not land in the project file. `mcpd config export` writes a repository-safe snapshot of the configuration with secrets replaced by templates, which is convenient for CI and containers. The same daemon runs in Docker, so a local setup moves to a server without a rewrite. For IDEs there is a separate mcpd-proxy that shows Cursor and VS Code every mcpd server through a single connection.

Who it is for. Teams that build agents on several MCP servers and want to run them the same way on a developer laptop and in containers on a server.

Good fit when

  • An agent needs three MCP servers in Python, Node.js and Docker, and you do not want to start them one by one
  • Server configuration should live in git next to the code while keys stay outside the repository
  • An app in any language must call MCP tools with a plain HTTP request and no MCP client
  • A local set of servers has to move into CI or a container with secrets injected
  • Cursor or VS Code needs every project server behind a single connection entry

Not a fit when

  • You need one MCP server for Claude Code: claude mcp add connects it directly with less setup
  • You want a remote multi-user gateway with OAuth and auditing: mcpd runs servers and does not replace that kind of gateway
  • The machine has no uv, Node.js or Docker and those are exactly what the servers need: without a runtime the daemon starts nothing

Example request

Install mcpd, add the time server, start the daemon in development mode and call get_current_time for Warsaw over HTTP

Limitations

  • The daemon starts servers only as stdio subprocesses. Packages must begin with uvx::, npx:: or docker::, and each prefix needs its own runtime on the machine: uv, Node.js or Docker.
  • Building from source requires Go 1.27.1 or newer. A ready binary installs through Homebrew on macOS and Linux or from GitHub releases.
  • The README example listens on port 8090 in development mode. Remote access and protection of that port are up to you, the README describes no built-in authorization.
  • Servers from the Mozilla AI registry go through the project's own validation, but third-party packages do not belong to it, so their safety stays with you.

How to disable. Stop the daemon process and delete the project folder with .mcpd.toml. Local secrets live in ~/.config/mcpd/ and can be removed separately. Homebrew removes the package with brew uninstall mcpd.

FAQ

What is mcpd and how does it help a team?

mcpd is a daemon that starts MCP servers from a .mcpd.toml description and exposes them as an HTTP API. A team describes its toolset once and gets the same environment on a laptop and in a container.

How do I install mcpd?

Run brew tap mozilla-ai/tap and brew install mcpd. This works on macOS and Linux. Installing from GitHub releases and building the Go binary are covered at docs.mozilla.ai/mcpd.

Does mcpd need Docker?

Only for servers with the docker:: prefix and for running the daemon itself in a container. Servers with the uvx:: prefix need uv and those with npx:: need Node.js.

How do I call an MCP server tool through mcpd?

Send a POST to http://localhost:8090/api/v1/servers/<server>/tools/<tool> with a JSON body of arguments. The full method list opens at http://localhost:8090/docs.

How do I connect mcpd servers to Cursor or VS Code?

Use mcpd-proxy, started with npx @mozilla-ai/mcpd-proxy. The proxy gives the IDE every mcpd server through a single MCP connection, and the IDE integration docs cover Cursor and VS Code setup.

Discussion

No questions or reviews yet.

CLI tools

A self-hosted gateway that merges several MCP servers into one endpoint with auth and tool selection

MCP serverBroad access2.8KRepository stars

A proxy between MCP transports: connects stdio clients to remote SSE and HTTP servers and exposes local servers over the network

MCP serverExtended access2.8KRepository stars

Dokploy MCP

Dokploy MCP Server

Official

The official Dokploy MCP gives an agent 508 API tools covering projects, applications, databases, Docker and backups.

MCP serverBroad access424Repository stars

MCPM

mcpm

A package manager and registry for MCP on all platforms and clients: finds, adds and configures MCP servers, remembers the source and updates

CLIExtended access1KRepository stars
Official

The cronstable job scheduler exposes its jobs, run history and schedule debugging to an agent through MCP.

MCP serverExtended access137Repository stars

A Node.js manager for MCP servers: it starts local servers, connects remote ones and gives a client one address, with a REST API for control

MCP serverBroad access526Repository stars

Comparison with similar tools

Cards that share the main search query, and how they differ.

ToolOfficialAuthenticationRepository starsMain difference
mcpd (this card)yes193
Docker MCP Gatewayyesnot required1,626Docker's gateway runs servers from the Docker catalog in isolated containers, mcpd describes any server set in .mcpd.toml
mcp-proxynonot required2,814only a bridge between stdio, SSE and HTTP transports, with no server registry or secret management
MCP Gateway RegistrynoOAuth1,038an enterprise gateway with OAuth, audit and a registry, while mcpd is lighter and built for a team and CI

README in short

After the pitch on declarative configuration the README lists runtime requirements, a Homebrew install and a short example with the time server. It then covers SDKs for Python and JavaScript, plugin SDKs for Go, .NET, Python and Rust, the IDE proxy and the project's development commands.

README badge

Report a problem

Foxx AImcpd
Foxx AI

I am Foxx AI and I have already vetted this tool. Ask about install, setup or anything else, and I will keep it simple.