MCP Bundler服务
一个微服务,将GitHub存储库中的代码捆绑在一起,并为部署做好准备。它支持直接返回捆绑代码或上传到Google Cloud Storage。
快速开始
# Install dependencies
pnpm install
# Start the development server
pnpm run dev
# Access the API documentation
open http://localhost:8080/docsAPI文档
交互式API文档可在 /docs 当服务器正在运行时。
核心终点
索引路线
GET /返回一个静态HTML页面,其中包含有关服务的信息。
健康检查
GET /health返回一个简单的状态检查,以验证服务是否正在运行。
V1 Bundler(传统版)
GET /bundler?url=&commit=&format=参数:
url(必填):GitHub存储库URLcommit(可选):要使用的特定提交哈希(默认为最新)format(可选):输出格式-mjs(默认)或cjs
答复:
{
"data": ""
}V2 Bundler(可选GCP上传)
GET /v2/bundler?url=&commit=&mcpId=参数:
url(必填):GitHub存储库URLcommit(可选):要使用的特定提交哈希(默认为最新)mcpId(可选):捆绑服务器的唯一标识符(如果未提供,则自动生成)
GCP上传启用响应:
{
"success": true,
"gcp_upload": {
"bucket": "your-bucket-name",
"path": "your-mcp-id/commit-hash/",
"files": [
"bundle-commit-hash.tar.gz"
]
}
}GCP上传已禁用响应:
{
"success": true,
"data": ""
}GCP集成(可选)
V2捆绑器可以将捆绑的代码上传到谷歌云存储,以便与其他服务一起使用,或者在禁用GCP集成的情况下直接返回。
禁用GCP上传
如果你想禁用GCP上传并在响应中直接获取捆绑代码,请设置:
DISABLE_GCP_INTEGRATION=true在您的环境中或 .env 文件。当GCP集成被禁用时:
- 绑定代码在API响应中直接返回
- 捆绑代码存档的副本保存到
bundled项目根目录中的目录 - 存档文件名遵循以下格式
bundle-[commit-hash].tar.gz
设置GCP凭据
如果你想使用GCP上传,你需要提供你的谷歌云平台凭据:
将您的服务帐户密钥JSON直接添加到 .env 文件:
GCP_SERVICE_ACCOUNT_KEY={"type": "service_account", "project_id": "your-project-id", ...}这是开发和CI/CD环境的推荐选项。
必需的权限
使用创建服务帐户 Storage Admin 您要使用的bucket的权限。
部署
该服务包括一个用于容器化部署的Dockerfile:
# Build the Docker image
docker build -t mcp-bundler .
# Run the container
docker run -p 8080:8080 -e GCP_SERVICE_ACCOUNT_KEY='{"type":"service_account",...}' mcp-bundler云运行部署
对于Google Cloud Run部署,请设置 GCP_SERVICE_ACCOUNT_KEY 环境变量与您的服务帐户凭据JSON。
错误处理
所有端点都包含具有适当HTTP状态代码的全面错误响应:
400:输入参数无效500:服务器端错误504:超时错误(通常用于大型存储库或复杂的依赖关系)
特性
- GitHub集成:直接从任何公共GitHub存储库捆绑代码
- 格式选项:以ESM(mjs)或CommonJS(cjs)格式输出
- 提交固定:为可复制的构建指定精确的提交哈希值
- GCP存储:可选择将捆绑代码上传到Google Cloud Storage以供进一步部署
- Swagger文档:带有Swagger UI的交互式API文档
- 错误处理:具有适当状态代码的全面错误报告
局限性
- 存储库绑定有5分钟的超时时间
- 大型WASM文件可能超过处理限制
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
GCP_SERVICE_ACCOUNT_KEY | GCP服务帐户凭据JSON | - |
DISABLE_GCP_INTEGRATION | 设置为“true”以禁用GCP上传 | - |
SENTRY_INGEST_URL | 哨兵摄取URL | - |
贡献
欢迎投稿!请随时提交拉取请求。
