返回市场
MCP打包器

MCP打包器

作者:highlight-ing30 星标更新:2025-03-25

项目介绍

MCP Bundler Service

一个微服务,用于从GitHub仓库打包代码并准备部署。它支持直接返回打包后的代码或上传到Google Cloud Storage。

快速开始

# 安装依赖
pnpm install

# 启动开发服务器
pnpm run dev

# 访问API文档
open http://localhost:8080/docs

API 文档

当服务器运行时,可以在 /docs 路径访问交互式API文档。

核心端点

首页路由

GET /

返回一个包含服务信息的静态HTML页面。

健康检查

GET /health

返回一个简单的状态检查以验证服务是否正在运行。

V1 打包器(旧版)

GET /bundler?url=<github_url>&commit=<commit_hash>&format=<mjs|cjs>

参数:

  • url(必需):GitHub仓库URL
  • commit(可选):要使用的特定提交哈希(默认为最新)
  • format(可选):输出格式 - mjs(默认)或 cjs

响应:

{
  "data": "<打包后的代码字符串>"
}

V2 打包器(可选GCP上传)

GET /v2/bundler?url=<github_url>&commit=<commit_hash>&mcpId=<your_mcp_id>

参数:

  • url(必需):GitHub仓库URL
  • commit(可选):要使用的特定提交哈希(默认为最新)
  • 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打包器可以将打包后的代码上传到Google Cloud Storage供其他服务使用,或者在禁用GCP集成时直接返回代码。

禁用GCP上传

如果您想禁用GCP上传并在响应中直接获取打包后的代码,请设置:

DISABLE_GCP_INTEGRATION=true

在您的环境变量或.env文件中。当禁用GCP集成时:

  1. 打包后的代码直接返回在API响应中
  2. 打包后的代码存档副本保存在项目根目录下的bundled目录中
  3. 存档文件名遵循bundle-[commit-hash].tar.gz格式

设置GCP凭证

如果您想使用GCP上传,需要提供您的Google Cloud Platform凭证:

将您的服务账户密钥JSON直接添加到.env文件中:

GCP_SERVICE_ACCOUNT_KEY={"type": "service_account", "project_id": "your-project-id", ...}

这是开发和CI/CD环境中的推荐选项。

必需权限

创建具有Storage Admin权限的服务账户,用于您想要使用的存储桶。

部署

该服务包括一个Dockerfile用于容器化部署:

# 构建Docker镜像
docker build -t mcp-bundler .

# 运行容器
docker run -p 8080:8080 -e GCP_SERVICE_ACCOUNT_KEY='{"type":"service_account",...}' mcp-bundler

Cloud Run 部署

对于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_KEYGCP服务账户凭证JSON-
DISABLE_GCP_INTEGRATION设置为"true"以禁用GCP上传-
SENTRY_INGEST_URLSentry摄入URL-

贡献

欢迎贡献!请随时提交Pull Request。