MCP CodePipeline 服务端
一个集成了AWS CodePipeline的模型上下文协议服务器,允许用户通过Windsurf和Cascade使用自然语言命令管理管道。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"codepipeline": {
"args": [
"-y",
"path/to/mcp-codepipeline-server/dist/index.js"
],
"command": "npx",
"env": {
"AWS_ACCESS_KEY_ID": "your_access_key_id",
"AWS_REGION": "us-east-1",
"AWS_SECRET_ACCESS_KEY": "your_secret_access_key"
}
}
}
}
该服务需要配置环境变量:AWS_ACCESS_KEY_ID、AWS_REGION、AWS_SECRET_ACCESS_KEY、PORT
服务介绍
AWS CodePipeline MCP 服务器
这是一个与 AWS CodePipeline 集成的 Model Context Protocol (MCP) 服务器,允许您通过 Windsurf 和 Cascade 管理您的管道。该服务器提供了一个标准化的接口,用于与 AWS CodePipeline 服务进行交互。
作者: Cuong T Nguyen
功能
- 列出所有管道
- 获取管道状态和详细的管道定义
- 列出管道执行
- 批准或拒绝手动批准操作
- 重试失败的阶段
- 触发管道执行
- 查看管道执行日志
- 停止管道执行
- 标记管道资源
- 创建 Webhook 以自动触发管道
- 获取管道性能指标
先决条件
- Node.js (v14 或更高版本)
- 具有 CodePipeline 访问权限的 AWS 账户
- 具有 CodePipeline、CloudWatch 和 IAM(用于标记)权限的 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文件:
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=your_access_key_id
AWS_SECRET_ACCESS_KEY=your_secret_access_key
PORT=3000
注意: 为了安全起见,请勿将
.env文件提交到版本控制中。
使用方法
构建项目
npm run build
启动服务器
npm start
对于带有自动重启的开发环境:
npm run dev
与 Windsurf 的集成
此 MCP 服务器设计为与 Windsurf 一起使用,允许 Cascade 通过自然语言请求与 AWS CodePipeline 进行交互。
设置步骤
- 确保服务器正在运行:
npm start
- 将服务器配置添加到您的 Windsurf MCP 配置文件
~/.codeium/windsurf/mcp_config.json中:
{
"mcpServers": {
"codepipeline": {
"command": "npx",
"args": [
"-y",
"path/to/mcp-codepipeline-server/dist/index.js"
],
"env": {
"AWS_REGION": "us-east-1",
"AWS_ACCESS_KEY_ID": "your_access_key_id",
"AWS_SECRET_ACCESS_KEY": "your_secret_access_key"
}
}
}
}
- 如果目录不存在,则创建目录:
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' 管道创建一个 Webhook"
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 |
为管道创建webhook | pipelineName: 管道名称webhookName: webhook名称targetAction: webhook的目标动作authentication: 认证类型authenticationConfiguration: 可选认证配置filters: 可选事件过滤器 |
故障排除
常见问题
-
连接被拒绝错误:
- 确保服务器在指定端口上运行
- 检查端口是否被防火墙阻止
-
AWS凭据错误:
- 在
.env文件中验证您的AWS凭据 - 确保您的IAM用户具有必要的权限
- 在
-
Windsurf未检测到MCP服务器:
- 检查
mcp_config.json文件格式 - 确保服务器URL正确
- 更改后重启Windsurf
- 检查
日志
服务器将信息记录到控制台。检查这些日志以进行故障排除:
# Run with more verbose logging
DEBUG=* npm start
示例
为GitHub集成创建Webhook
{
"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