AWS CodePipeline管理服务器

一个与AWS CodePipeline集成的MCP服务器,提供标准化的管道管理接口,支持管道状态查询、执行触发、日志查看等功能。

  • by cuongdev
  • TypeScript
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 cuongdev/mcp-codepipeline-server

使用说明

AWS CodePipeline MCP服务器

这是一个与AWS CodePipeline集成的模型上下文协议(MCP)服务器,允许您通过Windsurf和Cascade管理管道。该服务器提供了一个标准化的接口,用于与AWS CodePipeline服务进行交互。

作者 阮

特性

  • 列出所有管道
  • 获取管道状态和详细的管道定义
  • 列出管道执行情况
  • 批准或拒绝手动批准操作
  • 重试失败的阶段
  • 触发管道执行
  • 查看管道执行日志
  • 停止管道执行
  • 标记管道资源
  • 创建用于自动管道触发的webhooks
  • 获取管道性能指标

先决条件

  • Node.js(v14或更高版本)
  • 具有CodePipeline访问权限的AWS帐户
  • 具有CodePipeline和CloudWatch权限的AWS凭据(读取指标)
  • 带Cascade AI助手的Windsurf IDE

安装

  1. 克隆此存储库:
git clone https://github.com/cuongdev/mcp-codepipeline-server.git
cd mcp-codepipeline-server
  1. 安装依赖项:
npm install
  1. 创建 .env 文件基于 .env.example 模板:
cp .env.example .env
  1. 更新 .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交互。

设置步骤

  1. 确保服务器正在运行:
npm start
  1. 将服务器配置添加到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"
      }
    }
  }
}
  1. 如果目录不存在,请创建该目录:
mkdir -p ~/.codeium/windsurf
touch ~/.codeium/windsurf/mcp_config.json
  1. 重新启动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:执行ID
reason:停止的可选原因

管道细节和指标

工具名称 描述 参数
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:可选事件筛选器

故障排除

常见问题

  1. 连接被拒绝错误:

    • 确保服务器在指定端口上运行
    • 检查端口是否被防火墙阻止
  2. AWS凭据错误:

    • 对于配置文件/SSO:运行 aws sso login --profile YOUR_PROFILE 如果需要,则设置 AWS_PROFILE
    • 对于静态密钥:验证 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 在 .env 或MCP env
    • 确保主体具有CodePipeline(和CloudWatch用于度量)权限
    • 检查服务器启动日志 AWS credentials: default provider chain vs static keys
  3. 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"
}

许可证

国际学生委员会