返回市场
构建机-mcp

构建机-mcp

作者:Drew-Goddyn4 星标更新:2025-04-05

项目介绍

Buildkite MCP 服务器

这是一个通过模型上下文协议(MCP)从Buildkite获取信息的微服务。

配置

  1. 克隆此仓库
  2. 运行 npm install
  3. 设置环境变量 BUILDKITE_ACCESS_TOKEN
  4. 使用 node index.js 启动服务器

使用Cursor集成(MCP集成)

要将此服务器添加到Cursor中,您需要在您的 ~/.cursor/config/mcp.json 文件中进行配置:

{
  "mcpServers": {
    "buildkite": {
      "command": "npx",
      "args": [
        "-y",
        "@drew-goddyn/buildkite-mcp"
      ],
      "env": {
        "BUILDKITE_ACCESS_TOKEN": "your-buildkite-access-token"
      }
    }
  }
}

通过此配置:

  • 您不需要手动安装或运行服务器
  • Cursor会根据需要自动启动和停止服务器
  • your-buildkite-access-token 替换为您实际的Buildkite API令牌

更新配置后,请重新启动Cursor以应用更改。

MCP端点

列出组织

POST /mcp_buildkite_list_organizations

请求体:

{
  "access_token": "可选-如果已在环境中设置"
}

响应:

[
  {
    "id": "org-id",
    "name": "组织名称",
    "slug": "组织别名"
  }
]

列出流水线

POST /mcp_buildkite_list_pipelines

请求体:

{
  "organization": "my-org",
  "access_token": "可选-如果已在环境中设置"
}

响应:

[
  {
    "id": "pipeline-id",
    "name": "流水线名称",
    "slug": "流水线别名"
  }
]

列出构建

POST /mcp_buildkite_list_builds

请求体:

{
  "organization": "my-org",
  "pipeline": "my-pipeline",
  "access_token": "可选-如果已在环境中设置",
  "branch": "main",
  "state": "failed",
  "per_page": 10,
  "page": 1
}

响应:

[
  {
    "id": "build-id",
    "number": 123,
    "state": "failed"
  }
]

获取构建详情

POST /mcp_buildkite_get_build

请求体:

{
  "organization": "my-org",
  "pipeline": "my-pipeline",
  "build_number": 123,
  "access_token": "可选-如果已在环境中设置"
}

响应:

{
  "id": "build-id",
  "number": 123,
  "jobs": [
    {
      "id": "job-id",
      "name": "任务名称",
      "state": "failed"
    }
  ]
}

列出所有任务

POST /mcp_buildkite_list_jobs

请求体:

{
  "organization": "my-org",
  "pipeline": "my-pipeline",
  "build_number": 123,
  "access_token": "可选-如果已在环境中设置"
}

响应:

[
  {
    "id": "job-id",
    "name": "任务名称",
    "state": "failed"
  }
]

列出失败的任务

POST /mcp_buildkite_list_failed_jobs

请求体:

{
  "organization": "my-org",
  "pipeline": "my-pipeline",
  "build_number": 123,
  "access_token": "可选-如果已在环境中设置"
}

响应:

[
  {
    "id": "01234567-89ab-cdef-0123-456789abcdef",
    "name": "测试任务",
    "state": "failed",
    "web_url": "https://buildkite.com/my-org/my-pipeline/builds/123#01234567-89ab-cdef-0123-456789abcdef"
  }
]

列出任务规格失败

POST /mcp_buildkite_list_job_spec_failures

请求体:

{
  "organization": "my-org",
  "pipeline": "my-pipeline",
  "build_number": 123,
  "job_id": "01234567-89ab-cdef-0123-456789abcdef",
  "access_token": "可选-如果已在环境中设置"
}

响应:

[
  {
    "type": "RSpec",
    "spec": "./spec/path/to/file_spec.rb:123",
    "message": "期望结果为X但得到Y"
  }
]

获取任务日志

POST /mcp_buildkite_get_job_log

请求体:

{
  "organization": "my-org",
  "pipeline": "my-pipeline",
  "build_number": 123,
  "job_id": "01234567-89ab-cdef-0123-456789abcdef",
  "access_token": "可选-如果已在环境中设置",
  "limit": 100  // 可选,默认为全部内容
}

响应:

{
  "content": "...日志内容...",
  "size": 12345,
  "format": "raw"
}

根据构建URL列出失败的规格

POST /mcp_buildkite_list_failed_specs

请求体:

{
  "build_url": "https://buildkite.com/my-org/my-pipeline/builds/123",
  "access_token": "可选-如果已在环境中设置"
}

响应:

{
  "build_url": "https://buildkite.com/my-org/my-pipeline/builds/123",
  "failed_job_count": 2,
  "jobs": [
    {
      "id": "01234567-89ab-cdef-0123-456789abcdef",
      "name": "测试任务1",
      "web_url": "https://buildkite.com/my-org/my-pipeline/builds/123#01234567-89ab-cdef-0123-456789abcdef",
      "failures": [
        {
          "spec": "./spec/path/to/file_spec.rb:123",
          "message": "期望结果为X但得到Y"
        }
      ]
    },
    {
      "id": "fedcba98-7654-3210-fedc-ba9876543210",
      "name": "测试任务2",
      "web_url": "https://buildkite.com/my-org/my-pipeline/builds/123#fedcba98-7654-3210-fedc-ba9876543210",
      "failures": []
    }
  ],
  "failures": [
    {
      "job_id": "01234567-89ab-cdef-0123-456789abcdef",
      "job_name": "测试任务1",
      "job_url": "https://buildkite.com/my-org/my-pipeline/builds/123#01234567-89ab-cdef-0123-456789abcdef",
      "spec": "./spec/path/to/file_spec.rb:123",
      "message": "期望结果为X但得到Y"
    }
  ]
}

重试任务

POST /mcp_buildkite_retry_job

请求体:

{
  "organization": "my-org",
  "pipeline": "my-pipeline",
  "build_number": 123,
  "job_id": "01234567-89ab-cdef-0123-456789abcdef",
  "access_token": "可选-如果已在环境中设置"
}

响应:

{
  "id": "job-id",
  "state": "scheduled"
}

列出流水线构建失败

POST /mcp_buildkite_list_pipeline_build_failures

请求体:

{
  "organization": "my-org",
  "pipeline": "my-pipeline",
  "state": "finished",
  "per_page": 10,
  "page": 1,
  "access_token": "可选-如果已在环境中设置"
}

响应:

[
  {
    "build_number": 123,
    "build_url": "https://buildkite.com/my-org/my-pipeline/builds/123",
    "failed_jobs": [
      {
        "name": "测试任务",
        "url": "https://buildkite.com/my-org/my-pipeline/builds/123#01234567-89ab-cdef-0123-456789abcdef"
      }
    ]
  }
]

环境变量

  • BUILDKITE_ACCESS_TOKEN: 您具有读取权限的Buildkite API令牌
  • PORT: (可选)运行服务器的端口(默认:63330)

错误处理

当出现问题时,服务器返回适当的HTTP状态码和错误消息:

  • 400: 不良请求 - 缺失或无效参数
  • 401: 未授权 - 无效或缺失访问令牌
  • 404: 未找到 - 资源未找到
  • 500: 内部服务器错误 - 服务器端错误