Tektoncd Model Context Protocol server について
Tekton MCP Server は、Kubernetes クラスター内の Tekton リソースを MCP クライアントに公開する MCP サーバーで、現在は tektoncd/pipeline を中心に対応しています。stdio と Streamable HTTP の両方のトランスポートに対応し、AI クライアントから CI/CD パイプラインを管理するプラットフォームエンジニア向けです。現在も活発に開発が進められています。
主な機能
- 01Pipeline や Task などのリソースの一覧、取得、作成、更新、削除
- 02TaskRun のログの取得
- 03PipelineRun と TaskRun の開始と再開
- 04Artifact Hub の Task と Pipeline のインストールとトリガー
- 05stdio と Streamable HTTP のトランスポート対応
活用シーン
- 01MCP クライアントからクラスター内の PipelineRun の状態を確認する
- 02失敗した TaskRun のログを調べる
- 03Artifact Hub からコミュニティの Task をインストールして実行する
MCP 対応
MCP サーバーとして、list_pipelines や create_pipelinerun などの Tekton リソース操作ツールを MCP クライアントに提供し、Kubernetes の認証情報を使ってクラスターにアクセスします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Tekton Model Context Protocol サーバー
Tekton MCP サーバーは、Tekton のリソースを
Model Context Protocol (MCP) クライアントに公開します。現在は
tektoncd/pipeline に焦点を当てており、
stdio と Streamable HTTP の両方のトランスポートをサポートしています。
重要
このプロジェクトは活発に開発中です。非本番のクラスターでテストし、 サーバーと接続された MCP クライアントの両方に付与されるアクセス権を確認してください。
前提条件
サーバーには以下が必要です。
- Tekton Pipelines がインストールされた Kubernetes クラスターへのアクセス
- ローカルで使用する場合は kubeconfig、Kubernetes にデプロイする場合はクラスター内の サービスアカウント
- ソースからビルドする場合は
go.modに記載されたバージョンの Go
ソースチェックアウトからマニフェストをデプロイするには、
kubectl と
ko も必要です。
ソースからビルドする
git clone https://github.com/tektoncd/mcp-server.git
cd mcp-server
mkdir -p bin
go build -mod=vendor -o bin/tekton-mcp-server ./cmd/tekton-mcp-server
サーバーは標準の Kubernetes クライアント設定を使用します。実行する前に、
kubectl config current-context が目的のクラスターを指していることを確認してください。
ローカルで実行する
stdio
MCP クライアントがサーバーをサブプロセスとして起動する場合は stdio を使用します。
./bin/tekton-mcp-server -transport=stdio
一般的な MCP クライアントのエントリは次のようになります。周囲の設定は 使用するクライアントに合わせて調整してください。
{
"mcpServers": {
"tekton": {
"command": "/absolute/path/to/bin/tekton-mcp-server",
"args": ["-transport=stdio"]
}
}
}
Streamable HTTP
ローカル開発では localhost にバインドします。
./bin/tekton-mcp-server -transport=http -address=127.0.0.1:8080
MCP クライアントを http://127.0.0.1:8080 に接続します。
Kubernetes にデプロイする
KO_DOCKER_REPO をクラスターからアクセス可能なレジストリに設定し、次にイメージを
ビルドしてマニフェストを適用します。
export KO_DOCKER_REPO=registry.example.com/YOUR-USER/mcp-server
ko apply -R -f config/
kubectl -n tekton-mcp rollout status deployment/tekton-mcp-server
クラスター内のサービスにローカルからアクセスするには、次のようにします。
kubectl -n tekton-mcp port-forward service/tekton-mcp-server 8080:8080
ko delete -R -f config/ は、含まれるすべてのリソースを削除します。これには
tekton-mcp 名前空間と、その名前空間に保存されているその他すべてのものが含まれます。
この破壊的なクリーンアップを意図している場合にのみ使用してください。
互換性
サーバーは Tekton v1 リソースを使用し、
go.mod に記録された Kubernetes、Tekton Pipelines、MCP Go SDK の
バージョンに対してビルドおよびテストされています。より広範な互換性マトリクスが
公開されるまでは、サーバーを実際に実行するクラスターの正確なバージョンでテストしてください。
セキュリティ
サーバーは、kubeconfig またはサービスアカウントの権限を使用して Tekton リソースを 読み取り、変更できます。いくつかのツールはリソースの作成、パッチ適用、開始、再起動、 削除を行うため、評価中は専用の最小権限の ID と使い捨ての名前空間を使用してください。
HTTP トランスポートは認証や TLS を提供しません。認証と TLS 終端を行うプロキシなしで、 信頼できないネットワークに公開しないでください。付属の開発用マニフェストは クラスター全体の権限を付与するため、共有クラスターで使用する前に確認してください。
脆弱性は プロジェクトのセキュリティポリシー を通じて非公開で報告してください。脆弱性の疑いについて公開 issue を作成しないでください。
開発とコントリビューション
ビルド、テスト、依存関係の更新、クラスターへのデプロイ、デバッグの手順については
DEVELOPMENT.md を参照してください。コントリビューションは
CONTRIBUTING.md のプロセスに従います。
このプロジェクトは
tektoncd/community#1194 で提案され、承認されました。
ツール
リスト操作
list_pipelines – フィルタリングオプションを使用してクラスター内の Pipeline を一覧表示する
namespace: Pipeline を一覧表示する名前空間 (string, 必須)prefix: Pipeline をフィルタリングする名前のプレフィックス (string, 任意)label-selector: Pipeline をフィルタリングするラベルセレクター (string, 任意)
list_pipelineruns – フィルタリングオプションを使用してクラスター内の PipelineRun を一覧表示する
namespace: PipelineRun を一覧表示する名前空間 (string, 必須)prefix: PipelineRun をフィルタリングする名前のプレフィックス (string, 任意)label-selector: PipelineRun をフィルタリングするラベルセレクター (string, 任意)
list_tasks – フィルタリングオプションを使用してクラスター内の Task を一覧表示する
namespace: Task を一覧表示する名前空間 (文字列, 必須)prefix: Task をフィルタリングする名前プレフィックス (文字列, オプション)label-selector: Task をフィルタリングするラベルセレクター (文字列, オプション)
list_taskruns – フィルタリングオプションを使用してクラスター内の TaskRun を一覧表示する
namespace: TaskRun を一覧表示する名前空間 (文字列, 必須)prefix: TaskRun をフィルタリングする名前プレフィックス (文字列, オプション)label-selector: TaskRun をフィルタリングするラベルセレクター (文字列, オプション)
list_stepactions – フィルタリングオプションを使用してクラスター内の Step Action を一覧表示する
namespace: Step Action を一覧表示する名前空間 (文字列, 必須)prefix: Step Action をフィルタリングする名前プレフィックス (文字列, オプション)label-selector: Step Action をフィルタリングするラベルセレクター (文字列, オプション)
作成操作
create_pipeline – YAML 定義から新しい Pipeline を作成する
namespace: Pipeline を作成する名前空間 (文字列, オプション, デフォルト: "default")yaml: Pipeline の YAML 定義 (文字列, 必須)
create_task – YAML 定義から新しい Task を作成する
namespace: Task を作成する名前空間 (文字列, オプション, デフォルト: "default")yaml: Task の YAML 定義 (文字列, 必須)
create_pipelinerun – YAML 定義から新しい PipelineRun を作成する、または Pipeline から生成する
namespace: PipelineRun を作成する名前空間 (文字列, オプション, デフォルト: "default")yaml: PipelineRun の YAML 定義 (文字列, オプション)generateName: PipelineRun の生成名プレフィックス (文字列, オプション)
create_taskrun – YAML 定義から新しい TaskRun を作成する
namespace: TaskRun を作成する名前空間 (文字列, オプション, デフォルト: "default")yaml: TaskRun の YAML 定義 (文字列, オプション)generateName: TaskRun の生成名プレフィックス (文字列, オプション)
取得操作
get_pipeline – 名前で特定の Pipeline を取得する
name: 取得する Pipeline の名前 (文字列, 必須)namespace: Pipeline の名前空間 (文字列, オプション, デフォルト: "default")output: 出力形式 - json または yaml (文字列, オプション, デフォルト: "yaml")
get_task – 名前で特定の Task を取得する
name: 取得する Task の名前 (文字列, 必須)namespace: Task の名前空間 (文字列, オプション, デフォルト: "default")output: 出力形式 - json または yaml (文字列, オプション, デフォルト: "yaml")
get_pipelinerun – 名前で特定の PipelineRun を取得する
name: 取得する PipelineRun の名前 (文字列, 必須)namespace: PipelineRun の名前空間 (文字列, オプション, デフォルト: "default")output: 出力形式 - json または yaml (文字列, オプション, デフォルト: "yaml")
get_taskrun – 名前で特定の TaskRun を取得する
name: 取得する TaskRun の名前 (文字列, 必須)namespace: TaskRun の名前空間 (文字列, オプション, デフォルト: "default")output: 出力形式 - json または yaml (文字列, オプション, デフォルト: "yaml")
get_taskrun_logs - 指定された TaskRun のログを取得する
name: ログを取得する TaskRun の名前または参照 (文字列, 必須)namespace: TaskRun が配置されている名前空間 (文字列, オプション, デフォルト: "default")
更新操作
update_pipeline – 既存の Pipeline を更新する
name: 更新する Pipeline の名前 (文字列, 必須)namespace: Pipeline の名前空間 (文字列, オプション, デフォルト: "default")yaml: Pipeline の更新された YAML 定義 (文字列, 必須)
update_task – 既存の Task を更新する
name: 更新する Task の名前 (文字列, 必須)namespace: Task の名前空間 (文字列, オプション, デフォルト: "default")yaml: Task の更新された YAML 定義 (文字列, 必須)
patch_pipeline – 既存の Pipeline に JSON パッチを適用する
name: パッチを適用する Pipeline の名前(string、必須)namespace: Pipeline の名前空間(string、任意、デフォルト: "default")patch: Pipeline に適用する JSON パッチ(string、必須)
削除操作
delete_pipeline – Pipeline を削除する
name: 削除する Pipeline の名前(string、必須)namespace: Pipeline の名前空間(string、任意、デフォルト: "default")
delete_task – Task を削除する
name: 削除する Task の名前(string、必須)namespace: Task の名前空間(string、任意、デフォルト: "default")
delete_pipelinerun – PipelineRun を削除する
name: 削除する PipelineRun の名前(string、必須)namespace: PipelineRun の名前空間(string、任意、デフォルト: "default")
delete_taskrun – TaskRun を削除する
name: 削除する TaskRun の名前(string、必須)namespace: TaskRun の名前空間(string、任意、デフォルト: "default")
delete_all_pipelineruns – セレクターに基づいて複数の PipelineRun を削除する
namespace: PipelineRun を削除する名前空間(string、任意、デフォルト: "default")labelSelector: 削除する PipelineRun を絞り込むラベルセレクター(string、任意)fieldSelector: 削除する PipelineRun を絞り込むフィールドセレクター(string、任意)
開始/再起動操作
start_pipeline – Pipeline を開始する
name: 開始する Pipeline の名前または参照(string、必須)namespace: Pipeline が存在する名前空間(string、任意、デフォルト: "default")
start_task – Task を開始する
name: 開始する Task の名前または参照(string、必須)namespace: Task が存在する名前空間(string、任意、デフォルト: "default")
restart_pipelinerun – PipelineRun を再起動する
name: 再起動する PipelineRun の名前または参照(string、必須)namespace: PipelineRun が存在する名前空間(string、任意、デフォルト: "default")
restart_taskrun – TaskRun を再起動する
name: 再起動する TaskRun の名前または参照(string、必須)namespace: TaskRun が存在する名前空間(string、任意、デフォルト: "default")
Artifact Hub 連携
MCP サーバーは Artifact Hub との連携を提供し、コミュニティカタログから Tekton タスクとパイプラインを検出、インストール、トリガーできます。
Artifact Hub 検出操作
list_artifacthub_tasks – Artifact Hub から Tekton Task を一覧表示する
query: タスクを絞り込む検索クエリ(string、任意)limit: 返す結果の最大数(integer、任意、デフォルト: 20)
list_artifacthub_pipelines – Artifact Hub から Tekton Pipeline を一覧表示する
query: パイプラインを絞り込む検索クエリ(string、任意)limit: 返す結果の最大数(integer、任意、デフォルト: 20)
Artifact Hub インストール操作
install_artifacthub_task – Artifact Hub から Tekton Task をインストールする
packageId: インストールするタスクの Artifact Hub パッケージ ID(string、必須)version: インストールするタスクのバージョン(string、任意)namespace: タスクをインストールする名前空間(string、任意、デフォルト: "default")
install_artifacthub_pipeline – Artifact Hub から Tekton Pipeline をインストールする
packageId: インストールするパイプラインの Artifact Hub パッケージ ID(string、必須)version: インストールするパイプラインのバージョン(string、任意)namespace: パイプラインをインストールする名前空間(string、任意、デフォルト: "default")
Artifact Hub トリガー操作
trigger_artifacthub_task – Artifact Hub からインストールした Task をトリガーする
name: トリガーするインストール済みタスクの名前(string、必須)namespace: タスクが存在する名前空間(string、任意、デフォルト: "default")params: タスクに渡すパラメーター(object、任意)
trigger_artifacthub_pipeline – Artifact Hub からインストールされたパイプラインをトリガーする
name: トリガーするインストール済みパイプラインの名前(文字列、必須)namespace: パイプラインが存在する名前空間(文字列、任意、デフォルト: "default")params: パイプラインに渡すパラメータ(オブジェクト、任意)
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。