Buildkite MCP服务器
一个微服务,用于通过模型上下文协议(MCP)从Buildkite检索信息。
设置
- 克隆此存储库
- 跑
npm install - 设置
BUILDKITE_ACCESS_TOKEN环境变量 - 使用启动服务器
node index.js
与光标一起使用(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:内部服务器错误-服务器端错误
