Skip to main content
Glama
cuongdev

AWS CodePipeline MCP Server

by cuongdev

AWS CodePipeline MCP Server

This is a Model Context Protocol (MCP) server that integrates with AWS CodePipeline, allowing you to manage your pipelines through Windsurf and Cascade. The server provides a standardized interface for interacting with AWS CodePipeline services.

Author: Cuong T Nguyen

Features

  • List all pipelines

  • Get pipeline state and detailed pipeline definitions

  • List pipeline executions

  • Approve or reject manual approval actions

  • Retry failed stages

  • Trigger pipeline executions

  • View pipeline execution logs

  • Stop pipeline executions

  • Tag pipeline resources

  • Create webhooks for automatic pipeline triggering

  • Get pipeline performance metrics

Related MCP server: Log Analyzer with MCP

Prerequisites

  • Node.js (v14 or later)

  • AWS account with CodePipeline access

  • AWS credentials with permissions for CodePipeline and CloudWatch (read metrics)

  • Windsurf IDE with Cascade AI assistant

Installation

  1. Clone this repository:

git clone https://github.com/cuongdev/mcp-codepipeline-server.git
cd mcp-codepipeline-server
  1. Install dependencies:

npm install
  1. Create a .env file based on the .env.example template:

cp .env.example .env
  1. Update the .env file with your AWS configuration (see .env.example):

AWS_REGION=us-east-1
AWS_PROFILE=your-aws-profile

Note: For security, never commit your .env file to version control.

AWS authentication

You do not need long-lived access keys in .env. Pick one approach:

Approach

Configuration

AWS profile (recommended for local dev)

AWS_PROFILE=my-profile — uses ~/.aws/credentials / ~/.aws/config

AWS SSO

aws configure sso then aws sso login --profile my-sso and set AWS_PROFILE=my-sso

Static keys

Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY (and AWS_SESSION_TOKEN for temporary creds)

IAM role

Run on EC2/ECS/Lambda/EKS with an attached role; set only AWS_REGION

If access keys are omitted, the AWS SDK uses its default credential provider chain.

Creating an AWS profile

A profile is a named entry in ~/.aws/credentials and ~/.aws/config. Set AWS_PROFILE to that name in .env or MCP config.

Option A: Access keys (IAM user)

Requires AWS CLI.

aws configure --profile codepipeline-dev

You will be prompted for:

Prompt

Example

AWS Access Key ID

AKIA...

AWS Secret Access Key

(secret)

Default region name

us-east-1

Default output format

json

Then in .env:

AWS_REGION=us-east-1
AWS_PROFILE=codepipeline-dev

Option B: AWS SSO (IAM Identity Center)

aws configure sso --profile codepipeline-sso

Follow the prompts (SSO start URL, SSO region, account, role). Then log in before starting the MCP server:

aws sso login --profile codepipeline-sso

In .env:

AWS_REGION=us-east-1
AWS_PROFILE=codepipeline-sso

SSO sessions expire; run aws sso login again when you see credential errors.

Verify the profile

aws sts get-caller-identity --profile codepipeline-dev
aws codepipeline list-pipelines --region us-east-1 --profile codepipeline-dev

If both commands succeed, the MCP server can use the same AWS_PROFILE and AWS_REGION.

Files created (reference)

~/.aws/credentials:

[codepipeline-dev]
aws_access_key_id = AKIA...
aws_secret_access_key = ...

~/.aws/config:

[profile codepipeline-dev]
region = us-east-1
output = json

Usage

Build the project

npm run build

Start the server

npm start

For development with auto-restart:

npm run dev

Integration with Windsurf

This MCP server is designed to work with Windsurf, allowing Cascade to interact with AWS CodePipeline through natural language requests.

Setup Steps

  1. Make sure the server is running:

npm start
  1. Add the server configuration to your Windsurf MCP config file at ~/.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. Create the directory if it doesn't exist:

mkdir -p ~/.codeium/windsurf
touch ~/.codeium/windsurf/mcp_config.json
  1. Restart Windsurf to load the new MCP server configuration

Using with Cascade

Once configured, you can interact with AWS CodePipeline using natural language in Windsurf. For example:

  • "List all my CodePipeline pipelines"

  • "Show me the current state of my 'production-deploy' pipeline"

  • "Trigger the 'test-build' pipeline"

  • "Get metrics for my 'data-processing' pipeline"

  • "Create a webhook for my 'frontend-deploy' pipeline"

Cascade will translate these requests into the appropriate MCP tool calls.

MCP Tools

Core Pipeline Management

Tool Name

Description

Parameters

list_pipelines

List all CodePipeline pipelines

None

get_pipeline_state

Get the state of a specific pipeline

pipelineName: Name of the pipeline

list_pipeline_executions

List executions for a specific pipeline

pipelineName: Name of the pipeline

trigger_pipeline

Trigger a pipeline execution

pipelineName: Name of the pipeline

stop_pipeline_execution

Stop a pipeline execution

pipelineName: Name of the pipelineexecutionId: Execution IDreason: Optional reason for stopping

Pipeline Details and Metrics

Tool Name

Description

Parameters

get_pipeline_details

Get the full definition of a pipeline

pipelineName: Name of the pipeline

get_pipeline_execution_logs

Get logs for a pipeline execution

pipelineName: Name of the pipelineexecutionId: Execution ID

get_pipeline_metrics

Get performance metrics for a pipeline

pipelineName: Name of the pipelineperiod: Optional metric period in secondsstartTime: Optional start time for metricsendTime: Optional end time for metrics

Pipeline Actions and Integrations

Tool Name

Description

Parameters

approve_action

Approve or reject a manual approval action

pipelineName: Name of the pipelinestageName: Name of the stageactionName: Name of the actiontoken: Approval tokenapproved: Boolean indicating approval or rejectioncomments: Optional comments

retry_stage

Retry a failed stage

pipelineName: Name of the pipelinestageName: Name of the stagepipelineExecutionId: Execution ID

tag_pipeline_resource

Add or update tags for a pipeline resource

pipelineName: Name of the pipelinetags: Array of key-value pairs for tagging

create_pipeline_webhook

Create a webhook for a pipeline

pipelineName: Name of the pipelinewebhookName: Name for the webhooktargetAction: Target action for the webhookauthentication: Authentication typeauthenticationConfiguration: Optional auth configfilters: Optional event filters

Troubleshooting

Common Issues

  1. Connection refused error:

    • Ensure the server is running on the specified port

    • Check if the port is blocked by a firewall

  2. AWS credential errors:

    • For profiles/SSO: run aws sso login --profile YOUR_PROFILE if needed, then set AWS_PROFILE

    • For static keys: verify AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY in .env or MCP env

    • Ensure the principal has CodePipeline (and CloudWatch for metrics) permissions

    • Check server startup logs for AWS credentials: default provider chain vs static keys

  3. Windsurf not detecting the MCP server:

    • Check the mcp_config.json file format

    • Ensure the server URL is correct

    • Restart Windsurf after making changes

Logs

The server logs information to the console. Check these logs for troubleshooting:

# Run with more verbose logging
DEBUG=* npm start

Examples

Creating a Webhook for GitHub Integration

{
  "pipelineName": "my-pipeline",
  "webhookName": "github-webhook",
  "targetAction": "Source",
  "authentication": "GITHUB_HMAC",
  "authenticationConfiguration": {
    "SecretToken": "my-secret-token"
  },
  "filters": [
    {
      "jsonPath": "$.ref",
      "matchEquals": "refs/heads/main"
    }
  ]
}

Getting Pipeline Metrics

{
  "pipelineName": "my-pipeline",
  "period": 86400,
  "startTime": "2025-03-10T00:00:00Z",
  "endTime": "2025-03-17T23:59:59Z"
}

License

ISC

Available Tools

12 tools
approve_actionC

Approve or reject a manual approval action

ParametersJSON Schema
NameRequiredDescriptionDefault
pipelineNameYesName of the pipeline
stageNameYesName of the stage
actionNameYesName of the action
tokenYesApproval token
approvedYesBoolean indicating approval or rejection
commentsNoOptional comments

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pipelineNameYesName of the pipeline
webhookNameYesName for the webhook
targetActionYesThe name of the action in the pipeline that processes the webhook
authenticationYesAuthentication method for the webhook
authenticationConfigurationNoAuthentication configuration based on the authentication type
filtersNoEvent filters for the webhook

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pipelineNameYesName of the pipeline

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pipelineNameYesName of the pipeline
executionIdYesExecution ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pipelineNameYesName of the pipeline
periodNoTime period in seconds for the metrics (default: 86400 - 1 day)
startTimeNoStart time for metrics in ISO format (default: 1 week ago)
endTimeNoEnd time for metrics in ISO format (default: now)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pipelineNameYesName of the pipeline

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pipelineNameYesName of the pipeline

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pipelineNameYesName of the pipeline
stageNameYesName of the stage
pipelineExecutionIdYesExecution ID

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pipelineNameYesName of the pipeline
executionIdYesExecution ID
reasonNoOptional reason for stopping

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pipelineNameYesName of the pipeline
tagsYesList of tags to add or update

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pipelineNameYesName of the pipeline

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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. Dates show when Glama detected each change.

  1. 12 tool updates
    • First observedapprove_action
    • First observedcreate_pipeline_webhook
    • First observedget_pipeline_details
    • First observedget_pipeline_execution_logs
    • First observedget_pipeline_metrics
    • First observedget_pipeline_state
    • First observedlist_pipeline_executions
    • First observedlist_pipelines
    • First observedretry_stage
    • First observedstop_pipeline_execution
    • First observedtag_pipeline_resource
    • First observedtrigger_pipeline

TDQS

B3.4/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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

  • F
    license
    C
    quality
    D
    maintenance
    A 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.
    3
    6
    -
  • A
    license
    Not graded
    quality
    F
    maintenance
    A Model Context Protocol server that provides AI assistants access to AWS CloudWatch Logs, enabling browsing, searching, summarizing, and correlating logs across multiple AWS services.
    167
    Apache 2.0
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    A 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.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cuongdev/mcp-codepipeline-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server