MCP Jenkins について
MCP Jenkinsは、AnthropicのMCP仕様を通じてJenkinsの操作をAIクライアントに提供します。CI/CD情報の参照や操作を必要とするチーム向けで、ビルド、ノード、キュー、テストレポート、アーティファクト、プラグインを扱い、読み取り専用モードも選べます。
主な機能
- 01ジョブ、ノード、ビルドキューの検索
- 02ビルドログ、テスト結果、アーティファクトの確認
- 03ビルドの開始・停止とパイプライン入力の送信
- 04プラグインの状態と依存関係グラフの確認
- 05読み取り専用モードと複数のトランスポート
活用シーン
- 01AIクライアントからJenkinsのビルド状況を確認
- 02失敗したテストやビルドコンソール出力を確認
- 03キュー内のジョブをキャンセル、または実行中ビルドを停止
- 04プラグインの更新、問題、依存関係を確認
MCP 対応
MCPサーバーは、Jenkinsのジョブ、ビルド、ノード、キュー、アーティファクト、プラグインの操作をツールとしてMCPクライアントに公開します。stdio、SSE、streamable HTTPに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Jenkins
Model Context Protocol(MCP)は、Anthropic の MCP 仕様に準拠し、Jenkins と AI 言語モデルを橋渡しするオープンソースの実装です。このプロジェクトでは、データのプライバシーとセキュリティを維持しながら、Jenkins ツールとの安全でコンテキストに応じた AI インタラクションを実現します。
インストール
次のインストール方法から 1 つ選択してください。
# Using uv (recommended)
pip install uv
uvx mcp-jenkins
# Using pip
pip install mcp-jenkins
mcp-jenkins
# Docker
docker pull ghcr.io/lanbaoshen/mcp-jenkins:latest
docker run -p 9887:9887 --rm ghcr.io/lanbaoshen/mcp-jenkins:latest --transport streamable-http
コマンドライン引数
コマンドライン引数を使用する場合、次のように Jenkins サーバーの詳細を指定できます。
# Simple streamable-http example
uvx mcp-jenkins --transport streamable-http
| 引数 | 説明 | 必須 |
|---|---|---|
--env-file | 設定の読み込み元となる .env ファイルのパスです。以下の環境変数/.env ファイルを参照してください。 | いいえ |
--jenkins-url | Jenkins サーバーの URL です。(HTTP アプリではヘッダー x-jenkins-url で設定できます) | いいえ |
--jenkins-username | Jenkins 認証用のユーザー名です。(HTTP アプリではヘッダー x-jenkins-username で設定できます)パスワードと併せて設定するか、両方とも未設定にすると、Jenkins に匿名でアクセスできます。 | いいえ |
--jenkins-password | Jenkins 認証用のパスワードまたは API トークンです。(HTTP アプリではヘッダー x-jenkins-password で設定できます)ユーザー名と併せて設定するか、両方とも未設定にすると、Jenkins に匿名でアクセスできます。その場合にサーバーが実行できる操作は、Jenkins における匿名ユーザーの権限によって決まります。 | いいえ |
--jenkins-timeout | Jenkins API リクエストのタイムアウト時間(秒)です。デフォルトは 5 秒です。 | いいえ |
--jenkins-verify-ssl/--no-jenkins-verify-ssl | Jenkins への接続時に SSL 証明書を検証するかどうかを指定します。デフォルトでは検証します。 | いいえ |
--jenkins-session-singleton/--no-jenkins-session-singleton | 同じセッション内のすべてのリクエストで、単一の Jenkins クライアントを使用するかどうかを指定します。デフォルトは True です。 | いいえ |
--read-only | 読み取り専用モードを有効にするかどうかを指定します。デフォルトは False です。 | いいえ |
--transport | 通信に使用するトランスポート方式です。選択肢は stdio、sse、streamable-http です。デフォルトは stdio です。 | いいえ |
--host | streamable-http トランスポートのホストアドレスです。デフォルトは 0.0.0.0 です。 | いいえ |
--port | streamable-http トランスポートのポート番号です。デフォルトは 9887 です。 | いいえ |
環境変数/.env ファイル
コマンドラインで認証情報を渡す代わりに、環境変数として設定するか、.env ファイルに記述できます。
JENKINS_URL=https://jenkins.example.com
JENKINS_USERNAME=alice
JENKINS_PASSWORD=xxxx
JENKINS_TIMEOUT=5
JENKINS_VERIFY_SSL=true
現在のディレクトリ(または親ディレクトリ)に .env ファイルがある場合、フラグを指定しなくても自動的に読み込まれます。
uvx mcp-jenkins --transport streamable-http
特定の場所にある .env ファイルを読み込むには、--env-file を使用します。
uvx mcp-jenkins --env-file /path/to/.env --transport streamable-http
実際の環境ですでに設定されている値は .env ファイルより優先され、--jenkins-* CLI フラグはその両方より優先されます。
設定と使用方法
Jetbrains Github Copilot
- Jetbrains の設定を開きます。
- Github Copilot > MCP > Configure に移動します。
- 次の設定を追加します。
{
"servers": {
"my-mcp-server": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-jenkins",
"--jenkins-url=xxx",
"--jenkins-username=xxx",
"--jenkins-password=xxx"
]
}
}
}
VSCode Copilot Chat
- ローカルで設定する場合は、ワークスペースに
mcp.jsonファイルを含む.vscodeフォルダーを作成するか、設定メニューからsettings.jsonを編集します。 - 次の設定を挿入します。
- SSE モード
{
"servers": {
"jenkins": {
"url": "http://localhost:9887/sse",
"type": "sse"
}
}
}
- Streamable-Http モード
{
"servers": {
"mcp-jenkins-mcp": {
"autoApprove": [],
"disabled": false,
"timeout": 60,
"type": "streamableHttp",
"url": "http://localhost:9887/mcp"
}
}
}
次のコマンドで Jenkins MCP サーバーを実行します。
uvx mcp-jenkins \
--jenkins-url xxx \
--jenkins-username xxx \
--jenkins-password xxx \
--transport sse
ヘルスチェックエンドポイント
--transport streamable-http または --transport sse を指定して実行すると、サーバーはプレーンな HTTP 稼働状態エンドポイントを公開します。
GET /healthz -> 200 OK
常に 200 を返し、x-jenkins-* 認証ヘッダーを迂回するため、Jenkins の認証情報なしで Kubernetes の稼働状態/準備状態プローブとして直接安全に使用できます。プローブの例:
livenessProbe:
httpGet:
path: /healthz
port: 9887
initialDelaySeconds: 5
periodSeconds: 10
注:これは稼働状態のチェックのみです。上流の Jenkins サーバーへの接続は確認しません。
利用可能なツール
| ツール | 説明 |
|---|---|
get_item | 名前を指定して特定の項目を取得します。 |
get_item_config | 特定の項目の設定を取得します。 |
get_item_parameters | 特定の項目のパラメーターを取得します。 |
get_all_items | Jenkins のすべての項目を取得します。 |
query_items | パターンに基づいて項目を検索します。 |
build_item | 項目をビルドします。 |
get_all_nodes | Jenkins のすべてのノードを取得します。 |
get_node | 名前を指定して特定のノードを取得します。 |
get_node_config | 特定のノードの設定を取得します。 |
get_all_queue_items | Jenkins のすべてのキュー項目を取得します。 |
get_queue_item | ID を指定して特定のキュー項目を取得します。 |
cancel_queue_item | ID を指定して特定のキュー項目をキャンセルします。 |
get_build | ジョブ名とビルド番号を指定して特定のビルドを取得します。 |
get_build_scripts | 特定のビルドに関連付けられたスクリプトを取得します。 |
get_build_console_output | 特定のビルドのコンソール出力を取得します。 |
get_build_parameters | 特定のビルドのパラメーターを取得します。 |
get_build_test_report | 特定のビルドのテストレポートを取得します。 |
get_build_test_failures | 特定のビルドで失敗したテストを取得します。 |
get_running_builds | Jenkins で現在実行中のすべてのビルドを取得します。 |
stop_build | ジョブ名とビルド番号を指定して特定のビルドを停止します。 |
get_pending_inputs | 入力待ちで一時停止しているビルドの保留中の入力ステップを取得します。 |
submit_input | ビルドのパイプライン入力ステップを続行または中止します。 |
get_all_build_artifacts | 特定のビルドのアーティファクトを一覧表示します。 |
get_build_artifact | 特定のビルドからアーティファクトをダウンロードします。 |
get_build_artifact_url | 特定のビルドのアーティファクトの直接 URL を取得します。 |
get_view | 名前を指定して特定のビューを取得します。 |
get_all_views | 特定のビューの設定を取得します。 |
get_all_plugins | インストール済みのすべてのプラグインを取得します。 |
get_plugin | 短縮名を指定して特定のプラグインを取得します。 |
get_plugins_with_problems | 問題(依存関係の不足、バージョンの不一致など)があるプラグインを取得します。 |
get_plugins_with_backup | ダウングレード可能なプラグインを取得します。 |
get_plugins_with_updates | 利用可能なアップデートがあるプラグインを取得します。 |
get_plugin_dependency_graph | プラグインの依存関係グラフを Graphviz 形式で取得します。 |
run_groovy_script | Jenkins で任意の Groovy スクリプトを実行します。 |
注:get_pending_inputs は、pipeline-stage-view に同梱されている pipeline-rest-api プラグインが提供する wfapi エンドポイントを読み取ります。submit_input でこのプラグインが必要になるのは input_id を省略した場合のみです。input_id を明示的に渡せば、pipeline-input-step プラグインを備えた任意の Jenkins で動作します。
コントリビューション
ライセンス
MIT ライセンスの下で公開されています。詳細は LICENSE ファイルをご覧ください。これは Jenkins の公式製品ではありません。
スター履歴
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。