mcpField
B
Buildkite MCP Server

Buildkite MCP Server

ローカル
github.com/Drew-Goddynクラウド・インフラ482 週間前に更新

Buildkite MCP Server について

Buildkite MCP Serverは、Buildkiteの組織、パイプライン、ビルド、ジョブ情報の取得と、ジョブの再試行を行います。MCPクライアントからCI結果を調べ、失敗したビルドを確認するチーム向けです。

主な機能

  1. 01組織とパイプラインの一覧表示
  2. 02ビルドの絞り込みと詳細確認
  3. 03ジョブ情報とログの取得
  4. 04失敗したジョブとテストの確認
  5. 05ジョブの再試行

活用シーン

  1. 01パイプラインの失敗ビルドを特定
  2. 02ジョブログとテスト失敗を調査
  3. 03失敗したBuildkiteジョブを再試行

MCP 対応

Buildkiteの組織、パイプライン、ビルド、ジョブ、ログ、失敗情報を取得し、ジョブを再試行するMCPツールを提供します。利用にはBuildkite APIトークンが必要です。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"buildkite": {
"command": "npx",
"args": [
"-y",
"@drew-goddyn/buildkite-mcp"
],
"env": {
"BUILDKITE_ACCESS_TOKEN": "<BUILDKITE_ACCESS_TOKEN>"
}
}
}
}
起動コマンドnpx -y @drew-goddyn/buildkite-mcp
設定が必要な環境変数
BUILDKITE_ACCESS_TOKENシークレット

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@drew-goddyn/buildkite-mcp

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Buildkite MCP サーバー

Model Context Protocol(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": "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:内部サーバーエラー - サーバー側のエラー

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。