modelcontextprotocol/mcpb
GitHub: modelcontextprotocol/mcpb
MCPB 定义了一种标准化的 MCP 服务器打包格式,让桌面应用能够通过单击安装本地 MCP 服务器,解决了分发与配置复杂的问题。
Stars: 1966 | Forks: 193
# MCP Bundles (MCPB)
MCP Bundles (`.mcpb`) 是包含本地 MCP server 和 `manifest.json`(用于描述服务器及其功能)的 zip 归档文件。该格式在精神上类似于 Chrome 扩展程序 (`.crx`) 或 VS Code 扩展程序 (`.vsix`)),使最终用户能够通过单击安装本地 MCP server。
此仓库提供了三个组件:[MANIFEST.md](MANIFEST.md) 中的 bundle 规范、用于创建 bundle 的 CLI 工具(见 [CLI.md](CLI.md)),以及 Claude for macOS 和 Windows 用于加载和验证 MCPB bundle 的代码([src/index.ts](src/index.ts))。
- 对于本地 MCP server 的开发者,我们旨在让上述 server 的分发和安装变得便捷
- 对于支持本地 MCP server 的应用开发者,我们旨在让其轻松添加对 MCPB bundle 的支持
Claude for macOS 和 Windows 使用此仓库中的代码来实现本地 MCP server 的单击安装,包括许多对最终用户友好的功能——例如自动更新、便捷的 MCP server 配置及其所需的变量和参数,以及一个精选的目录。我们致力于围绕 MCP server 的开放生态系统,并相信其能够被多个应用和服务普遍采用的能力,将使那些旨在将 AI 工具连接到其他应用和服务的开发者受益。因此,我们正在将 MCP Bundle 规范、工具链,以及 Claude for macOS 和 Windows 用于实现自身对 MCP Bundles 支持的 schemas 和关键函数进行开源。我们希望 `mcpb` 格式不仅能让本地 MCP server 对 Claude 来说更具可移植性,对其他 AI 桌面应用程序也是如此。
# Bundle 开发者指南
本质上,MCPB 是简单的 zip 文件,包含您的整个 MCP server 和一个 `manifest.json`。因此,将本地 MCP server 转换为 bundle 非常简单:您只需将所有必需的文件放在一个文件夹中,创建一个 `manifest.json`,然后创建一个归档文件。
为了使此过程更轻松,此包提供了一个 CLI,可帮助您创建 `manifest.json` 和最终的 `.mcpb` 文件。要安装它,请运行:
```
npm install -g @anthropic-ai/mcpb
```
1. 在包含您本地 MCP server 的文件夹中,运行 `mcpb init`。此命令将引导您完成 `manifest.json` 的创建。
2. 运行 `mcpb pack` 以创建一个 `mcpb` 文件。
3. 现在,任何实现了对 MCPB 支持的应用都可以运行您的本地 MCP server。例如,在 Claude for macOS 和 Windows 中打开该文件以显示安装对话框。
您可以在 [MANIFEST.md](MANIFEST.md) 中找到 `manifest.json` 的完整规范及其所有必填和选填字段。Bundle 的示例可以在 [examples](./examples/) 中找到。
## AI 工具的 Prompt 模板
像 Claude Code 这样的 AI 工具在了解了规范后,特别擅长创建 MCP bundles。在提示 AI 编码工具构建 bundle 时,请简要说明您的 bundle 旨在做什么——然后将以下上下文添加到您的指令中。
## 目录结构
### 最小 Bundle
`manifest.json` 是唯一必需的文件。
### 示例:Node.js Bundle
```
bundle.mcpb (ZIP file)
├── manifest.json # Required: Bundle metadata and configuration
├── server/ # Server files
│ └── index.js # Main entry point
├── node_modules/ # Bundled dependencies
├── package.json # Optional: NPM package definition
├── icon.png # Optional: Bundle icon
└── assets/ # Optional: Additional assets
```
### 示例:Python Bundle
```
bundle.mcpb (ZIP file)
├── manifest.json # Required: Bundle metadata and configuration
├── server/ # Server files
│ ├── main.py # Main entry point
│ └── utils.py # Additional modules
├── lib/ # Bundled Python packages
├── requirements.txt # Optional: Python dependencies list
└── icon.png # Optional: Bundle icon
```
### 示例:Binary Bundle
```
bundle.mcpb (ZIP file)
├── manifest.json # Required: Bundle metadata and configuration
├── server/ # Server files
│ ├── my-server # Unix executable
│ ├── my-server.exe # Windows executable
└── icon.png # Optional: Bundle icon
```
### 语言选择建议
**我们建议使用 Node.js 而非 Python 来实现 MCP server**,以减少安装阻力。Node.js 随 Claude for macOS 和 Windows 一起提供,这意味着您的 bundle 将为用户提供开箱即用的体验,而无需他们安装额外的 Python runtime(或由您手动打包它们)。
### 打包依赖
**UV Runtime (v0.4+):**
- 在 manifest 中使用 `server.type = "uv"`
- 包含带有依赖项的 `pyproject.toml`(无需打包额外的包)
- 宿主应用程序自动管理 Python 和依赖项
- 无需用户安装 Python 即可跨平台工作
- 参见 `examples/hello-world-uv`
**Python Bundles(传统方式):**
- 在 manifest 中使用 `server.type = "python"`
- 将所有必需的包打包在 `server/lib/` 目录中
- 或者将完整的虚拟环境打包在 `server/venv/` 目录中
- 使用 `pip-tools`、`poetry` 或 `pipenv` 等工具创建可重现的 bundles
- 通过 `mcp_config.env` 设置 `PYTHONPATH` 以包含已打包的包
- **限制**:无法以可移植的方式打包编译型依赖项(例如,MCP Python SDK 所需的 pydantic)
**Node.js Bundles:**
- 运行 `npm install --production` 以创建 `node_modules`
- 将整个 `node_modules` 目录与您的 bundle 打包在一起
- 使用 `npm ci` 或 `yarn install --frozen-lockfile` 进行可重现的构建
- Server 入口点在 manifest.json 的 `server.entry_point` 中指定
**Binary Bundles:**
- 首选静态链接以获得最大兼容性
- 如果使用动态链接,请包含所有必需的共享库
- 在没有开发工具的纯净系统上进行测试
## 开发设置
```
# Clone repository
git clone https://github.com/anthropics/mcpb.git
cd mcpb
# Install dependencies
yarn
# Build project
yarn build
# Run tests
yarn test
```
## 发布流程
1. 更新 `package.json` 中的版本
2. 创建一个包含版本升级的 pull request
3. 合并后,创建一个 GitHub release
4. 包将自动发布到 npm
# 许可证
此项目的新贡献根据 Apache License 2.0 进行许可,现有代码则基于 MIT 许可——详情请参阅 [LICENSE](LICENSE) 文件。
标签:MCP, MITM代理, 打包格式, 暗色界面, 桌面应用, 自动化攻击