AWS CodePipeline MCP Server
AWS CodePipeline MCP 服务器
这是一个与 AWS CodePipeline 集成的模型上下文协议 (MCP) 服务器,允许您通过 Windsurf 和 Cascade 管理管道。该服务器提供了与 AWS CodePipeline 服务交互的标准化接口。
作者: Cuong T Nguyen
特征
列出所有管道
获取管道状态和详细的管道定义
列出管道执行
批准或拒绝手动批准操作
重试失败的阶段
触发管道执行
查看管道执行日志
停止管道执行
标记管道资源
创建用于自动管道触发的 Webhook
获取管道性能指标
Related MCP server: Log Analyzer with MCP
先决条件
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 管道”
“显示我的‘生产部署’管道的当前状态”
“触发‘测试构建’管道”
“获取我的‘数据处理’管道的指标”
“为我的‘前端部署’管道创建一个 webhook”
Cascade 会将这些请求转换为适当的 MCP 工具调用。
MCP 工具
核心管道管理
工具名称 | 描述 | 参数 |
| 列出所有 CodePipeline 管道 | 没有任何 |
| 获取特定管道的状态 |
|
| 列出特定管道的执行 |
|
| 触发管道执行 |
|
| 停止管道执行 |
|
管道详细信息和指标
工具名称 | 描述 | 参数 |
| 获取管道的完整定义 |
|
| 获取管道执行的日志 |
|
| 获取管道的性能指标 |
|
管道操作和集成
工具名称 | 描述 | 参数 |
| 批准或拒绝手动批准操作 |
|
| 重试失败的阶段 |
|
| 添加或更新管道资源的标签 |
|
| 为管道创建 webhook |
|
故障排除
常见问题
连接被拒绝错误:
确保服务器在指定端口上运行
检查端口是否被防火墙阻止
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"
}执照
国际学习中心
Available Tools
12 toolsapprove_actionC
Approve or reject a manual approval action
| Name | Required | Description | Default |
|---|---|---|---|
| pipelineName | Yes | Name of the pipeline | |
| stageName | Yes | Name of the stage | |
| actionName | Yes | Name of the action | |
| token | Yes | Approval token | |
| approved | Yes | Boolean indicating approval or rejection | |
| comments | No | Optional comments |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'approve or reject' implies a mutation, the description doesn't address permissions needed, whether the action is reversible, rate limits, or what happens upon success/failure. This leaves significant gaps for a tool that modifies pipeline states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core purpose without any wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens after approval/rejection, error conditions, or how this interacts with other pipeline tools. Given the complexity of pipeline operations and lack of structured behavioral data, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 6 parameters thoroughly. The description adds no additional meaning about parameters beyond what's in the schema, such as explaining relationships between pipelineName, stageName, and actionName. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('approve or reject') and the resource ('a manual approval action'), making the purpose immediately understandable. However, it doesn't differentiate this tool from potential alternatives like 'get_pipeline_state' or 'retry_stage' that might also interact with pipeline actions, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'retry_stage' and 'stop_pipeline_execution' that also modify pipeline states, there's no indication of prerequisites, timing, or context for choosing 'approve_action' over other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pipeline_webhookC
Create a webhook for a pipeline to enable automatic triggering
| Name | Required | Description | Default |
|---|---|---|---|
| pipelineName | Yes | Name of the pipeline | |
| webhookName | Yes | Name for the webhook | |
| targetAction | Yes | The name of the action in the pipeline that processes the webhook | |
| authentication | Yes | Authentication method for the webhook | |
| authenticationConfiguration | No | Authentication configuration based on the authentication type | |
| filters | No | Event filters for the webhook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but provides minimal behavioral insight. It states the tool creates a webhook but doesn't disclose critical traits: whether this is a mutating operation (implied but not confirmed), authentication requirements, rate limits, error conditions, or what happens on success (e.g., returns webhook ID). The phrase 'enable automatic triggering' hints at behavior but lacks specifics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. Every word earns its place: 'Create' (action), 'webhook' (resource), 'for a pipeline' (context), and 'to enable automatic triggering' (benefit). No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex mutation tool with 6 parameters (including nested objects), no annotations, and no output schema, the description is insufficient. It doesn't cover behavioral aspects (permissions, side effects), output format, error handling, or usage context. The schema handles parameters well, but the description fails to compensate for missing annotation and output information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds no parameter-specific information beyond what's in the schema (e.g., doesn't explain relationships between 'authentication' and 'authenticationConfiguration', or how 'filters' work). Baseline 3 is appropriate as the schema handles parameter semantics adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a webhook') and the target resource ('for a pipeline'), with the purpose 'to enable automatic triggering' providing functional context. It distinguishes from siblings like 'trigger_pipeline' (manual) or 'get_pipeline_details' (read-only), but doesn't explicitly contrast with other webhook-related tools (none present).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives is provided. It doesn't mention prerequisites (e.g., pipeline must exist), when webhooks are appropriate versus manual triggers, or how it differs from 'trigger_pipeline' (which appears to be manual). Usage is implied by the description but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_detailsC
Get the full definition of a specific pipeline
| Name | Required | Description | Default |
|---|---|---|---|
| pipelineName | Yes | Name of the pipeline |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Get') but doesn't describe whether this is a read-only operation, what permissions are required, how errors are handled, or the format of the returned definition. This leaves significant gaps for a tool that retrieves data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It is front-loaded with the core action and resource, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the 'full definition' includes (e.g., configuration, stages, variables) or the response format, which is critical for a tool that retrieves detailed information. This leaves the agent with insufficient context to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the parameter 'pipelineName' fully documented in the schema. The description doesn't add any semantic details beyond what the schema provides, such as examples or constraints on the pipeline name. With high schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('full definition of a specific pipeline'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_pipeline_state' or 'get_pipeline_metrics', which also retrieve pipeline information but focus on different aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention when this tool is appropriate compared to siblings like 'list_pipelines' (for overview) or 'get_pipeline_state' (for status), nor does it specify prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_execution_logsC
Get logs for a pipeline execution
| Name | Required | Description | Default |
|---|---|---|---|
| pipelineName | Yes | Name of the pipeline | |
| executionId | Yes | Execution ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but doesn't cover important aspects like whether logs are real-time/historical, format (text/structured), size limits, pagination, or authentication requirements. This leaves significant gaps for a log retrieval tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core purpose without any wasted words. It's appropriately sized for a straightforward tool and gets directly to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is insufficiently complete. It doesn't explain what the logs contain, their format, or any limitations. For a tool that retrieves potentially complex execution logs, more context about the return value would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with both parameters clearly documented. The description doesn't add any additional parameter semantics beyond what the schema provides, so it meets the baseline for adequate but unenhanced parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('logs for a pipeline execution'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_pipeline_details' or 'list_pipeline_executions' beyond the specific resource type, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, timing considerations, or how it differs from other pipeline-related tools in the sibling list, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_metricsC
Get performance metrics for a pipeline
| Name | Required | Description | Default |
|---|---|---|---|
| pipelineName | Yes | Name of the pipeline | |
| period | No | Time period in seconds for the metrics (default: 86400 - 1 day) | |
| startTime | No | Start time for metrics in ISO format (default: 1 week ago) | |
| endTime | No | End time for metrics in ISO format (default: now) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'Get performance metrics', implying a read-only operation, but does not specify if this requires authentication, has rate limits, returns real-time or historical data, or what format the metrics are in. This leaves significant gaps in understanding the tool's behavior beyond basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It is front-loaded with the core action and resource, making it easy to parse quickly, which is ideal for conciseness in tool descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a metrics tool with 4 parameters and no output schema or annotations, the description is incomplete. It does not explain what 'performance metrics' entail (e.g., throughput, latency), how results are structured, or any behavioral traits like data freshness or access controls, leaving the agent with insufficient context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with clear parameter details like defaults for 'period', 'startTime', and 'endTime'. The description adds no additional parameter semantics beyond what the schema provides, such as explaining what 'performance metrics' include or how parameters interact. This meets the baseline for high schema coverage but does not enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'performance metrics for a pipeline', making the purpose specific and understandable. However, it does not distinguish this tool from potential siblings like 'get_pipeline_details' or 'get_pipeline_state', which might also retrieve pipeline-related data, leaving some ambiguity in differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'get_pipeline_details' and 'get_pipeline_state', it does not specify if this is for performance data only, nor does it mention prerequisites or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_stateC
Get the state of a specific pipeline
| Name | Required | Description | Default |
|---|---|---|---|
| pipelineName | Yes | Name of the pipeline |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action without any details on permissions, rate limits, error conditions, or what the return value includes (e.g., status, timestamps, errors). This is inadequate for a tool that likely returns operational data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words. It is front-loaded and efficiently conveys the core purpose, though it lacks depth due to its brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'state' entails (e.g., running, failed, paused) or provide any context on the response structure, which is critical for an agent to use this tool effectively in a pipeline management system.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'pipelineName' clearly documented in the schema. The description adds no additional meaning beyond the schema, such as format examples or constraints, but the schema provides sufficient baseline information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action ('Get') and target ('state of a specific pipeline'), which is clear but basic. It doesn't differentiate from siblings like 'get_pipeline_details' or 'get_pipeline_metrics', leaving ambiguity about what 'state' specifically refers to versus other pipeline attributes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. With siblings like 'get_pipeline_details' and 'get_pipeline_metrics', the description lacks any context on how 'state' differs from 'details' or 'metrics', leaving the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pipeline_executionsC
List executions for a specific pipeline
| Name | Required | Description | Default |
|---|---|---|---|
| pipelineName | Yes | Name of the pipeline |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('List executions') but does not describe traits like pagination, sorting, filtering options, rate limits, authentication needs, or what data is returned (e.g., list of execution objects). For a read operation with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded with the core action ('List executions') and specifies the scope ('for a specific pipeline'), making it easy to parse quickly. There is no wasted verbiage or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of listing executions (which may involve multiple attributes like status, timestamps, IDs) and the lack of annotations and output schema, the description is incomplete. It does not explain what information is returned, how results are structured, or any behavioral aspects like limits or ordering. For a tool with no structured output documentation, the description should provide more context to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'pipelineName' fully documented in the schema as 'Name of the pipeline'. The description adds no additional meaning beyond this, such as format examples (e.g., case sensitivity) or constraints (e.g., must be an existing pipeline). With high schema coverage, the baseline score of 3 is appropriate, as the description does not compensate but also does not detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('executions for a specific pipeline'), making the purpose understandable. It distinguishes from siblings like 'list_pipelines' (which lists pipelines rather than executions) and 'get_pipeline_execution_logs' (which gets logs for a specific execution). However, it lacks specificity about what 'executions' entails (e.g., status, timestamps, IDs), keeping it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., needing a valid pipeline name), exclusions (e.g., not for real-time monitoring), or comparisons to siblings like 'get_pipeline_state' (which might show current state) or 'list_pipelines' (for broader listing). Usage is implied by the name but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pipelinesB
List all CodePipeline pipelines
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states a read operation ('List'), implying it's non-destructive, but doesn't disclose behavioral traits like pagination, rate limits, authentication needs, or what 'all' entails (e.g., across regions/accounts). For a list tool with zero annotation coverage, this is inadequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and multiple sibling tools, the description is incomplete. It doesn't explain what 'List all' returns (e.g., names, ARNs, summaries), how results are structured, or any limitations. For a tool in this context, more detail is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here. Baseline is 4 for zero parameters, as the schema fully covers the absence of inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all CodePipeline pipelines'), making the purpose immediately understandable. However, it doesn't differentiate this from sibling tools like 'list_pipeline_executions' or 'get_pipeline_details', which would require more specificity about scope or output format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. With siblings like 'get_pipeline_details' (for specific pipelines) and 'list_pipeline_executions' (for executions rather than pipelines), the description lacks any context about use cases, prerequisites, or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retry_stageC
Retry a failed stage
| Name | Required | Description | Default |
|---|---|---|---|
| pipelineName | Yes | Name of the pipeline | |
| stageName | Yes | Name of the stage | |
| pipelineExecutionId | Yes | Execution ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the action without disclosing behavioral traits such as permissions needed, whether it's idempotent, rate limits, or what happens on success/failure (e.g., does it restart the entire pipeline?). It mentions 'failed stage' but doesn't clarify if this applies to any failure type or has constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single sentence ('Retry a failed stage'), which is front-loaded and wastes no words. It efficiently conveys the core purpose without unnecessary elaboration, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mutation tool (retrying implies change) with no annotations and no output schema, the description is incomplete. It lacks details on behavioral aspects, error handling, and what the tool returns, leaving significant gaps for an agent to understand how to use it effectively in context with sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters (pipelineName, stageName, pipelineExecutionId) adequately. The description adds no additional meaning beyond what the schema provides, such as explaining relationships between parameters or usage examples, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Retry a failed stage' clearly states the action (retry) and target (failed stage), but it's vague about what constitutes a 'stage' and doesn't distinguish this tool from potential sibling operations like 'stop_pipeline_execution' or 'trigger_pipeline'. It specifies the resource but lacks detail on scope or mechanism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'stop_pipeline_execution' or 'trigger_pipeline', nor does it mention prerequisites (e.g., the stage must be in a failed state). The description implies usage only for failed stages but offers no explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_pipeline_executionC
Stop a pipeline execution
| Name | Required | Description | Default |
|---|---|---|---|
| pipelineName | Yes | Name of the pipeline | |
| executionId | Yes | Execution ID | |
| reason | No | Optional reason for stopping |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Stop a pipeline execution' implies a destructive mutation, but it doesn't specify whether this action is reversible, requires specific permissions, has side effects, or provides confirmation of success. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a destructive mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits, return values, error handling, or how it fits with sibling tools. For a tool that stops executions, more context is needed to ensure safe and correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters clearly documented in the input schema. The description doesn't add any meaning beyond what the schema provides, such as explaining parameter relationships or usage nuances. With high schema coverage, the baseline score of 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Stop a pipeline execution' clearly states the action (stop) and target resource (pipeline execution) with a specific verb. However, it doesn't distinguish this tool from potential alternatives like 'retry_stage' or 'get_pipeline_state' among the sibling tools, which would require more specific differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'retry_stage' and 'get_pipeline_state' available, there's no indication of when stopping is appropriate versus retrying or checking state, nor any prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tag_pipeline_resourceC
Add or update tags for a pipeline resource
| Name | Required | Description | Default |
|---|---|---|---|
| pipelineName | Yes | Name of the pipeline | |
| tags | Yes | List of tags to add or update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'Add or update' which implies mutation, but doesn't specify permissions needed, whether tags are overwritten or merged, error conditions, or what happens on success. This leaves significant behavioral gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a simple tagging operation and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after tagging (e.g., success response, error handling), nor does it provide context about tag limitations or system behavior. Given the complexity of modifying resources, more completeness is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with both parameters well-documented in the schema. The description adds no additional parameter semantics beyond what's already in the schema, so it meets the baseline score of 3 for adequate coverage without adding value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add or update') and resource ('tags for a pipeline resource'), making the purpose immediately understandable. However, it doesn't differentiate this tool from potential sibling tools that might also manipulate pipeline resources or tags, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'create_pipeline_webhook' or 'trigger_pipeline', nor does it mention prerequisites or constraints. It simply states what the tool does without contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trigger_pipelineC
Trigger a pipeline execution
| Name | Required | Description | Default |
|---|---|---|---|
| pipelineName | Yes | Name of the pipeline |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Trigger a pipeline execution' implies a write/mutation operation, but it doesn't specify permissions required, whether it's idempotent, rate limits, or what happens on success/failure. This leaves significant gaps for an agent to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's appropriately sized for a simple tool and front-loaded with the essential action, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of triggering a pipeline (a mutation with no annotations or output schema), the description is incomplete. It doesn't explain what 'trigger' entails (e.g., starts execution, may have side effects), expected outcomes, or error conditions, leaving the agent with insufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the single parameter 'pipelineName' documented in the schema. The description adds no additional meaning about parameters beyond what the schema provides, so it meets the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('trigger') and resource ('pipeline execution'), making the purpose immediately understandable. However, it doesn't distinguish this from sibling tools like 'retry_stage' or 'stop_pipeline_execution' that also affect pipeline execution, so it lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., pipeline must exist), exclusions (e.g., cannot trigger if already running), or comparisons to siblings like 'retry_stage' or 'create_pipeline_webhook'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
- First observed
approve_action - First observed
create_pipeline_webhook - First observed
get_pipeline_details - First observed
get_pipeline_execution_logs - First observed
get_pipeline_metrics - First observed
get_pipeline_state - First observed
list_pipeline_executions - First observed
list_pipelines - First observed
retry_stage - First observed
stop_pipeline_execution - First observed
tag_pipeline_resource - First observed
trigger_pipeline
TDQS
Scored across 12 tools
Every tool has a clearly distinct purpose targeting specific CodePipeline operations with no ambiguity. For example, get_pipeline_details retrieves definitions while get_pipeline_state shows status, and list_pipeline_executions enumerates runs versus get_pipeline_execution_logs fetches logs. The descriptions reinforce non-overlapping functionality.
All tools follow a consistent verb_noun pattern with snake_case throughout, such as list_pipelines, get_pipeline_details, and stop_pipeline_execution. The naming is predictable and readable, making it easy for agents to infer functionality from the names alone.
With 12 tools, the server is well-scoped for managing AWS CodePipeline operations. Each tool earns its place by covering essential actions like listing, retrieving, triggering, stopping, and monitoring pipelines, without being overly sparse or bloated for the domain.
The tool set provides strong coverage for core pipeline workflows, including CRUD-like operations (list, get, trigger, stop) and lifecycle management (approve, retry, tag). A minor gap is the lack of tools for creating or deleting pipelines, which might require workarounds, but the existing surface supports most agent tasks effectively.
Maintenance
Related MCP Connectors
The Buildkite MCP server exposes Buildkite product data (pipelines, builds, jobs, and test data) to AI tools, editors, and agents through the Model Context Protocol. It provides capabilities including pipeline creation and management, build monitoring with specialized tools like 'wait_for_build', efficient log querying using Apache Parquet conversion and caching, and OAuth-based authentication for both read-write and read-only access to Buildkite's REST API.
The AWS Knowledge MCP server is a fully managed remote Model Context Protocol server that provides real-time access to official AWS content in an LLM-compatible format. It offers structured access to AWS documentation, code samples, blog posts, What's New announcements, Well-Architected best practices, and regional availability information for AWS APIs and CloudFormation resources. Key capabilities include searching and reading documentation in markdown format, getting content recommendations, listing AWS regions, and checking regional availability for services and features.
A Model Context Protocol server for Wix AI tools
MCP server for generating rough-draft project plans from natural-language prompts.
Related MCP Servers
- FlicenseCqualityDmaintenanceA Model Context Protocol server allowing Claude AI to interact with AWS resources through natural language, enabling users to query and manage AWS services without using the traditional AWS Console or CLI.36-

Log Analyzer with MCPofficial
AlicenseNot gradedqualityFmaintenanceA Model Context Protocol server that provides AI assistants access to AWS CloudWatch Logs, enabling browsing, searching, summarizing, and correlating logs across multiple AWS services.169Apache 2.0- AlicenseNot gradedqualityNot gradedmaintenanceA Model Context Protocol (MCP) server that enables AI tools like chatbots to interact with and control Jenkins, allowing users to trigger jobs, check build statuses, and perform other Jenkins operations through natural language.MIT
- AlicenseNot gradedqualityNot gradedmaintenanceProvides a chat interface with natural language processing to deploy and manage AWS resources through an integrated Model Context Protocol (MCP) server.2-