|
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