AWS CodePipeline MCP Server について
AWS CodePipeline の管理機能を Windsurf と Cascade に提供する MCP サーバーです。自然言語でパイプラインを扱いたいチーム向けに、実行管理、承認、ログ、メトリクス、Webhook 操作を提供します。
主な機能
- 01パイプライン一覧・定義・状態の確認
- 02実行の表示・開始・停止
- 03アクションの承認や失敗ステージの再試行
- 04実行ログとパフォーマンス指標の確認
- 05リソースタグと Webhook の管理
活用シーン
- 01パイプラインの状態と実行履歴の確認
- 02パイプラインの開始や実行の停止
- 03手動アクションの承認や失敗ステージの再試行
- 04指標の確認と Webhook トリガーの設定
MCP 対応
Windsurf の Cascade に AWS CodePipeline 用ツールを提供し、パイプラインや実行、その関連操作の照会・管理を可能にします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AWS CodePipeline MCP Server
これは AWS CodePipeline と連携する Model Context Protocol(MCP)サーバーです。Windsurf と Cascade を通じて、パイプラインを管理できます。このサーバーは、AWS CodePipeline サービスとやり取りするための標準化されたインターフェースを提供します。
作者: Cuong T Nguyen
機能
- すべてのパイプラインを一覧表示
- パイプラインの状態と詳細なパイプライン定義を取得
- パイプラインの実行を一覧表示
- 手動承認アクションを承認または拒否
- 失敗したステージを再試行
- パイプラインの実行をトリガー
- パイプライン実行ログを表示
- パイプラインの実行を停止
- パイプラインリソースにタグを付与
- パイプラインを自動的にトリガーする Webhook を作成
- パイプラインのパフォーマンス指標を取得
前提条件
- Node.js(v14 以降)
- CodePipeline にアクセスできる AWS アカウント
- CodePipeline および CloudWatch(指標の読み取り)の権限を持つ AWS 認証情報
- Cascade AI アシスタントを備えた Windsurf IDE
インストール
- このリポジトリをクローンします。
git clone https://github.com/cuongdev/mcp-codepipeline-server.git
cd mcp-codepipeline-server
- 依存関係をインストールします。
npm install
.env.exampleテンプレートを基に.envファイルを作成します。
cp .env.example .env
- AWS の設定を
.envファイルに記入します(.env.exampleを参照)。
AWS_REGION=us-east-1
AWS_PROFILE=your-aws-profile
注: セキュリティのため、
.envファイルをバージョン管理にコミットしないでください。
AWS 認証
.env に長期間有効なアクセスキーを設定する必要はありません。次のいずれかの方法を選択してください。
| 方法 | 設定 |
|---|---|
| AWS プロファイル(ローカル開発に推奨) | AWS_PROFILE=my-profile — ~/.aws/credentials / ~/.aws/config を使用します |
| AWS SSO | aws configure sso を実行し、次に aws sso login --profile my-sso を実行して、AWS_PROFILE=my-sso を設定します |
| 静的キー | AWS_ACCESS_KEY_ID と AWS_SECRET_ACCESS_KEY を設定します(一時的な認証情報の場合は AWS_SESSION_TOKEN も設定します) |
| IAM ロール | ロールをアタッチした状態で EC2/ECS/Lambda/EKS 上で実行し、AWS_REGION のみを設定します |
アクセスキーを省略すると、AWS SDK はデフォルトの認証情報プロバイダーチェーンを使用します。
AWS プロファイルの作成
プロファイルは、~/.aws/credentials と ~/.aws/config に登録される名前付きエントリです。.env または MCP 設定で AWS_PROFILE にその名前を設定します。
オプション A:アクセスキー(IAM ユーザー)
AWS CLI が必要です。
aws configure --profile codepipeline-dev
次の項目の入力を求められます。
| プロンプト | 例 |
|---|---|
| AWS Access Key ID | AKIA... |
| AWS Secret Access Key | (シークレット) |
| Default region name | us-east-1 |
| Default output format | json |
次に、.env に以下を設定します。
AWS_REGION=us-east-1
AWS_PROFILE=codepipeline-dev
オプション B:AWS SSO(IAM Identity Center)
aws configure sso --profile codepipeline-sso
プロンプトに従って入力します(SSO 開始 URL、SSO リージョン、アカウント、ロール)。その後、MCP サーバーを起動する前にログインします。
aws sso login --profile codepipeline-sso
.env に以下を設定します。
AWS_REGION=us-east-1
AWS_PROFILE=codepipeline-sso
SSO セッションには有効期限があります。認証情報エラーが表示された場合は、aws sso login を再度実行してください。
プロファイルの確認
aws sts get-caller-identity --profile codepipeline-dev
aws codepipeline list-pipelines --region us-east-1 --profile codepipeline-dev
両方のコマンドが成功すれば、MCP サーバーは同じ AWS_PROFILE と AWS_REGION を使用できます。
作成されるファイル(参考)
~/.aws/credentials:
[codepipeline-dev]
aws_access_key_id = AKIA...
aws_secret_access_key = ...
~/.aws/config:
[profile codepipeline-dev]
region = us-east-1
output = json
使い方
プロジェクトのビルド
npm run build
サーバーの起動
npm start
自動再起動を有効にして開発する場合:
npm run dev
Windsurf との連携
この MCP サーバーは Windsurf と連携するように設計されており、自然言語でのリクエストを通じて Cascade が AWS CodePipeline を操作できます。
セットアップ手順
- サーバーが実行中であることを確認します。
npm start
- サーバー設定を、
~/.codeium/windsurf/mcp_config.jsonにある Windsurf MCP 設定ファイルに追加します。
{
"mcpServers": {
"codepipeline": {
"command": "npx",
"args": [
"-y",
"path/to/mcp-codepipeline-server/dist/index.js"
],
"env": {
"AWS_REGION": "us-east-1",
"AWS_PROFILE": "your-aws-profile"
}
}
}
}
- ディレクトリが存在しない場合は作成します。
mkdir -p ~/.codeium/windsurf
touch ~/.codeium/windsurf/mcp_config.json
- Windsurf を再起動して、新しい MCP サーバー設定を読み込みます
Cascade での使用
設定が完了すると、Windsurf で自然言語を使って AWS CodePipeline を操作できます。たとえば、次のように入力できます。
- 「CodePipeline のパイプラインをすべて一覧表示して」
- 「
production-deployパイプラインの現在の状態を表示して」 - 「
test-buildパイプラインを実行して」 - 「
data-processingパイプラインのメトリクスを取得して」 - 「
frontend-deployパイプラインのウェブフックを作成して」
Cascade は、これらのリクエストを適切な MCP ツール呼び出しに変換します。
MCP ツール
パイプラインの基本管理
| ツール名 | 説明 | パラメーター |
|---|---|---|
list_pipelines | CodePipeline のパイプラインをすべて一覧表示します | なし |
get_pipeline_state | 特定のパイプラインの状態を取得します | pipelineName:パイプライン名 |
list_pipeline_executions | 特定のパイプラインの実行を一覧表示します | pipelineName:パイプライン名 |
trigger_pipeline | パイプラインの実行を開始します | pipelineName:パイプライン名 |
stop_pipeline_execution | パイプラインの実行を停止します | pipelineName:パイプライン名executionId:実行 IDreason:停止する理由(任意) |
パイプラインの詳細とメトリクス
| ツール名 | 説明 | パラメーター |
|---|---|---|
get_pipeline_details | パイプラインの定義全体を取得します | pipelineName:パイプライン名 |
get_pipeline_execution_logs | パイプラインの実行ログを取得します | pipelineName:パイプライン名executionId:実行 ID |
get_pipeline_metrics | パイプラインのパフォーマンスメトリクスを取得します | pipelineName:パイプライン名period:メトリクスの期間(秒、任意)startTime:メトリクスの開始時刻(任意)endTime:メトリクスの終了時刻(任意) |
パイプラインのアクションと連携
| ツール名 | 説明 | パラメーター |
|---|---|---|
approve_action | 手動承認アクションを承認または拒否します | pipelineName:パイプライン名stageName:ステージ名actionName:アクション名token:承認トークンapproved:承認または拒否を示すブール値comments:コメント(任意) |
retry_stage | 失敗したステージを再試行します | pipelineName:パイプライン名stageName:ステージ名pipelineExecutionId:実行 ID |
tag_pipeline_resource | パイプラインリソースのタグを追加または更新します | pipelineName:パイプライン名tags:タグ付けに使用するキーと値のペアの配列 |
create_pipeline_webhook | パイプラインのウェブフックを作成します | pipelineName:パイプライン名webhookName:ウェブフック名targetAction:ウェブフックの対象アクションauthentication:認証タイプauthenticationConfiguration:認証設定(任意)filters:イベントフィルター(任意) |
トラブルシューティング
よくある問題
-
接続拒否エラー:
- サーバーが指定したポートで実行されていることを確認してください
- ポートがファイアウォールによってブロックされていないか確認してください
-
AWS 認証情報のエラー:
- プロファイル/SSO の場合:必要に応じて
aws sso login --profile YOUR_PROFILEを実行してから、AWS_PROFILEを設定してください - 静的キーの場合:
.envまたは MCP のenvにあるAWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYを確認してください - プリンシパルに CodePipeline(メトリクス用の CloudWatch も含む)の権限があることを確認してください
- サーバーの起動ログで、
AWS credentials: default provider chainとstatic keysのどちらが表示されているか確認してください
- プロファイル/SSO の場合:必要に応じて
-
Windsurf が MCP サーバーを検出しない:
mcp_config.jsonファイルの形式を確認してください- サーバー URL が正しいことを確認してください
- 変更後に Windsurf を再起動してください
ログ
サーバーはコンソールに情報を記録します。トラブルシューティングの際は、これらのログを確認してください。
# Run with more verbose logging
DEBUG=* npm start
例
GitHub 連携用ウェブフックの作成
{
"pipelineName": "my-pipeline",
"webhookName": "github-webhook",
"targetAction": "Source",
"authentication": "GITHUB_HMAC",
"authenticationConfiguration": {
"SecretToken": "my-secret-token"
},
"filters": [
{
"jsonPath": "$.ref",
"matchEquals": "refs/heads/main"
}
]
}
パイプラインメトリクスの取得
{
"pipelineName": "my-pipeline",
"period": 86400,
"startTime": "2025-03-10T00:00:00Z",
"endTime": "2025-03-17T23:59:59Z"
}
ライセンス
ISC
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。