mcpField
T
Tektoncd Model Context Protocol server

Tektoncd Model Context Protocol server

ローカル
github.com/tektoncdクラウド・インフラ277 週間前に更新

Tektoncd Model Context Protocol server について

Tekton MCP Server は、Kubernetes クラスター内の Tekton リソースを MCP クライアントに公開する MCP サーバーで、現在は tektoncd/pipeline を中心に対応しています。stdio と Streamable HTTP の両方のトランスポートに対応し、AI クライアントから CI/CD パイプラインを管理するプラットフォームエンジニア向けです。現在も活発に開発が進められています。

主な機能

  1. 01Pipeline や Task などのリソースの一覧、取得、作成、更新、削除
  2. 02TaskRun のログの取得
  3. 03PipelineRun と TaskRun の開始と再開
  4. 04Artifact Hub の Task と Pipeline のインストールとトリガー
  5. 05stdio と Streamable HTTP のトランスポート対応

活用シーン

  1. 01MCP クライアントからクラスター内の PipelineRun の状態を確認する
  2. 02失敗した TaskRun のログを調べる
  3. 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: パイプラインに渡すパラメータ(オブジェクト、任意)

コメント

MCP は初めてですか?

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

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