关于 Buildkite MCP Server
Buildkite MCP Server 可查询 Buildkite 的组织、流水线、构建和任务信息,并支持重试任务,适合通过 MCP 客户端检查 CI 结果和排查构建失败的团队。
主要功能
- 01列出组织和流水线
- 02筛选并查看构建
- 03获取任务详情和日志
- 04检查失败任务与测试
- 05重试任务
适用场景
- 01查找流水线中的失败构建
- 02排查任务日志和测试失败
- 03重试失败的 Buildkite 任务
MCP 相关
它向 MCP 客户端提供查询 Buildkite 组织、流水线、构建、任务、日志和失败信息的工具,并支持重试任务。需要 Buildkite API 令牌。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Buildkite MCP 服务
一个通过 Model Context Protocol(MCP)从 Buildkite 获取信息的微服务。
设置
- 克隆此仓库
- 运行
npm install - 设置
BUILDKITE_ACCESS_TOKEN环境变量 - 使用
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": "optional-if-set-in-env"
}
响应:
[
{
"id": "org-id",
"name": "Organization Name",
"slug": "organization-slug"
}
]
列出流水线
POST /mcp_buildkite_list_pipelines
请求正文:
{
"organization": "my-org",
"access_token": "optional-if-set-in-env"
}
响应:
[
{
"id": "pipeline-id",
"name": "Pipeline Name",
"slug": "pipeline-slug"
}
]
列出构建
POST /mcp_buildkite_list_builds
请求正文:
{
"organization": "my-org",
"pipeline": "my-pipeline",
"access_token": "optional-if-set-in-env",
"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": "optional-if-set-in-env"
}
响应:
{
"id": "build-id",
"number": 123,
"jobs": [
{
"id": "job-id",
"name": "Job Name",
"state": "failed"
}
]
}
列出所有作业
POST /mcp_buildkite_list_jobs
请求正文:
{
"organization": "my-org",
"pipeline": "my-pipeline",
"build_number": 123,
"access_token": "optional-if-set-in-env"
}
响应:
[
{
"id": "job-id",
"name": "Job Name",
"state": "failed"
}
]
列出失败的作业
POST /mcp_buildkite_list_failed_jobs
请求正文:
{
"organization": "my-org",
"pipeline": "my-pipeline",
"build_number": 123,
"access_token": "optional-if-set-in-env"
}
响应:
[
{
"id": "01234567-89ab-cdef-0123-456789abcdef",
"name": "Test Job",
"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": "optional-if-set-in-env"
}
响应:
[
{
"type": "RSpec",
"spec": "./spec/path/to/file_spec.rb:123",
"message": "Expected result to be X but got 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": "optional-if-set-in-env",
"limit": 100 // optional, defaults to all content
}
响应:
{
"content": "...log 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": "optional-if-set-in-env"
}
响应:
{
"build_url": "https://buildkite.com/my-org/my-pipeline/builds/123",
"failed_job_count": 2,
"jobs": [
{
"id": "01234567-89ab-cdef-0123-456789abcdef",
"name": "Test Job 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": "Expected result to be X but got Y"
}
]
},
{
"id": "fedcba98-7654-3210-fedc-ba9876543210",
"name": "Test Job 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": "Test Job 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": "Expected result to be X but got Y"
}
]
}
重试作业
POST /mcp_buildkite_retry_job
请求正文:
{
"organization": "my-org",
"pipeline": "my-pipeline",
"build_number": 123,
"job_id": "01234567-89ab-cdef-0123-456789abcdef",
"access_token": "optional-if-set-in-env"
}
响应:
{
"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": "optional-if-set-in-env"
}
响应:
[
{
"build_number": 123,
"build_url": "https://buildkite.com/my-org/my-pipeline/builds/123",
"failed_jobs": [
{
"name": "Test Job",
"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:内部服务器错误 - 服务端错误
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。