这是一个通过模型上下文协议(MCP)从Buildkite获取信息的微服务。
npm installBUILDKITE_ACCESS_TOKENnode index.js 启动服务器要将此服务器添加到Cursor中,您需要在您的 ~/.cursor/config/mcp.json 文件中进行配置:
{
"mcpServers": {
"buildkite": {
"command": "npx",
"args": [
"-y",
"@drew-goddyn/buildkite-mcp"
],
"env": {
"BUILDKITE_ACCESS_TOKEN": "your-buildkite-access-token"
}
}
}
}
通过此配置:
your-buildkite-access-token 替换为您实际的Buildkite API令牌更新配置后,请重新启动Cursor以应用更改。
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"
}
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: 内部服务器错误 - 服务器端错误