|  | 
| 1 |  | -# mcpd | 
|  | 1 | +# <img src="docs/assets/mcpd-logo.png" alt="mcpd" width="300"/> | 
|  | 2 | + | 
|  | 3 | +> **Run your agents, not your infrastructure.** | 
| 2 | 4 | 
 | 
| 3 | 5 | **mcpd** is a tool to declaratively manage [Model Context Protocol](https://modelcontextprotocol.io/overview) (MCP) servers, providing a consistent interface to define and run tools across environments, from local development to containerized cloud deployments. | 
| 4 | 6 | 
 | 
|  | 7 | +Built by [Mozilla AI](https://mozilla.ai) | 
|  | 8 | + | 
|  | 9 | +--- | 
|  | 10 | + | 
| 5 | 11 | Today, `mcpd` launches MCP servers as subprocesses using STDIO (Standard Input/Output) and acts as an HTTP proxy between agents and the tools they expose. This enables agent-compatible workflows with support for secrets, runtime arguments, and reproducible configurations, no matter where `mcpd` is running. | 
| 6 | 12 | 
 | 
| 7 | 13 | We're developing a Kubernetes operator, guided by our internal roadmap, to extend `mcpd` for deploying and managing MCP servers as long-lived services in production. It will use the same `.mcpd.toml` configuration and proxy model, making it easier to scale and manage lifecycles without changing the developer experience. | 
| 8 | 14 | 
 | 
| 9 |  | -> Built by [Mozilla AI](https://mozilla.ai) | 
| 10 | 15 | 
 | 
| 11 |  | -## 🚀 Features | 
|  | 16 | +## The Problem | 
| 12 | 17 | 
 | 
| 13 |  | -- Declarative `.mcpd.toml` to define servers/tools | 
| 14 |  | -- Run and manage language-agnostic MCP servers via a single CLI | 
| 15 |  | -- Secure execution context for secrets and runtime args | 
| 16 |  | -- Smooth dev-to-prod transition via the `mcpd` daemon | 
| 17 |  | -- Rich CLI and SDK tooling, see supported languages below: | 
|  | 18 | +ML teams build agents that work perfectly locally. Operations teams get handed Python scripts and told "make this production-ready across dev/UAT/prod."  | 
|  | 19 | +The gap between local development and enterprise deployment kills AI initiatives. | 
|  | 20 | + | 
|  | 21 | +`mcpd` solves this with declarative configuration, secure secrets management, and seamless environment promotion - all while keeping the developer experience simple. | 
| 18 | 22 | 
 | 
| 19 | 23 | 
 | 
| 20 |  | -| Language   | Repository                                                       | Status             | | 
| 21 |  | -|------------|------------------------------------------------------------------|--------------------| | 
| 22 |  | -| Python     | [mcpd-sdk-python](https://github.com/mozilla-ai/mcpd-sdk-python) | :white_check_mark: | | 
| 23 |  | -| JavaScript | _Coming soon_                                                    | :yellow_circle:    | | 
|  | 24 | +## Why mcpd? | 
| 24 | 25 | 
 | 
| 25 |  | -## 📖 Documentation | 
|  | 26 | +**Zero-Config Tool Setup**   | 
|  | 27 | +No cloning repos or installing language-specific dependencies. `mcpd add` and `mcpd daemon` handle everything. | 
| 26 | 28 | 
 | 
| 27 |  | -Full documentation available at: | 
|  | 29 | +**Language-Agnostic Tooling**   | 
|  | 30 | +Use MCP servers written in Python, JavaScript, TypeScript via a unified HTTP API. | 
| 28 | 31 | 
 | 
| 29 |  | -👉 **[https://mozilla-ai.github.io/mcpd/](https://mozilla-ai.github.io/mcpd/)** | 
|  | 32 | +**Declarative Configuration**   | 
|  | 33 | +Version-controlled `.mcpd.toml` files define your agent infrastructure. Reproducible, auditable, CI-friendly. | 
| 30 | 34 | 
 | 
| 31 |  | -Covers setup, CLI usage, configuration, secrets, the daemon, Makefile commands, and full tutorials. | 
|  | 35 | +**Enterprise-Ready Secrets**   | 
|  | 36 | +Separate project configuration from runtime variables, and export sanitized secrets templates. Never commit secrets to Git again. | 
| 32 | 37 | 
 | 
| 33 |  | -Explore the Python SDK, with a list of examples using it with different agent frameworks, at: | 
|  | 38 | +**Seamless Local-to-Prod**   | 
|  | 39 | +Same configuration works in development, CI, and cloud environments without modification. | 
|  | 40 | + | 
|  | 41 | + | 
|  | 42 | +## Built for Dev & Production | 
|  | 43 | + | 
|  | 44 | +| Development Workflow                                                              | Production Benefit                                         | | 
|  | 45 | +|-----------------------------------------------------------------------------------|------------------------------------------------------------| | 
|  | 46 | +| `mcpd daemon` runs everything locally                                             | Same daemon runs in containers                             | | 
|  | 47 | +| `.mcpd.toml` version-controlled configs                                           | Declarative infrastructure as code                         | | 
|  | 48 | +| Local secrets in `~/.config/mcpd/`                                                | Secure secrets injection via control plane                 | | 
|  | 49 | +| `mcpd config export` exports version-control safe snapshot of local configuration | Sanitized secrets config and templates for CI/CD pipelines | | 
|  | 50 | + | 
|  | 51 | +## Features | 
|  | 52 | + | 
|  | 53 | +- Focus on Developer Experience via `mcpd` CLI | 
|  | 54 | +- Declarative configuration (`.mcpd.toml`) to define required servers/tools | 
|  | 55 | +- Run and manage language-agnostic MCP servers | 
|  | 56 | +- Secure execution context for secrets and runtime args | 
|  | 57 | +- Smooth dev-to-prod transition via the `mcpd` daemon | 
|  | 58 | +- Rich CLI and SDK tooling, see supported languages below: | 
| 34 | 59 | 
 | 
| 35 |  | -👉 **[https://github.com/mozilla-ai/mcpd-sdk-python](https://github.com/mozilla-ai/mcpd-sdk-python)** | 
| 36 | 60 | 
 | 
| 37 |  | -## ⚙️ Quickstart | 
|  | 61 | +## 🚀 Quick Start | 
| 38 | 62 | 
 | 
| 39 |  | -Install dependencies: | 
|  | 63 | +### Prerequisites | 
| 40 | 64 | 
 | 
| 41 |  | -- [Go](https://go.dev/doc/install) | 
|  | 65 | +- [Go](https://go.dev/doc/install) (only required for development of `mcpd`) | 
| 42 | 66 | - [npx](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) | 
| 43 | 67 | - [uvx](https://docs.astral.sh/uv/getting-started/installation/) | 
| 44 | 68 | 
 | 
| 45 |  | -Clone the repo: | 
|  | 69 | +### Installation | 
|  | 70 | + | 
|  | 71 | +#### via Homebrew | 
|  | 72 | + | 
|  | 73 | +Add the Mozilla.ai tap: | 
|  | 74 | + | 
| 46 | 75 | ```bash | 
| 47 |  | -git clone [email protected] :mozilla-ai/mcpd.git | 
| 48 |  | -cd mcpd | 
|  | 76 | +brew tap mozilla-ai/tap | 
| 49 | 77 | ``` | 
| 50 | 78 | 
 | 
| 51 |  | -Build the binary: | 
|  | 79 | +Then install `mcpd`: | 
|  | 80 | + | 
| 52 | 81 | ```bash | 
| 53 |  | -make build | 
| 54 |  | -``` | 
|  | 82 | +brew install mcpd | 
|  | 83 | +```` | 
|  | 84 | + | 
|  | 85 | +Or install directly from the cask: | 
| 55 | 86 | 
 | 
| 56 |  | -Install globally: | 
| 57 | 87 | ```bash | 
| 58 |  | -sudo make install | 
|  | 88 | +brew install --cask mozilla-ai/tap/mcpd | 
| 59 | 89 | ``` | 
| 60 | 90 | 
 | 
| 61 |  | -In your agentic application code... | 
|  | 91 | +#### via GitHub releases | 
|  | 92 | + | 
|  | 93 | +Official releases can be found on [mcpd's GitHub releases page](https://github.com/mozilla-ai/mcpd/releases). | 
|  | 94 | +
 | 
|  | 95 | +The following is an example of manually downloading and installing `mcpd` using `curl` and `jq` by running `install_mcpd`: | 
| 62 | 96 | 
 | 
| 63 |  | -Initialize a new project: | 
| 64 | 97 | ```bash | 
| 65 |  | -mcpd init | 
|  | 98 | +function install_mcpd() { | 
|  | 99 | +    command -v curl >/dev/null || { echo "curl not found"; return 1; } | 
|  | 100 | +    command -v jq >/dev/null || { echo "jq not found"; return 1; } | 
|  | 101 | +
 | 
|  | 102 | +    latest_version=$(curl -s https://api.github.com/repos/mozilla-ai/mcpd/releases/latest | jq -r .tag_name) | 
|  | 103 | +    os=$(uname) | 
|  | 104 | +    arch=$(uname -m) | 
|  | 105 | +
 | 
|  | 106 | +    zip_name="mcpd_${os}_${arch}.tar.gz" | 
|  | 107 | +    url="https://github.com/mozilla-ai/mcpd/releases/download/${latest_version}/${zip_name}" | 
|  | 108 | +
 | 
|  | 109 | +    echo "Downloading: $url" | 
|  | 110 | +    curl -sSL "$url" -o "$zip_name" || { echo "Download failed"; return 1; } | 
|  | 111 | +
 | 
|  | 112 | +    echo "Extracting: $zip_name" | 
|  | 113 | +    tar -xzf "$zip_name" mcpd || { echo "Extraction failed"; return 1; } | 
|  | 114 | +
 | 
|  | 115 | +    echo "Installing to /usr/local/bin" | 
|  | 116 | +    sudo mv mcpd /usr/local/bin/mcpd && sudo chmod +x /usr/local/bin/mcpd || { echo "Install failed"; return 1; } | 
|  | 117 | +
 | 
|  | 118 | +    rm -f "$zip_name" | 
|  | 119 | +    echo "mcpd installed successfully" | 
|  | 120 | +} | 
| 66 | 121 | ``` | 
| 67 | 122 | 
 | 
| 68 |  | -Add a server (e.g. `time`): | 
|  | 123 | +#### via local Go binary build | 
|  | 124 | +
 | 
| 69 | 125 | ```bash | 
| 70 |  | -mcpd add time | 
|  | 126 | +# Clone and build | 
|  | 127 | +git clone [email protected]:mozilla-ai/mcpd.git | 
|  | 128 | +cd mcpd | 
|  | 129 | +make build | 
|  | 130 | +sudo make install # Install mcpd 'globally' to /usr/local/bin | 
| 71 | 131 | ``` | 
| 72 | 132 | 
 | 
| 73 |  | -Start the daemon: | 
|  | 133 | +### Using mcpd | 
|  | 134 | +
 | 
| 74 | 135 | ```bash | 
| 75 |  | -mcpd daemon | 
|  | 136 | +# Initialize a new project | 
|  | 137 | +mcpd init | 
|  | 138 | +
 | 
|  | 139 | +# Add an MCP server | 
|  | 140 | +mcpd add time | 
|  | 141 | +
 | 
|  | 142 | +# Set the local timezone for the MCP server | 
|  | 143 | +mcpd config args set time -- --local-timezone=Europe/London | 
|  | 144 | +
 | 
|  | 145 | +# Start the daemon in dev mode with debug logging | 
|  | 146 | +mcpd daemon --dev --log-level=DEBUG --log-path=$(pwd)/mcpd.log | 
|  | 147 | +
 | 
|  | 148 | +# You can tail the log file | 
|  | 149 | +tail -f mcpd.log | 
| 76 | 150 | ``` | 
| 77 | 151 | 
 | 
| 78 |  | -API docs will be available at `/docs`, e.g. `http://localhost:8090/docs`  | 
|  | 152 | +API docs will be available at [http://localhost:8090/docs](http://localhost:8090/docs). | 
| 79 | 153 | 
 | 
| 80 |  | -## 🧰 Development | 
| 81 | 154 | 
 | 
| 82 |  | -Run tests: | 
|  | 155 | +## Deploy Anywhere | 
|  | 156 | +
 | 
|  | 157 | +`mcpd` is runtime-flexible and infrastructure-agnostic: | 
|  | 158 | +
 | 
|  | 159 | +- ⚙️ Works in any container or host with `uv` and `npx` | 
|  | 160 | +- ☁️ Multi-cloud ready (AWS, GCP, Azure, on-prem) | 
|  | 161 | +- ♻️ Low resource overhead via efficient server management | 
|  | 162 | +
 | 
|  | 163 | +
 | 
|  | 164 | +## 📚 Documentation & SDKs | 
|  | 165 | +
 | 
|  | 166 | +**Full documentation:** [https://mozilla-ai.github.io/mcpd/](https://mozilla-ai.github.io/mcpd/) | 
|  | 167 | +
 | 
|  | 168 | +**SDKs available:** | 
|  | 169 | +
 | 
|  | 170 | +| Language   | Repository                                                       | Status | | 
|  | 171 | +|------------|------------------------------------------------------------------|--------| | 
|  | 172 | +| Python     | [mcpd-sdk-python](https://github.com/mozilla-ai/mcpd-sdk-python) | ✅      | | 
|  | 173 | +| JavaScript | _Coming soon_                                                    | 🟡     | | 
|  | 174 | +
 | 
|  | 175 | +
 | 
|  | 176 | +## 💻 Development | 
|  | 177 | +
 | 
|  | 178 | +Build local code: | 
| 83 | 179 | ```bash | 
| 84 |  | -make test | 
|  | 180 | +make build | 
| 85 | 181 | ``` | 
| 86 | 182 | 
 | 
| 87 |  | -Run the local documentation site (requires `uv`): | 
|  | 183 | +Run tests: | 
| 88 | 184 | ```bash | 
| 89 |  | -make docs-local | 
|  | 185 | +make test | 
| 90 | 186 | ``` | 
| 91 | 187 | 
 | 
| 92 |  | -Generate CLI documentation and related docs site navigation: | 
|  | 188 | +Run the local documentation site (requires `uv`), dynamically generates command line documentation: | 
| 93 | 189 | ```bash | 
| 94 |  | -make docs-cli | 
| 95 |  | -make docs-nav | 
|  | 190 | +make docs | 
| 96 | 191 | ``` | 
| 97 | 192 | 
 | 
|  | 193 | +
 | 
| 98 | 194 | --- | 
| 99 | 195 | 
 | 
| 100 | 196 | ## 🤝 Contributing | 
|  | 
0 commit comments