mcpField
T
TeamCity CI/CD

TeamCity CI/CD

ローカル
blog.wentland.ioクラウド・インフラ02 週間前に更新

TeamCity CI/CD について

readonly-mcp-teamcity は JetBrains TeamCity を調査するための読み取り専用 MCP サーバーです。AI エージェントがプロジェクト、ビルド、ログ、テスト、インフラ情報を参照でき、GET リクエストのみを使うため TeamCity を変更しません。

主な機能

  1. 01プロジェクトとビルド構成を閲覧
  2. 02ビルドの検索と統計の確認
  3. 03ビルドログの取得と検索
  4. 04失敗の診断とテスト結果の確認
  5. 05キュー、エージェント、変更の確認

活用シーン

  1. 01プロジェクト内のビルド構成を検索
  2. 02失敗したビルドとログのエラーを調査
  3. 03失敗テストと進行中の調査を確認
  4. 04オフラインのビルドエージェントとキューを確認

MCP 対応

TeamCity のプロジェクト、ビルド、ログ、テスト、エージェント、変更情報を読み取り専用ツールとして MCP クライアントに提供します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"desty2k-teamcity": {
"command": "uvx",
"args": [
"readonly-mcp-teamcity"
],
"env": {
"TEAMCITY_BASE_URL": "<TEAMCITY_BASE_URL>",
"TEAMCITY_TOKEN": "<TEAMCITY_TOKEN>"
}
}
}
}
起動コマンドuvx readonly-mcp-teamcity
設定が必要な環境変数
TEAMCITY_BASE_URLTeamCity server base URL (e.g., https://teamcity.example.com)
TEAMCITY_TOKENシークレットTeamCity REST API bearer token (scope it read-only)

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

パッケージ
pypireadonly-mcp-teamcity1.0.1

ツール

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

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

詳細

readonly-mcp-teamcity

CI PyPI Python License: MIT

AI エージェントが JetBrains TeamCity サーバーのプロジェクト、ビルド構成、ビルド、ログ、テスト結果、問題、キュー、エージェント、VCS 変更を参照できる、読み取り専用の Model Context Protocol(MCP)サーバーです。29 個のツールはすべて読み取り専用です。

クイックスタート

uv がインストールされていれば、ほかにインストールするものはありません。

claude mcp add teamcity \
  -e TEAMCITY_BASE_URL=https://teamcity.example.com \
  -e TEAMCITY_TOKEN=your-token \
  -- uvx readonly-mcp-teamcity

uvx はパッケージをキャッシュされた隔離環境にダウンロードして実行します。 Python 3.11 以降が必要です。

設計上、読み取り専用です。 このサーバーが発行するのは GET リクエストのみです(HTTP クライアントにほかのメソッドが追加されるとテストは失敗します)。TeamCity で何かをトリガー、キャンセル、ピン留め、タグ付け、変更することはできません。また、すべてのツールに readOnlyHint が付与されています。さらに防御を強化するため、TeamCity 側でトークンを読み取り専用に設定してください。トークンを参照してください。このサーバーについてはこちらの投稿、読み取り専用 MCP サーバーを構築する理由もご覧ください。

トークン

Profile → Access Tokens でトークンを作成します。Permissions scope を Limit per project に設定し、ルートプロジェクト(またはエージェントに表示させるプロジェクト)を選んで、Read-only プリセットを選択します。このようにスコープを設定したトークンは、クライアントが誤動作しても何も変更できません。

Read-only プリセットでは、TeamCity が読み取り専用として指定する 14 個の VIEW_* 権限が選択されます。これには、エージェントの詳細やサーバー設定に関するグローバル権限も含まれます。トークンに付与される権限は所有者の権限を超えません。Project viewer ロールのみを持つユーザーのトークンでもエージェント関連ツールは動作し、get_server_health はメトリクスを利用不可として報告しつつ、ヘルス項目を返します。ビルドのピン留めができないこと(HTTP 403)を含め、TeamCity 2026.2.1 で確認済みです。

ツール

プロジェクト
ツール説明
search_projects名前、ID、親プロジェクトでプロジェクトを検索し、階層を参照します。
get_project_details子プロジェクト、ビルド構成、パラメーターを含むプロジェクトの全情報です。
ビルド構成
ツール説明
search_build_configsプロジェクト ID、ビルドタイプ ID、一時停止状態で構造化検索します。
find_build_config構成名とプロジェクトパスをあいまい検索し、曖昧な一致を示して該当するプロジェクトを一覧表示します。
get_build_config_detailsステップ、トリガー、パラメーター、VCS ルート、設定、エージェント要件を取得します。
get_build_config_branches構成がビルドできるブランチと、デフォルト/アクティブ状態を取得します。
ビルド
ツール説明
search_builds構成、プロジェクト、ステータス、ブランチ、日付などで絞り込んでビルド履歴を検索します。
get_build_details1 件のビルドのステータス、エージェント、リビジョン、パラメーター、依存関係、テスト概要、タグを取得します。
get_build_statistics所要時間、テスト数、カバレッジ、成果物サイズなどの数値メトリクスを取得します。
get_build_chainスナップショット依存関係のチェーンを上流(依存先)と下流(依存元)にたどります。
ログ
ツール説明
get_build_logtail と行範囲指定に対応した、ページ単位のログ取得です。
search_build_logビルドログを全文検索し、前後のコンテキストを取得します。
テストと問題
ツール説明
diagnose_buildビルド失敗の原因を1回の呼び出しで確認します。問題、失敗したテスト(ミュートされていないものを先に表示)、ログのエラー行を取得します。
get_build_test_resultsビルドのテスト実行を、ステータスで絞り込んで取得します。
get_test_details1件のテスト実行について、失敗理由、履歴の範囲、ミュート/調査の状態を取得します。
get_build_problems構造化された失敗理由(コンパイル、終了コード、依存関係)を取得します。
search_investigationsプロジェクト、ビルド構成、担当者でアクティブな調査を検索します。
list_muted_tests現在ミュートされているテストと、その適用範囲、ミュートした人、理由を表示します。
インフラストラクチャ
ツール説明
get_build_queueエージェントを待機中のビルドと、待機理由を取得します。
search_agents接続/認証/有効化の状態と現在のビルドを含むビルドエージェントを検索します。
list_agent_poolsエージェント数とプロジェクト数を含むエージェントプールを一覧表示します。
get_agent_details1台のエージェントの状態、有効化/認証に関するコメント、最終アクティビティ、現在のビルドを取得します。
list_build_artifactsビルドのアーティファクトツリーを参照します(ディレクトリ1階層分)。
get_build_artifact_contentテキスト形式のアーティファクトを読み込みます(サイズ上限あり、行単位でページ分割)。
search_changesビルド、構成、プロジェクト、コミッター、または特定のコミット以降のVCS変更(コミット)を検索します。
get_change_details変更1件の、変更されたファイルの完全な一覧を取得します。
resolve_teamcity_urlTeamCityのWeb URLを解析し、プロジェクト/ビルド構成/ビルド/変更のIDを取得します。
get_server_infoTeamCityのバージョン、ビルド番号、稼働時間を取得します。
get_server_healthサーバーのヘルス項目とランタイムメトリクス(CPU、メモリ、キュー)を取得します。

インストール

インストールせずに実行します(推奨):

uvx readonly-mcp-teamcity

または、環境にインストールします:

uv tool install readonly-mcp-teamcity   # or: pip install readonly-mcp-teamcity

Docker

このイメージは、ポート8080でストリーム可能なHTTPトランスポートを提供します。このトランスポートには認証機能がないため、ホストのループバックアドレスでのみ公開してください:

docker run --rm \
  -e TEAMCITY_BASE_URL=https://teamcity.example.com \
  -e TEAMCITY_TOKEN=your-token \
  -p 127.0.0.1:8080:8080 \
  ghcr.io/desty2k/readonly-mcp-teamcity:latest

設定

すべての設定は TEAMCITY_* 環境変数で行います。

変数必須デフォルト説明
TEAMCITY_BASE_URLはい—TeamCityサーバーのベースURL(例:https://teamcity.example.com)。
TEAMCITY_TOKENはい—REST APIのベアラートークン。トークンを参照してください。
TEAMCITY_TIMEOUTいいえ30HTTPリクエストのタイムアウト(秒)。
TEAMCITY_MAX_RETRIESいいえ3一時的なネットワークエラー/5xxエラーに対する再試行回数。
TEAMCITY_POOL_MAX_CONNECTIONSいいえ20httpx接続プールのサイズ。
TEAMCITY_DEFAULT_LIMITいいえ50リストツールのデフォルトのページサイズ。
TEAMCITY_MAX_LIMITいいえ500最大ページサイズ。
TEAMCITY_INDEX_REFRESH_INTERVALいいえ300ファジーインデックスを更新する間隔(秒)。読み込みに失敗した場合は、より早く再試行します。
TEAMCITY_LOG_CACHE_MAX_BYTESいいえ67108864ビルドログキャッシュのサイズ上限。実行中のビルドのログはキャッシュされません。
TEAMCITY_LOG_CACHE_TTLいいえ300完了したビルドのログがキャッシュに保持される秒数。
TEAMCITY_TRANSPORTいいえstdiostdio、http、または sse。
TEAMCITY_HTTP_HOSTいいえ127.0.0.1http/sseのバインドアドレス。これらのトランスポートには認証機能がありません。ループバック以外のアドレスを指定すると警告が記録されます。
TEAMCITY_HTTP_PORTいいえ8080http/sseトランスポートのポート。
TEAMCITY_LOG_FORMATいいえjsonjson(本番環境)または text(ローカル開発環境)。
TEAMCITY_LOG_LEVELいいえINFODEBUG、INFO、WARNING、または ERROR。

コピーして貼り付けられるテンプレートについては、.env.exampleを参照してください。

OpenTelemetry トレース

トレースはオプトイン方式で、無効の場合は何も行いません。基本インストールには OTel SDK は含まれていません。追加機能をインストールして有効にすると、上流の TeamCity 呼び出しごとにスパンをエクスポートします。

pip install 'readonly-mcp-teamcity[otel]'
export TEAMCITY_OTEL_ENABLED=true
export TEAMCITY_OTEL_ENDPOINT=http://localhost:4317   # optional; falls back to OTEL_EXPORTER_OTLP_ENDPOINT
変数デフォルト説明
TEAMCITY_OTEL_ENABLEDfalseトレースのマスタースイッチです。
TEAMCITY_OTEL_SERVICE_NAMEreadonly-mcp-teamcityすべてのスパンの service.name です。
TEAMCITY_OTEL_ENDPOINT未設定OTLP コレクターのエンドポイントです。
TEAMCITY_OTEL_PROTOCOLgrpcgrpc または http/protobuf です。
TEAMCITY_OTEL_CONSOLE_EXPORTfalseスパンも stderr に出力します。

MCP クライアントの設定

Claude Desktop

claude_desktop_config.json(macOS では ~/Library/Application Support/Claude/、Windows では %APPDATA%\Claude\)に追加します。

{
  "mcpServers": {
    "teamcity": {
      "command": "uvx",
      "args": ["readonly-mcp-teamcity"],
      "env": {
        "TEAMCITY_BASE_URL": "https://teamcity.example.com",
        "TEAMCITY_TOKEN": "your-token"
      }
    }
  }
}
Claude Code

クイックスタートを参照してください。

比較

2026 年 11 月時点の情報です。これを前提にする前に、各プロジェクトの情報をご確認ください。

このサーバーJetBrains MCP (2026.1+)Daghis 2.12.12itcaat 1.0.8kate-horshchar 1.4.0
書き込み操作設計上、一切ありませんデフォルトの安全モードでは個人用ビルドのみ。brave mode ではさらに実行できますデフォルトでは実行とキャンセルが可能。エージェントが切り替えられる完全モードもあります実行、キャンセル、ピン留め、タグ付けが可能。無効化するスイッチはありませんありません。GET のみです
実行場所お使いのマシンTeamCity サーバー(/app/mcp)お使いのマシンお使いのマシンお使いのマシン
曖昧な名前から設定を検索名前とプロジェクトパスを対象にしたファジー検索ドキュメントに記載なしロケーターのみロケーターの部分一致なし
TeamCity URL を貼り付け新形式、短縮形式、従来形式の URL に対応ドキュメントに記載なしなしなしなし

出典:JetBrains AI エージェント連携、 JetBrains/teamcity-mcp、 Daghis/teamcity-mcp、 itcaat/teamcity-mcp、 kate-horshchar/teamcity-qa-mcp。 JetBrains プラグインの README とヘルプページでは、brave mode がデフォルトで 有効かどうかの記述が一致していません。サーバーの設定をご確認ください。

エージェントに TeamCity 上で操作させたい場合は、組み込みサーバーをお使いください。エージェントには閲覧だけさせたい場合は、こちらをお使いください。

質問の例

  • 「auth サービスのデプロイパイプラインを探してください。」
  • 「Proj_Build の直近 10 件のビルドと、失敗したものを表示してください。」
  • 「ビルド 12345 が失敗した理由は何ですか?」(diagnose_build を 1 回呼び出します)
  • 「そのビルドで失敗したテストと、エラーの内容を教えてください。」
  • 「ビルドログで OutOfMemoryError を検索してください。」
  • 「現在オフラインのエージェントはどれですか?」
  • 「ビルドキューの内容と、待機している理由を教えてください。」
  • 「Payments プロジェクトの失敗を調査しているのは誰ですか?」
  • 「このビルドに含まれるコミットを教えてください。」
  • 「https://teamcity.example.com/buildConfiguration/Proj_Build/12345 を解決してください。」

開発

git clone https://github.com/desty2k/readonly-mcp-teamcity
cd readonly-mcp-teamcity
uv sync --all-extras
uv run pytest --cov
uv run ruff check .
uv run ruff format --check .

実サーバーに対するライブスモークテスト(認証情報は .env から読み込みます):

uv run python tests/smoke_test.py

ライセンス

MIT — LICENSE を参照してください。

コメント

MCP は初めてですか?

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

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