Buildkite MCP Server について
Buildkite MCP Serverは、Buildkiteの組織、パイプライン、ビルド、ジョブ情報の取得と、ジョブの再試行を行います。MCPクライアントからCI結果を調べ、失敗したビルドを確認するチーム向けです。
主な機能
- 01組織とパイプラインの一覧表示
- 02ビルドの絞り込みと詳細確認
- 03ジョブ情報とログの取得
- 04失敗したジョブとテストの確認
- 05ジョブの再試行
活用シーン
- 01パイプラインの失敗ビルドを特定
- 02ジョブログとテスト失敗を調査
- 03失敗したBuildkiteジョブを再試行
MCP 対応
Buildkiteの組織、パイプライン、ビルド、ジョブ、ログ、失敗情報を取得し、ジョブを再試行するMCPツールを提供します。利用には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:内部サーバーエラー - サーバー側のエラー
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。