使用说明
AWS CodePipeline MCP服务器
这是一个与AWS CodePipeline集成的模型上下文协议(MCP)服务器,允许您通过Windsurf和Cascade管理管道。该服务器提供了一个标准化的接口,用于与AWS CodePipeline服务进行交互。
作者 阮
特性
- 列出所有管道
- 获取管道状态和详细的管道定义
- 列出管道执行情况
- 批准或拒绝手动批准操作
- 重试失败的阶段
- 触发管道执行
- 查看管道执行日志
- 停止管道执行
- 标记管道资源
- 创建用于自动管道触发的webhooks
- 获取管道性能指标
先决条件
- 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文件基于.env.example模板:
cp .env.example .env
- 更新
.env使用AWS配置的文件(请参阅.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配置文件
A. 简介 是中的命名条目 ~/.aws/credentials 和 ~/.aws/config.Set AWS_PROFILE 以这个名字 .env 或MCP配置。
选项A:访问密钥(IAM用户)
需要 AWS-CLI.
aws configure --profile codepipeline-dev
系统将提示您:
| 提示 | 示例 |
|---|---|
| AWS访问密钥ID | AKIA... |
| AWS秘密访问密钥 | (秘密) |
| 默认区域名称 | us-east-1 |
| 默认输出格式 | json |
然后在 .env:
AWS_REGION=us-east-1
AWS_PROFILE=codepipeline-dev
选项B:AWS SSO(IAM身份中心)
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
- 将服务器配置添加到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_PROFILE": "your-aws-profile"
}
}
}
}
- 如果目录不存在,请创建该目录:
mkdir -p ~/.codeium/windsurf
touch ~/.codeium/windsurf/mcp_config.json
- 重新启动Windsurf以加载新的MCP服务器配置
与Cascade一起使用
配置后,您可以在Windsurf中使用自然语言与AWS CodePipeline进行交互。例如:
- “列出我的所有CodePipeline管道”
- “显示我的‘生产部署’管道的当前状态”
- “触发‘测试构建’流程”
- “获取我的‘数据处理’管道的指标”
- “为我的‘前端部署’管道创建一个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凭据错误:
- 对于配置文件/SSO:运行
aws sso login --profile YOUR_PROFILE如果需要,则设置AWS_PROFILE - 对于静态密钥:验证
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY在.env或MCPenv - 确保主体具有CodePipeline(和CloudWatch用于度量)权限
- 检查服务器启动日志
AWS credentials: default provider chainvsstatic keys
- 对于配置文件/SSO:运行
-
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"
}
许可证
国际学生委员会