CircleCI

公式

CircleCIのビルド失敗をAIエージェントが修正できるようにします。

CircleCI MCPで何ができますか?

  • 設定を検証 — アシスタントに .circleci/config.yml の検証を依頼し、config_helper を介して構文エラーやセマンティックエラーに関するガイダンスを受け取ります。
  • ビルド失敗を診断 — get_build_failure_logs を使用して、CircleCI ビルドから詳細な失敗ログを取得します。
  • 不安定なテストを特定 — find_flaky_tests を使用してプロジェクトのテスト実行履歴を分析し、不安定なテストを特定します。
  • パイプラインのステータスを確認 — get_latest_pipeline_status を使用して、ブランチの最新パイプラインのステータスを取得します。
  • ワークフローを再実行 — rerun_workflow を使用して、ワークフローを最初から、または失敗したジョブから再実行します。
  • パイプラインをトリガー — run_pipeline と run_rollback_pipeline を使用して、パイプラインを実行するか、プロジェクトのロールバックをトリガーします。

ドキュメント

[!IMPORTANT] このパッケージは非推奨です。移行してください。

@circleci/mcp-server-circleci は新機能の開発を行っていません。代わりに CircleCI の ホスト型 MCP サーバー または CircleCI CLI MCP を使用してください — CircleCI MCP の概要 を参照してください。

このリポジトリはアーカイブされます。既存のバージョンは npm から引き続きインストール可能ですが、CircleCI Personal API Token を保持するメンテナンスされていないサーバーを実行することは推奨されません。

セルフマネージドリモートトランスポート (start=remote) を実行している場合は、まず移行してください。ホスト型サーバーがその直接の代替であり、組織のトークンを仲介するネットワーク向けサービスを運用する必要がなくなります。

CircleCI MCP Server

License: Apache 2.0 CircleCI npm

Model Context Protocol (MCP) は、大規模言語モデル (LLM) と外部システム間のコンテキストを管理するための新しい標準化プロトコルです。このリポジトリでは、CircleCI 用の MCP サーバーを提供しています。

Cursor、Windsurf、Copilot、Claude、または MCP 互換の任意のクライアントを使用して、IDE を離れることなく自然言語で CircleCI とやり取りできます。

ツール

ツール説明
config_helperCircleCI 設定を検証し、ガイダンスを取得します
download_usage_api_dataCircleCI Usage API から使用状況データをダウンロードします
find_flaky_testsテスト実行履歴を分析して不安定なテストを特定します
find_underused_resource_classesコンピュートリソースを十分に活用できていないジョブを検出します
get_build_failure_logsCircleCI ビルドから詳細な失敗ログを取得します
get_job_test_resultsCircleCI ジョブのテストメタデータと結果を取得します
get_latest_pipeline_statusブランチの最新パイプラインのステータスを取得します
list_artifactsCircleCI ジョブによって生成されたアーティファクトを一覧表示します
list_component_versionsCircleCI コンポーネントのすべてのバージョンを一覧表示します
list_followed_projectsフォローしているすべての CircleCI プロジェクトを一覧表示します
rerun_workflowワークフローを最初から、または失敗したジョブから再実行します
run_pipelineパイプラインの実行をトリガーします
run_rollback_pipelineプロジェクトのロールバックをトリガーします

インストール

チーム / 集中デプロイ: 組織向けに共有のリモートサーバー (Kubernetes、Docker など) を 1 つ実行し、開発者ごとのトークンまたは共有の CircleCI トークンを使用する場合は、セルフマネージドリモート MCP サーバーを参照してください。

Cursor

前提条件:

ローカル MCP サーバーで NPX を使用する

Cursor の MCP 設定に以下を追加します:

{
  "mcpServers": {
    "circleci-mcp-server": {
      "command": "npx",
      "args": ["-y", "@circleci/mcp-server-circleci@latest"],
      "env": {
        "CIRCLECI_TOKEN": "your-circleci-token",
        "CIRCLECI_BASE_URL": "https://circleci.com",
        "MAX_MCP_OUTPUT_LENGTH": "50000"
      }
    }
  }
}

CIRCLECI_BASE_URL は任意です — オンプレミスのお客様のみ必須です。 MAX_MCP_OUTPUT_LENGTH は任意です — MCP レスポンスの最大出力長 (デフォルト: 50000)。

ローカル MCP サーバーで Docker を使用する

Cursor の MCP 設定に以下を追加します:

{
  "mcpServers": {
    "circleci-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "CIRCLECI_TOKEN",
        "-e",
        "CIRCLECI_BASE_URL",
        "-e",
        "MAX_MCP_OUTPUT_LENGTH",
        "circleci/mcp-server-circleci"
      ],
      "env": {
        "CIRCLECI_TOKEN": "your-circleci-token",
        "CIRCLECI_BASE_URL": "https://circleci.com",
        "MAX_MCP_OUTPUT_LENGTH": "50000"
      }
    }
  }
}

セルフマネージドリモート MCP サーバーを使用する

セルフマネージドリモート MCP サーバーを参照してください。ユーザーごとのクライアント設定を使用し、Cursor の MCP 設定 (Cursor Settings → MCP) に追加します。

VS Code

前提条件:

ローカル MCP サーバーで NPX を使用する

プロジェクト内の .vscode/mcp.json に以下を追加します:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "circleci-token",
      "description": "CircleCI API Token",
      "password": true
    },
    {
      "type": "promptString",
      "id": "circleci-base-url",
      "description": "CircleCI Base URL",
      "default": "https://circleci.com"
    }
  ],
  "servers": {
    "circleci-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@circleci/mcp-server-circleci@latest"],
      "env": {
        "CIRCLECI_TOKEN": "${input:circleci-token}",
        "CIRCLECI_BASE_URL": "${input:circleci-base-url}"
      }
    }
  }
}

💡 入力はサーバーの初回起動時に求められ、その後 VS Code によって安全に保存されます。

ローカル MCP サーバーで Docker を使用する

プロジェクト内の .vscode/mcp.json に以下を追加します:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "circleci-token",
      "description": "CircleCI API Token",
      "password": true
    },
    {
      "type": "promptString",
      "id": "circleci-base-url",
      "description": "CircleCI Base URL",
      "default": "https://circleci.com"
    }
  ],
  "servers": {
    "circleci-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "CIRCLECI_TOKEN",
        "-e",
        "CIRCLECI_BASE_URL",
        "circleci/mcp-server-circleci"
      ],
      "env": {
        "CIRCLECI_TOKEN": "${input:circleci-token}",
        "CIRCLECI_BASE_URL": "${input:circleci-base-url}"
      }
    }
  }
}

セルフマネージドリモート MCP サーバーを使用する

セルフマネージドリモート MCP サーバーを参照してください。.vscode/mcp.json でユーザーごとのクライアント設定を使用します。

Claude Desktop

前提条件:

ローカル MCP サーバーで NPX を使用する

claude_desktop_config.json に以下を追加します:

{
  "mcpServers": {
    "circleci-mcp-server": {
      "command": "npx",
      "args": ["-y", "@circleci/mcp-server-circleci@latest"],
      "env": {
        "CIRCLECI_TOKEN": "your-circleci-token",
        "CIRCLECI_BASE_URL": "https://circleci.com",
        "MAX_MCP_OUTPUT_LENGTH": "50000"
      }
    }
  }
}

ローカル MCP サーバーで Docker を使用する

claude_desktop_config.json に以下を追加します:

{
  "mcpServers": {
    "circleci-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "CIRCLECI_TOKEN",
        "-e",
        "CIRCLECI_BASE_URL",
        "-e",
        "MAX_MCP_OUTPUT_LENGTH",
        "circleci/mcp-server-circleci"
      ],
      "env": {
        "CIRCLECI_TOKEN": "your-circleci-token",
        "CIRCLECI_BASE_URL": "https://circleci.com",
        "MAX_MCP_OUTPUT_LENGTH": "50000"
      }
    }
  }
}

セルフマネージドリモート MCP サーバーを使用する

セルフマネージドリモート MCP サーバーを参照してください。Claude Desktop および CLI クライアントに示すようにラッパースクリプトを作成し、claude_desktop_config.json をそのスクリプトに向けます。

設定ファイルを見つけるか作成するには、Claude Desktop の設定を開き、左サイドバーの Developer をクリックしてから Edit Config をクリックします。設定ファイルの場所は次のとおりです:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

詳細情報: https://modelcontextprotocol.io/quickstart/user

Claude Code

前提条件:

ローカル MCP サーバーで NPX を使用する

claude mcp add circleci-mcp-server -e CIRCLECI_TOKEN=your-circleci-token -- npx -y @circleci/mcp-server-circleci@latest

ローカル MCP サーバーで Docker を使用する

claude mcp add circleci-mcp-server -e CIRCLECI_TOKEN=your-circleci-token -e CIRCLECI_BASE_URL=https://circleci.com -- docker run --rm -i -e CIRCLECI_TOKEN -e CIRCLECI_BASE_URL circleci/mcp-server-circleci

セルフマネージドリモート MCP サーバーを使用する

セルフマネージドリモート MCP サーバーおよびそこの Claude Code クライアント設定を参照してください。

Windsurf

前提条件:

ローカル MCP サーバーで NPX を使用する

Windsurf の mcp_config.json に以下を追加します:

{
  "mcpServers": {
    "circleci-mcp-server": {
      "command": "npx",
      "args": ["-y", "@circleci/mcp-server-circleci@latest"],
      "env": {
        "CIRCLECI_TOKEN": "your-circleci-token",
        "CIRCLECI_BASE_URL": "https://circleci.com",
        "MAX_MCP_OUTPUT_LENGTH": "50000"
      }
    }
  }
}

ローカル MCP サーバーで Docker を使用する

Windsurf の mcp_config.json に以下を追加します:

{
  "mcpServers": {
    "circleci-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "CIRCLECI_TOKEN",
        "-e",
        "CIRCLECI_BASE_URL",
        "-e",
        "MAX_MCP_OUTPUT_LENGTH",
        "circleci/mcp-server-circleci"
      ],
      "env": {
        "CIRCLECI_TOKEN": "your-circleci-token",
        "CIRCLECI_BASE_URL": "https://circleci.com",
        "MAX_MCP_OUTPUT_LENGTH": "50000"
      }
    }
  }
}

セルフマネージドリモート MCP サーバーを使用する

セルフマネージドリモート MCP サーバーを参照してください。Windsurf の mcp_config.json でユーザーごとのクライアント設定を使用します。

詳細情報: https://docs.windsurf.com/windsurf/mcp

Amazon Q Developer CLI

前提条件:

Amazon Q Developer の MCP クライアント設定は、mcp.json という名前のファイルに JSON 形式で保存されます。2 つのレベルの設定がサポートされています:

  • グローバル: ~/.aws/amazonq/mcp.json — すべてのワークスペースに適用されます
  • ワークスペース: .amazonq/mcp.json — 現在のワークスペースに固有です

両方のファイルが存在する場合、その内容がマージされます。競合する場合は、ワークスペースの設定が優先されます。

ローカル MCP サーバーで NPX を使用する

~/.aws/amazonq/mcp.json を編集するか、.amazonq/mcp.json を次の内容で作成します:

{
  "mcpServers": {
    "circleci-local": {
      "command": "npx",
      "args": [
        "-y",
        "@circleci/mcp-server-circleci@latest"
      ],
      "env": {
        "CIRCLECI_TOKEN": "YOUR_CIRCLECI_TOKEN",
        "CIRCLECI_BASE_URL": "https://circleci.com",
        "MAX_MCP_OUTPUT_LENGTH": "50000"
      },
      "timeout": 60000
    }
  }
}

セルフマネージドリモート MCP サーバーを使用する

セルフマネージドリモート MCP サーバーを参照してください。Claude Desktop および CLI クライアントに示すようにラッパースクリプトを使用し、q mcp add で登録します。

IDE の Amazon Q Developer

前提条件:

ローカル MCP サーバーで NPX を使用する

~/.aws/amazonq/mcp.json を編集するか、.amazonq/mcp.json を次の内容で作成します:

{
  "mcpServers": {
    "circleci-local": {
      "command": "npx",
      "args": [
        "-y",
        "@circleci/mcp-server-circleci@latest"
      ],
      "env": {
        "CIRCLECI_TOKEN": "YOUR_CIRCLECI_TOKEN",
        "CIRCLECI_BASE_URL": "https://circleci.com",
        "MAX_MCP_OUTPUT_LENGTH": "50000"
      },
      "timeout": 60000
    }
  }
}

セルフマネージドリモート MCP サーバーを使用する

セルフマネージドリモート MCP サーバーを参照してください。Claude Desktop および CLI クライアントに示すようにラッパースクリプトを使用し、MCP 設定 UI から追加します:

  1. MCP 設定 UI にアクセスする
  2. + 記号を選択します
  3. スコープを選択します: global または local
  4. 名前を入力します (例: circleci-remote-mcp)
  5. トランスポートプロトコルを選択します: stdio
  6. スクリプトへのコマンドパスを入力します
  7. Save をクリックします
Smithery

Smithery 経由で Claude Desktop 用の CircleCI MCP Server を自動的にインストールするには:

npx -y @smithery/cli install @CircleCI-Public/mcp-server-circleci --client claude

セルフマネージドリモート MCP サーバー

MCP サーバーを集中的に (たとえば Kubernetes や Docker 上で) 実行し、チームで 1 つのデプロイを共有します。開発者の認証方法を選択してください:

デプロイモードを選択する

モード使用する場面サーバー設定クライアント設定CircleCI 監査証跡
ユーザーごとのトークン (推奨)SSO に基づく Personal API Token を使用するチームREQUIRE_REQUEST_TOKEN=true、サーバー PAT なし各開発者が自身の PAT を転送開発者ごと
共有トークン (暫定)迅速な展開、単一のサービス ID で問題ない場合サーバーに CIRCLECI_TOKEN、REQUIRE_REQUEST_TOKEN=false (明示的なオプトアウト)認証ヘッダー不要単一の共有 ID

セキュリティ: リモートモードでは、リクエスト認証がデフォルトで有効です。共有トークンモードではこれが無効になり (REQUIRE_REQUEST_TOKEN=false)、資格情報なしで呼び出し元が誰でもサーバーの CIRCLECI_TOKEN ID として動作できるようになります — 任意の設定でパイプラインをトリガーすることも含まれます。完全に信頼できるネットワークでのみ有効にし、それ以外の場合はユーザーごとのトークンを優先してください。イングレスでの TLS 終端は暗号化を提供しますが、認証は提供しません。

この組み合わせはパブリックインターフェース上では安全でないため、MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS=true で明示的にリスクを受け入れない限り、REQUIRE_REQUEST_TOKEN=false が非ループバックのバインドアドレスと組み合わされた場合、サーバーは起動を拒否します。Host/Origin のチェックは認証の代替ではありません — 以下の DNS リバインディング保護を参照してください。

1. サーバーをデプロイする

どちらのモードもリモート HTTP モード (start=remote) を使用します。ポート 8000 (または選択したポート) を公開します。

ユーザーごとのトークン (推奨) — localhost から mcp-remote 経由でアクセス:

docker run --rm -p 8000:8000 \
  -e start=remote \
  -e port=8000 \
  -e REQUIRE_REQUEST_TOKEN=true \
  circleci/mcp-server-circleci

ユーザーごとのトークン (推奨) — パブリックホスト名から mcp-remote 経由でアクセス:

docker run --rm -p 8000:8000 \
  -e start=remote \
  -e port=8000 \
  -e REQUIRE_REQUEST_TOKEN=true \
  -e MCP_ALLOWED_HOSTS=my-mcp.example.com \
  circleci/mcp-server-circleci

共有トークン (暫定) — パブリックホスト名から mcp-remote 経由でアクセス:

このモードは資格情報なしで任意の呼び出し元に組織の PAT を提供するため、公開されたポートが信頼できないネットワークから到達不可能な場所でのみ実行する必要があり、明示的にそれを承認しなければサーバーは起動を拒否します:

docker run --rm -p 8000:8000 \
  -e start=remote \
  -e port=8000 \
  -e CIRCLECI_TOKEN=your-shared-circleci-pat \
  -e REQUIRE_REQUEST_TOKEN=false \
  -e MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS=true \
  -e MCP_ALLOWED_HOSTS=my-mcp.example.com \
  circleci/mcp-server-circleci

代わりに、ポートの手前に認証を配置することを優先してください — SSO、mTLS、または API キーを要求するイングレスなど — あるいは上記のユーザーごとのトークンに切り替えてください。

環境変数:

変数説明
start=remotestdio の代わりに HTTP+SSE MCP サーバーを起動します
portコンテナ内のリッスンポート (デフォルト: 8000)
REQUIRE_REQUEST_TOKENAuthorization: Bearer または Circle-Token ヘッダーのないリクエストを拒否します。デフォルトは必須です。REQUIRE_REQUEST_TOKEN=false を設定すると、認証なしのリクエストを許可します (共有トークンモード)
CIRCLECI_TOKENユーザーごとのヘッダーが送信されない場合に、すべてのリクエストで使用される共有フォールバック PAT
CIRCLECI_BASE_URLオプション — オンプレミスのみ必須 (デフォルト: https://circleci.com)
DISABLE_TELEMETRY=true使用状況メトリクスのエクスポートをオプトアウトします
MCP_ALLOWED_HOSTS許可する追加の Host ヘッダー値のカンマ区切りリスト (例: my-mcp.example.com,my-mcp.example.com:443)。ループバックホスト名は常に許可されます。非ループバックのデプロイでは必須です。
MCP_ALLOWED_ORIGINS許可する追加の Origin ヘッダー値のカンマ区切りリスト (例: https://my-app.example.com)。ループバックオリジンは常に許可されます。ブラウザが (mcp-remote を経由せずに) このサーバーに直接アクセスする場合にのみ必要です。
MCP_BIND_HOSTバインドするネットワークインターフェース (デフォルト: 0.0.0.0)。127.0.0.1 に設定するとループバックのみに制限されます (Docker の -p ポートマッピングとは互換性がありません)。
MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS非ループバックのバインドアドレスで REQUIRE_REQUEST_TOKEN=false を指定して起動する場合に必須 (=true) です。ポートに到達できる任意のピアが、資格情報なしでサーバーの CIRCLECI_TOKEN アイデンティティとして動作することを承認します。リクエストトークンが必須の場合には効果がありません。
MCP_FILE_OUTPUT_ROOTSファイル読み書きツールが使用できる追加ディレクトリのカンマ区切りリスト (例: /srv/reports,/data/exports)。作業ディレクトリ、ホームディレクトリ、一時ディレクトリは常に許可されます。以下の注意事項を参照してください。

ファイル出力場所 (stdio とリモートトランスポートの両方に適用): ファイルシステムパスを受け付けるツール — get_build_failure_logs (outputDir)、download_usage_api_data (outputDir)、find_underused_resource_classes (csvFilePath) — は、サーバーの作業ディレクトリ、ユーザーのホームディレクトリ、システムの一時ディレクトリの内部でのみ読み書きできます。これらのルート内では、隠し設定ディレクトリ (~/.ssh、~/.aws、~/.config、.git など)、node_modules、および起動エージェントのディレクトリは拒否され、許可されたルートの外側を指すシンボリックリンクも拒否されます。システムディレクトリ (/etc、/usr、/bin、/System、/Library、%SystemRoot% など) は無条件に拒否され、再度有効にすることはできません。出力ファイルがシンボリックリンク経由で書き込まれることはありません。

チェックアウトがこれらのルートの外側にある場合 — コンテナ内の /workspace、/srv、/opt、/Volumes/work のようなセカンダリボリューム — は、MCP_FILE_OUTPUT_ROOTS をそのディレクトリに設定してください。そうしないと、それらのパスは拒否されます。stdio サーバーの場合、作業ディレクトリは通常すでにプロジェクトルートであるため、設定は不要です。これは、パスがローカルユーザーではなくネットワーククライアントから送られてくるリモートトランスポートで最も重要です。

DNS リバインディング保護 (認証ではありません): リモートトランスポートは、すべての /mcp リクエストで Host ヘッダーを検証します。デフォルトでは、ループバックアドレス (localhost、127.0.0.1、[::1]) のみが受け入れられます。パブリックデプロイでは、クライアントが使用するホスト名を MCP_ALLOWED_HOSTS に設定する必要があります。そうしないと、すべての /mcp リクエストが 403 Forbidden を受け取ります。/ping ヘルスチェックエンドポイントは保護されていないため、ロードバランサーのプローブは Host に関係なく動作し続けます。

(ブラウザが送信する) Origin ヘッダーも、存在する場合に検証されます。mcp-remote のような非ブラウザクライアントは Origin を送信しないため、このチェックの影響を受けません。

このチェックはアクセス制御ではなく、アクセス制御として依存してはなりません。 どちらのヘッダーも呼び出し元が選択するため、curl、スクリプト、生のソケットなど、あらゆる非ブラウザクライアントが許可された Host を送信し、Origin を省略することでこのチェックを満たすことができます。その唯一の目的は、攻撃者が制御する DNS によってブラウザがサーバーを標的にされるのを防ぐことであり、これが DNS リバインディングの脅威です。呼び出し元の認証は REQUIRE_REQUEST_TOKEN (またはポートの前段にある認証プロキシ) の役割です。Origin ヘッダーを必須にすると、攻撃者を止めることなく、すべての正当な CLI クライアントが壊れてしまいます。

リバースプロキシの背後にある場合: プロキシが Host をバックエンドアドレスに書き換える場合 (nginx のデフォルト)、proxy_set_header Host $host; を追加して元のホスト名を通過させ、MCP_ALLOWED_HOSTS をそのパブリックホスト名に設定します。あるいは、MCP_ALLOWED_HOSTS をプロキシが転送するホスト名に設定します。

サーバーは、次の方法でリクエストごとのトークンを受け付けます:

  • Authorization: Bearer <circleci-pat>
  • Circle-Token: <circleci-pat>

クライアントがヘッダートークンを送信した場合、サーバー上の CIRCLECI_TOKEN よりも優先されます。

リクエスト中に記録されたテレメトリメトリクスは、そのリクエストと同じトークンを使用してエクスポートされます。

2. クライアントの設定

ほとんどの MCP クライアントはローカル (stdio) プロセスのみをサポートしています。サードパーティ製の stdio-to-HTTP ブリッジである mcp-remote を使用して、リモートサーバーに接続します。

URL スキーム: ローカルテストでは、--allow-http とともに http://localhost:8000/mcp を使用します。本番環境では、イングレス/ロードバランサーで TLS を終端し、--allow-http なしで https://your-host/mcp を使用します。

Windows: --header の値では、コロンの前後のスペースを避けてください。Bearer <token> の値全体を環境変数に入れてください。

セキュリティ: 例では便宜上 npx を使用しています。本番環境やチームへの展開では、MCP 設定で特定のバージョンを固定してください (たとえば、mcp-remote の代わりに mcp-remote@0.1.38)。0.1.16 より前のバージョンは使用しないでください (CVE-2025-6514)。

クライアント設定: ユーザーごとのトークン

各開発者は、リクエストごとに自分の CircleCI Personal API Token を転送します:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "circleci-token",
      "description": "CircleCI API Token",
      "password": true
    }
  ],
  "mcpServers": {
    "circleci-mcp-server-remote": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "http://localhost:8000/mcp",
        "--allow-http",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "Bearer ${input:circleci-token}"
      }
    }
  }
}

http://localhost:8000/mcp をチームのサーバー URL に置き換えてください。Cursor と VS Code は ${input:...} プロンプトをサポートしています。他のクライアントは AUTH_HEADER を直接設定できます。

クライアント設定: 共有トークン

サーバーに CIRCLECI_TOKEN が設定され、REQUIRE_REQUEST_TOKEN=false を指定して起動された場合 (リクエスト認証はデフォルトで有効であり、明示的に無効化する必要があり、非ループバックのバインドにはさらに MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS=true が必要です)、クライアントはトークンを送信する必要はありません:

{
  "mcpServers": {
    "circleci-mcp-server-remote": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "http://localhost:8000/mcp",
        "--allow-http"
      ]
    }
  }
}

Claude Desktop および CLI クライアント

ラッパースクリプトを作成します (例: circleci-remote-mcp.sh):

#!/bin/bash
export AUTH_HEADER="Bearer your-circleci-token"
npx mcp-remote http://localhost:8000/mcp --allow-http --header "Authorization:${AUTH_HEADER}"

実行可能にし (chmod +x circleci-remote-mcp.sh)、MCP 設定から参照します:

{
  "mcpServers": {
    "circleci-remote-mcp-server": {
      "command": "/full/path/to/circleci-remote-mcp.sh"
    }
  }
}

Claude Code

claude mcp add circleci-mcp-server \
  -e AUTH_HEADER="Bearer your-circleci-token" \
  -- npx mcp-remote http://localhost:8000/mcp --allow-http --header "Authorization:${AUTH_HEADER}"

共有トークンサーバー を使用する場合は、--header と AUTH_HEADER を省略してください。

3. デプロイの検証

# Health check (no auth required)
curl http://localhost:8000/ping

# Should return 401 when REQUIRE_REQUEST_TOKEN=true and no token is sent
curl -s -o /dev/null -w "%{http_code}\n" -X POST http://localhost:8000/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'

# Should return 200 with a valid Bearer token and MCP Accept headers
curl -s -o /dev/null -w "%{http_code}\n" -X POST http://localhost:8000/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer your-circleci-pat" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'

デモ

実際の動作をご覧ください

例: 「自分のブランチで最新の失敗したパイプラインを見つけてログを取得する」 — その他の例については wiki を参照してください。

https://github.com/user-attachments/assets/3c765985-8827-442a-a8dc-5069e01edb74

ツールの詳細

config_helper

ガイダンスと検証を提供することで、CircleCI の設定タスクを支援します。

  • .circleci/config.yml の構文エラーとセマンティックエラーを検証します
  • 詳細な検証結果と設定の推奨事項を提供します
  • 例: 「私の CircleCI 設定を検証する」
download_usage_api_data

指定された組織の使用状況データを CircleCI Usage API からダウンロードします。柔軟な日付入力 (例: 「2025年3月」や「先月」) を受け付けます。クラウド専用の機能です。

オプション 1: 以下を指定して新しいエクスポートジョブを開始します:

  • orgId、startDate、endDate (最大 32 日)、outputDir

オプション 2: 以下を指定して既存のエクスポートジョブを確認/ダウンロードします:

  • orgId、jobId、outputDir

指定された期間の CircleCI 使用状況データを含む CSV ファイルを返します。

[!NOTE] 使用状況データは、コスト最適化分析のために find_underused_resource_classes ツールに渡すことができます。

find_flaky_tests

テスト実行履歴を分析することで、CircleCI プロジェクト内の不安定なテストを特定します。CircleCI の 不安定なテスト検出機能 を活用します。

このツールは 3 つの方法で使用できます:

  1. プロジェクトスラッグを使用する (推奨):

    • まず list_followed_projects を使用してプロジェクトを取得し、次に:
    • 例: 「my-project の不安定なテストを取得する」
  2. CircleCI プロジェクト URL を使用する:

  3. ローカルプロジェクトコンテキストを使用する:

    • ワークスペースルートと git リモート URL を指定することで、ローカルワークスペースから動作します
    • 例: 「現在のプロジェクトの不安定なテストを見つける」

出力モード:

  • テキスト (デフォルト): 不安定なテストの詳細をテキスト形式で返します
  • ファイル (FILE_OUTPUT_DIRECTORY 環境変数が必要): 不安定なテストの詳細を含むディレクトリを作成します
find_underused_resource_classes

CircleCI 使用状況データの CSV ファイルを分析し、平均または最大の CPU/RAM 使用率が指定されたしきい値 (デフォルト: 40%) を下回るジョブを見つけます。

download_usage_api_data から取得した CSV ファイルを指定してください。

プロジェクトとワークフローごとに整理された、使用率の低いジョブの Markdown リストを返します — コスト最適化の機会を特定するのに役立ちます。

get_build_failure_logs

CircleCI ビルドから詳細な失敗ログを取得します。このツールは 3 つの方法で使用できます:

  1. プロジェクトスラッグとブランチを使用する (推奨):

    • まず list_followed_projects を使用してプロジェクトを取得し、次に:
    • 例: 「main ブランチの my-project のビルド失敗を取得する」
  2. CircleCI URL を使用する:

  3. ローカルプロジェクトコンテキストを使用する:

    • ワークスペースルート、git リモート URL、ブランチ名を指定することで、ローカルワークスペースから動作します
    • 例: 「現在のブランチで最新の失敗したパイプラインを見つける」

このツールは、以下を含む整形されたログを返します:

  • ジョブ名
  • ステップごとの実行の詳細
  • 失敗メッセージとコンテキスト
get_job_test_results

CircleCI ジョブのテストメタデータを取得し、IDE を離れることなくテスト結果を分析できるようにします。このツールは 3 つの方法で使用できます:

  1. プロジェクトスラッグとブランチを使用する (推奨):

    • 例: 「main ブランチの my-project のテスト結果を取得する」
  2. CircleCI URL を使用する:

    • ジョブ URL: https://app.circleci.com/pipelines/github/org/repo/123/workflows/abc-def/jobs/789
    • ワークフロー URL: https://app.circleci.com/pipelines/github/org/repo/123/workflows/abc-def
    • パイプライン URL: https://app.circleci.com/pipelines/github/org/repo/123
  3. ローカルプロジェクトコンテキストを使用する:

    • ワークスペースルート、git リモート URL、ブランチ名を指定することで、ローカルワークスペースから動作します

このツールは以下を返します:

  • すべてのテストの概要 (合計、成功、失敗)
  • 失敗したテストの詳細情報: 名前、クラス、ファイル、エラーメッセージ、所要時間
  • タイミング付きの成功したテストのリスト
  • テスト結果によるフィルタリング

[!NOTE] テストメタデータは CircleCI 設定で構成する必要があります。セットアップ手順については テストデータの収集 を参照してください。

get_latest_pipeline_status 指定されたブランチの最新パイプラインのステータスを取得します。このツールは3つの方法で使用できます:
  1. プロジェクトスラッグとブランチを使用する(推奨):

    • 例:「main ブランチの my-project の最新パイプラインのステータスを取得する」
  2. CircleCI プロジェクト URL を使用する:

  3. ローカルプロジェクトコンテキストを使用する:

    • ワークスペースルート、git リモート URL、ブランチ名を指定することで、ローカルワークスペースから動作します

出力例:

---
Workflow: build
Status: success
Duration: 5 minutes
Created: 4/20/2025, 10:15:30 AM
Stopped: 4/20/2025, 10:20:45 AM
---
Workflow: test
Status: running
Duration: unknown
Created: 4/20/2025, 10:21:00 AM
Stopped: in progress
list_artifacts

CircleCI ジョブによって生成されたアーティファクトの一覧を取得します。このツールは3つの方法で使用できます:

  1. プロジェクトスラッグとブランチを使用する(推奨):

    • まず list_followed_projects を使用してプロジェクトを取得し、次に:
    • 例:「main ブランチの my-project のアーティファクトを一覧表示する」
  2. CircleCI URL を使用する:

    • ジョブ URL: https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def/jobs/789
    • ワークフロー URL: https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def
    • パイプライン URL: https://app.circleci.com/pipelines/gh/organization/project/123
  3. ローカルプロジェクトコンテキストを使用する:

    • ワークスペースルート、git リモート URL、ブランチ名を指定することで、ローカルワークスペースから動作します

用途:

  • ビルドアーティファクト(バイナリ、レポート、ログ)のダウンロード URL の検索
  • パイプライン実行によって生成されたアーティファクトの確認
list_component_versions

環境内の特定の CircleCI コンポーネントのすべてのバージョンを一覧表示します。デプロイステータス、コミット情報、タイムスタンプが含まれます。

コンポーネントと環境が指定されていない場合、ツールは選択を促します。

用途:

  • 現在稼働中のバージョンの特定
  • ロールバック操作の対象バージョンの選択
  • デプロイの詳細(パイプライン、ワークフロー、ジョブ)の取得
list_followed_projects

ユーザーが CircleCI でフォローしているすべてのプロジェクトを一覧表示します。

  • アクセス権のあるすべてのプロジェクトとその projectSlug を表示します
  • 例:「自分の CircleCI プロジェクトを一覧表示する」

出力例:

Projects followed:
1. my-project (projectSlug: gh/organization/my-project)
2. another-project (projectSlug: gh/organization/another-project)

[!NOTE] 他の多くの CircleCI ツールでは、プロジェクト名ではなく projectSlug が必要です。

rerun_workflow

ワークフローを最初から、または失敗したジョブから再実行します。

新しく作成されたワークフローの ID と、それを監視するためのリンクを返します。

run_pipeline

パイプラインの実行をトリガーします。このツールは3つの方法で使用できます:

  1. プロジェクトスラッグとブランチを使用する(推奨):

    • 例:「main ブランチの my-project のパイプラインを実行する」
  2. CircleCI URL を使用する:

  3. ローカルプロジェクトコンテキストを使用する:

    • ワークスペースルート、git リモート URL、ブランチ名を指定することで、ローカルワークスペースから動作します

このツールはパイプライン実行を監視するためのリンクを返します。

run_rollback_pipeline

CircleCI プロジェクトのロールバックをトリガーします。このツールは次の手順を対話的に案内します:

  1. プロジェクトの選択 — フォローしているプロジェクトを一覧表示し、選択できます
  2. 環境の選択 — 利用可能な環境を一覧表示します(1つだけの場合は自動選択)
  3. コンポーネントの選択 — 利用可能なコンポーネントを一覧表示します(1つだけの場合は自動選択)
  4. バージョンの選択 — 利用可能なバージョンを表示し、ロールバックの対象を選択します
  5. ロールバックモードの検出 — ロールバックパイプラインが設定されているか確認します
  6. ロールバックの実行 — 2つのオプション:
    • パイプラインロールバック: ロールバックパイプラインをトリガーします
    • ワークフロー再実行: ワークフロー ID を使用して以前のワークフローを再実行します
  7. 確認 — 実行前に概要をまとめて確認します

トラブルシューティング

クイックフィックス

よくある問題:

  1. パッケージキャッシュをクリアする:

    npx clear-npx-cache
    npm cache clean --force
    
  2. 最新バージョンを強制する: 設定に @latest を追加します:

    "args": ["-y", "@circleci/mcp-server-circleci@latest"]
    
  3. IDE を完全に再起動する(ウィンドウのリロードだけでは不十分)

認証の問題
  • 無効なトークンエラー: Personal API Tokens で CIRCLECI_TOKEN を確認してください
  • 権限エラー: トークンにプロジェクトへの読み取りアクセス権があることを確認してください
  • 環境変数が読み込まれない: echo $CIRCLECI_TOKEN(Mac/Linux)または echo %CIRCLECI_TOKEN%(Windows)でテストしてください
接続とネットワークの問題
  • ベース URL: CIRCLECI_BASE_URL が https://circleci.com であることを確認してください
  • 企業ネットワーク: ファイアウォールの内側にいる場合は npm プロキシ設定を構成してください
  • ファイアウォールによるブロック: セキュリティソフトウェアがパッケージのダウンロードをブロックしていないか確認してください
システム要件
  • Node.js バージョン: node --version で ^22.23.4 || ^24.22.1 || >=26.12.1 を満たしていることを確認してください
  • Node.js の更新: 互換性の問題が発生している場合は最新の LTS を検討してください
  • パッケージマネージャー: npm/pnpm が動作していることを確認してください: npm --version
IDE 固有の問題
  • 設定ファイルの場所: お使いの OS のパスを再確認してください
  • 構文エラー: 設定ファイルの JSON 構文を検証してください
  • コンソールログ: 具体的なエラーについては IDE の開発者コンソールを確認してください
  • 別の IDE を試す: 問題を切り分けるため、別のサポート対象エディタでテストしてください
プロセスの問題

プロセスがハングする場合 — 既存の MCP プロセスを強制終了します:

# Mac/Linux:
pkill -f "mcp-server-circleci"

# Windows:
taskkill /f /im node.exe

ポートの競合: 接続がブロックされているように見える場合は IDE を再起動してください。

高度なデバッグ
  • パッケージを直接テストする: npx @circleci/mcp-server-circleci@latest --help
  • 詳細ログ: DEBUG=* npx @circleci/mcp-server-circleci@latest
  • Docker フォールバック: npx が継続的に失敗する場合は Docker インストールを試してください

さらにサポートが必要ですか?

  1. 同様の問題がないか GitHub Issues を確認してください
  2. 問題を報告する際は、OS、Node のバージョン、IDE を含めてください
  3. IDE コンソールから関連するエラーメッセージを共有してください

テレメトリ

サーバーはツール使用状況を追跡するための OpenTelemetry メトリクスをサポートしています。DISABLE_TELEMETRY=true を設定しない限り、メトリクスはエクスポートされます。リモートデプロイでは、メトリクスはリクエストと同じトークン(ユーザーごとの PAT または共有サーバー PAT)を使用します。

メトリクス説明
circleci.mcp.tool.invocationsツール呼び出し回数
circleci.mcp.tool.duration_ms実行時間(ミリ秒)
circleci.mcp.tool.errorsエラー回数

開発

はじめに

  1. リポジトリをクローンします:

    git clone https://github.com/CircleCI-Public/mcp-server-circleci.git
    cd mcp-server-circleci
    
  2. 依存関係をインストールします:

    pnpm install
    
  3. プロジェクトをビルドします:

    pnpm build
    

Docker コンテナのビルド

Docker コンテナは次のコマンドでローカルにビルドできます:

docker build -t circleci:mcp-server-circleci .

これにより、任意の MCP クライアントで使用できる circleci:mcp-server-circleci というタグの Docker イメージが作成されます。

ローカル stdio モード(単一開発者、クライアント側にトークン):

docker run --rm -i \
  -e CIRCLECI_TOKEN=your-circleci-token \
  -e CIRCLECI_BASE_URL=https://circleci.com \
  circleci/mcp-server-circleci

リモートモード(チーム向けの集中型サーバー): Self-Managed Remote MCP Server を参照してください。

MCP Inspector を使用した開発

MCP Server の開発を反復する最も簡単な方法は、MCP inspector を使用することです。MCP inspector の詳細は https://modelcontextprotocol.io/docs/tools/inspector で確認できます

  1. 開発サーバーを起動します:

    pnpm watch # Keep this running in one terminal
    
  2. 別のターミナルで inspector を起動します:

    pnpm inspector
    
  3. 環境を構成します:

    • inspector UI の Environment Variables セクションに CIRCLECI_TOKEN を追加します
    • トークンには CircleCI プロジェクトへの読み取りアクセス権が必要です
    • 必要に応じて CircleCI ベース URL を設定します(デフォルトは https://circleci.com)

テスト

  • テストスイートを実行します:

    pnpm test
    
  • 開発中にウォッチモードでテストを実行します:

    pnpm test:watch
    

より詳細なコントリビューションガイドラインについては、CONTRIBUTING.md を参照してください