CircleCI MCP Server
Enables interaction with CircleCI pipelines and workflows, providing tools for retrieving build failure logs, identifying flaky tests, checking pipeline status, analyzing test results, validating CircleCI configurations, running and rerunning pipelines, and performing rollbacks.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CircleCI MCP Servershow me the logs for the latest failed build on main branch"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CircleCI MCP Server
Model Context Protocol (MCP) is a new, standardized protocol for managing context between large language models (LLMs) and external systems. In this repository, we provide an MCP Server for CircleCI.
This lets you use Cursor IDE, Windsurf, Copilot, or any MCP supported Client, to use natural language to accomplish things with CircleCI, e.g.:
Find the latest failed pipeline on my branch and get logshttps://github.com/CircleCI-Public/mcp-server-circleci/wiki#circleci-mcp-server-with-cursor-ide
https://github.com/user-attachments/assets/3c765985-8827-442a-a8dc-5069e01edb74
Requirements
CircleCI Personal API Token - you can generate one through the CircleCI. Learn more or click here for quick access.
For NPX installation:
pnpm package manager - Learn more
Node.js >= v18.0.0
For Docker installation:
Docker - Learn more
Related MCP server: GoCD MCP Server
Installation
Cursor
Using NPX in a local MCP Server
Add the following to your cursor MCP config:
{
"mcpServers": {
"circleci-mcp-server": {
"command": "npx",
"args": ["-y", "@circleci/mcp-server-circleci"],
"env": {
"CIRCLECI_TOKEN": "your-circleci-token",
"CIRCLECI_BASE_URL": "https://circleci.com" // Optional - required for on-prem customers only
}
}
}
}Using Docker in a local MCP Server
Add the following to your cursor MCP config:
{
"mcpServers": {
"circleci-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"CIRCLECI_TOKEN",
"-e",
"CIRCLECI_BASE_URL",
"circleci:mcp-server-circleci"
],
"env": {
"CIRCLECI_TOKEN": "your-circleci-token",
"CIRCLECI_BASE_URL": "https://circleci.com" // Optional - required for on-prem customers only
}
}
}
}Using a Self-Managed Remote MCP Server
Add the following to your cursor MCP config:
{
"inputs": [
{
"type": "promptString",
"id": "circleci-token",
"description": "CircleCI API Token",
"password": true
}
],
"servers": {
"circleci-mcp-server-remote": {
"url": "http://your-circleci-remote-mcp-server-endpoint:8000/mcp"
}
}
}VS Code
Using NPX in a local MCP Server
To install CircleCI MCP Server for VS Code in .vscode/mcp.json:
{
// 💡 Inputs are prompted on first server start, then stored securely by VS Code.
"inputs": [
{
"type": "promptString",
"id": "circleci-token",
"description": "CircleCI API Token",
"password": true
},
{
"type": "promptString",
"id": "circleci-base-url",
"description": "CircleCI Base URL",
"default": "https://circleci.com"
}
],
"servers": {
// https://github.com/ppl-ai/modelcontextprotocol/
"circleci-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@circleci/mcp-server-circleci"],
"env": {
"CIRCLECI_TOKEN": "${input:circleci-token}",
"CIRCLECI_BASE_URL": "${input:circleci-base-url}"
}
}
}
}Using Docker in a local MCP Server
To install CircleCI MCP Server for VS Code in .vscode/mcp.json using Docker:
{
// 💡 Inputs are prompted on first server start, then stored securely by VS Code.
"inputs": [
{
"type": "promptString",
"id": "circleci-token",
"description": "CircleCI API Token",
"password": true
},
{
"type": "promptString",
"id": "circleci-base-url",
"description": "CircleCI Base URL",
"default": "https://circleci.com"
}
],
"servers": {
// https://github.com/ppl-ai/modelcontextprotocol/
"circleci-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"CIRCLECI_TOKEN",
"-e",
"CIRCLECI_BASE_URL",
"circleci:mcp-server-circleci"
],
"env": {
"CIRCLECI_TOKEN": "${input:circleci-token}",
"CIRCLECI_BASE_URL": "${input:circleci-base-url}"
}
}
}
}Using a Self-Managed Remote MCP Server
To install CircleCI MCP Server for VS Code in .vscode/mcp.json using a self-managed remote MCP server:
{
"servers": {
"circleci-mcp-server-remote": {
"type": "sse",
"url": "http://your-circleci-remote-mcp-server-endpoint:8000/mcp"
}
}
}Claude Desktop
Using NPX in a local MCP Server
Add the following to your claude_desktop_config.json:
{
"mcpServers": {
"circleci-mcp-server": {
"command": "npx",
"args": ["-y", "@circleci/mcp-server-circleci"],
"env": {
"CIRCLECI_TOKEN": "your-circleci-token",
"CIRCLECI_BASE_URL": "https://circleci.com" // Optional - required for on-prem customers only
}
}
}
}To locate this file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Using Docker in a local MCP Server
Add the following to your claude_desktop_config.json:
{
"mcpServers": {
"circleci-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"CIRCLECI_TOKEN",
"-e",
"CIRCLECI_BASE_URL",
"circleci:mcp-server-circleci"
],
"env": {
"CIRCLECI_TOKEN": "your-circleci-token",
"CIRCLECI_BASE_URL": "https://circleci.com" // Optional - required for on-prem customers only
}
}
}
}To find/create this file, first open your claude desktop settings. Then click on "Developer" in the left-hand bar of the Settings pane, and then click on "Edit Config"
This will create a configuration file at:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
See the guide below for more information on using MCP servers with Claude Desktop: https://modelcontextprotocol.io/quickstart/user
Using a Self-Managed Remote MCP Server
Create a wrapper script first
Create a script file such as 'circleci-remote-mcp.sh':
#!/bin/bash
export CIRCLECI_TOKEN="your-circleci-token"
npx mcp-remote http://your-circleci-remote-mcp-server-endpoint:8000/mcp --allow-http Make it executable:
chmod +x circleci-remote-mcp.shThen add the following to your claude_desktop_config.json:
{
"mcpServers": {
"circleci-remote-mcp-server": {
"command": "/full/path/to/circleci-remote-mcp.sh"
}
}
}To find/create this file, first open your Claude Desktop settings. Then click on "Developer" in the left-hand bar of the Settings pane, and then click on "Edit Config"
This will create a configuration file at:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
See the guide below for more information on using MCP servers with Claude Desktop: https://modelcontextprotocol.io/quickstart/user
Claude Code
Using NPX in a local MCP Server
After installing Claude Code, run the following command:
claude mcp add circleci-mcp-server -e CIRCLECI_TOKEN=your-circleci-token -- npx -y @circleci/mcp-server-circleciUsing Docker in a local MCP Server
After installing Claude Code, run the following command:
claude mcp add circleci-mcp-server -e CIRCLECI_TOKEN=your-circleci-token -e CIRCLECI_BASE_URL=https://circleci.com -- docker run --rm -i -e CIRCLECI_TOKEN -e CIRCLECI_BASE_URL circleci:mcp-server-circleciSee the guide below for more information on using MCP servers with Claude Code: https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/tutorials#set-up-model-context-protocol-mcp
Using Self-Managed Remote MCP Server
After installing Claude Code, run the following command:
claude mcp add circleci-mcp-server -e CIRCLECI_TOKEN=your-circleci-token -- npx mcp-remote http://your-circleci-remote-mcp-server-endpoint:8000/mcp --allow-httpSee the guide below for more information on using MCP servers with Claude Code: https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/tutorials#set-up-model-context-protocol-mcp
Windsurf
Using NPX in a local MCP Server
Add the following to your windsurf mcp_config.json:
{
"mcpServers": {
"circleci-mcp-server": {
"command": "npx",
"args": ["-y", "@circleci/mcp-server-circleci"],
"env": {
"CIRCLECI_TOKEN": "your-circleci-token",
"CIRCLECI_BASE_URL": "https://circleci.com" // Optional - required for on-prem customers only
}
}
}
}Using Docker in a local MCP Server
Add the following to your windsurf mcp_config.json:
{
"mcpServers": {
"circleci-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"CIRCLECI_TOKEN",
"-e",
"CIRCLECI_BASE_URL",
"circleci:mcp-server-circleci"
],
"env": {
"CIRCLECI_TOKEN": "your-circleci-token",
"CIRCLECI_BASE_URL": "https://circleci.com" // Optional - required for on-prem customers only
}
}
}
}Using Self-Managed Remote MCP Server
Add the following to your windsurf mcp_config.json:
{
"mcpServers": {
"circleci": {
"command": "npx",
"args": [
"mcp-remote",
"http://your-circleci-remote-mcp-server-endpoint:8000/mcp",
"--allow-http"
],
"disabled": false,
"alwaysAllow": []
}
}
}See the guide below for more information on using MCP servers with windsurf: https://docs.windsurf.com/windsurf/mcp
Installing via Smithery
To install CircleCI MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @CircleCI-Public/mcp-server-circleci --client claudeAmazon Q Developer CLi
MCP client configuration in Amazon Q Developer is stored in JSON format, in a file named mcp.json.
Amazon Q Developer CLI supports two levels of MCP configuration:
Global Configuration: ~/.aws/amazonq/mcp.json - Applies to all workspaces
Workspace Configuration: .amazonq/mcp.json - Specific to the current workspace
Both files are optional; neither, one, or both can exist. If both files exist, Amazon Q Developer reads MCP configuration from both and combines them, taking the union of their contents. If there is a conflict (i.e., a server defined in the global config is also present in the workspace config), a warning is displayed and only the server entry in the workspace config is used.
Using NPX in a local MCP Server
Edit your global configuration file ~/.aws/amazonq/mcp.json or create a new one in the current workspace .amazonq/mcp.json with the following content:
{
"mcpServers": {
"circleci-local": {
"command": "npx",
"args": [
"-y",
"@circleci/mcp-server-circleci"
],
"env": {
"CIRCLECI_TOKEN": "YOUR_CIRCLECI_TOKEN",
"CIRCLECI_BASE_URL": "https://circleci.com" // Optional - required for on-prem customers only
},
"timeout": 60000
}
}
}Using a Self-Managed Remote MCP Server
Create a wrapper script first
Create a script file such as 'circleci-remote-mcp.sh':
#!/bin/bash
export CIRCLECI_TOKEN="your-circleci-token"
npx mcp-remote http://your-circleci-remote-mcp-server-endpoint:8000/mcp --allow-httpMake it executable:
chmod +x circleci-remote-mcp.shThen add it:
q mcp add --name circleci --command "/full/path/to/circleci-remote-mcp.sh"Amazon Q Developer in the IDE
Using NPX in a local MCP Server
Edit your global configuration file ~/.aws/amazonq/mcp.json or create a new one in the current workspace .amazonq/mcp.json with the following content:
{
"mcpServers": {
"circleci-local": {
"command": "npx",
"args": [
"-y",
"@circleci/mcp-server-circleci"
],
"env": {
"CIRCLECI_TOKEN": "YOUR_CIRCLECI_TOKEN",
"CIRCLECI_BASE_URL": "https://circleci.com" // Optional - required for on-prem customers only
},
"timeout": 60000
}
}
}Using a Self-Managed Remote MCP Server
Create a wrapper script first
Create a script file such as 'circleci-remote-mcp.sh':
#!/bin/bash
npx mcp-remote http://your-circleci-remote-mcp-server-endpoint:8000/mcp --allow-httpMake it executable:
chmod +x circleci-remote-mcp.shThen add it to the Q Developer in your IDE:
Access the MCP configuration UI (https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/mcp-ide.html#mcp-ide-configuration-access-ui).
Choose the plus (+) symbol.
Select the scope: global or local.
If you select global scope, the MCP server configuration is stored in ~/.aws/amazonq/mcp.json and available across all your projects. If you select local scope, the configuration is stored in .amazonq/mcp.json within your current project.
In the Name field, enter the name of the CircleCI remote MCP server (e.g. circleci-remote-mcp).
Select the transport protocol (stdio).
In the Command field, enter the shell command created previously that the MCP server will run when it initializes (e.g. /full/path/to/circleci-remote-mcp.sh).
Click the Save button.
Features
Supported Tools
get_build_failure_logsRetrieves detailed failure logs from CircleCI builds. This tool can be used in three ways:
Using Project Slug and Branch (Recommended Workflow):
First, list your available projects:
Use the list_followed_projects tool to get your projects
Example: "List my CircleCI projects"
Then choose the project, which has a projectSlug associated with it
Example: "Lets use my-project"
Then ask to retrieve the build failure logs for a specific branch:
Example: "Get build failures for my-project on the main branch"
Using CircleCI URLs:
Provide a failed job URL or pipeline URL directly
Example: "Get logs from https://app.circleci.com/pipelines/github/org/repo/123"
Using Local Project Context:
Works from your local workspace by providing:
Workspace root path
Git remote URL
Branch name
Example: "Find the latest failed pipeline on my current branch"
The tool returns formatted logs including:
Job names
Step-by-step execution details
Failure messages and context
This is particularly useful for:
Debugging failed builds
Analyzing test failures
Investigating deployment issues
Quick access to build logs without leaving your IDE
find_flaky_testsIdentifies flaky tests in your CircleCI project by analyzing test execution history. This leverages the flaky test detection feature described here: https://circleci.com/blog/introducing-test-insights-with-flaky-test-detection/#flaky-test-detection
This tool can be used in three ways:
Using Project Slug (Recommended Workflow):
First, list your available projects:
Use the list_followed_projects tool to get your projects
Example: "List my CircleCI projects"
Then choose the project, which has a projectSlug associated with it
Example: "Lets use my-project"
Then ask to retrieve the flaky tests:
Example: "Get flaky tests for my-project"
Using CircleCI Project URL:
Provide the project URL directly from CircleCI
Example: "Find flaky tests in https://app.circleci.com/pipelines/github/org/repo"
Using Local Project Context:
Works from your local workspace by providing:
Workspace root path
Git remote URL
Example: "Find flaky tests in my current project"
The tool can be used in two ways:
Using text output mode (default):
This will return the flaky tests and their details in a text format
Using file output mode: (requires the
FILE_OUTPUT_DIRECTORYenvironment variable to be set)This will create a directory with the flaky tests and their details
The tool returns detailed information about flaky tests, including:
Test names and file locations
Failure messages and contexts
This helps you:
Identify unreliable tests in your test suite
Get detailed context about test failures
Make data-driven decisions about test improvements
get_latest_pipeline_statusRetrieves the status of the latest pipeline for a given branch. This tool can be used in three ways:
Using Project Slug and Branch (Recommended Workflow):
First, list your available projects:
Use the list_followed_projects tool to get your projects
Example: "List my CircleCI projects"
Then choose the project, which has a projectSlug associated with it
Example: "Lets use my-project"
Then ask to retrieve the latest pipeline status for a specific branch:
Example: "Get the status of the latest pipeline for my-project on the main branch"
Using CircleCI Project URL:
Provide the project URL directly from CircleCI
Example: "Get the status of the latest pipeline for https://app.circleci.com/pipelines/github/org/repo"
Using Local Project Context:
Works from your local workspace by providing:
Workspace root path
Git remote URL
Branch name
Example: "Get the status of the latest pipeline for my current project"
The tool returns a formatted status of the latest pipeline:
Workflow names and their current status
Duration of each workflow
Creation and completion timestamps
Overall pipeline health
Example output:
--- Workflow: build Status: success Duration: 5 minutes Created: 4/20/2025, 10:15:30 AM Stopped: 4/20/2025, 10:20:45 AM --- Workflow: test Status: running Duration: unknown Created: 4/20/2025, 10:21:00 AM Stopped: in progressThis is particularly useful for:
Checking the status of the latest pipeline
Getting the status of the latest pipeline for a specific branch
Quickly checking the status of the latest pipeline without leaving your IDE
get_job_test_resultsRetrieves test metadata for CircleCI jobs, allowing you to analyze test results without leaving your IDE. This tool can be used in three ways:
Using Project Slug and Branch (Recommended Workflow):
First, list your available projects:
Use the list_followed_projects tool to get your projects
Example: "List my CircleCI projects"
Then choose the project, which has a projectSlug associated with it
Example: "Lets use my-project"
Then ask to retrieve the test results for a specific branch:
Example: "Get test results for my-project on the main branch"
Using CircleCI URL:
Provide a CircleCI URL in any of these formats:
Example: "Get test results for https://app.circleci.com/pipelines/github/org/repo/123/workflows/abc-def"
Using Local Project Context:
Works from your local workspace by providing:
Workspace root path
Git remote URL
Branch name
Example: "Get test results for my current project on the main branch"
The tool returns detailed test result information:
Summary of all tests (total, successful, failed)
Detailed information about failed tests including:
Test name and class
File location
Error messages
Runtime duration
List of successful tests with timing information
Filter by tests result
This is particularly useful for:
Quickly analyzing test failures without visiting the CircleCI web UI
Identifying patterns in test failures
Finding slow tests that might need optimization
Checking test coverage across your project
Troubleshooting flaky tests
Note: The tool requires that test metadata is properly configured in your CircleCI config. For more information on setting up test metadata collection, see: https://circleci.com/docs/collect-test-data/
config_helperAssists with CircleCI configuration tasks by providing guidance and validation. This tool helps you:
Validate CircleCI Config:
Checks your .circleci/config.yml for syntax and semantic errors
Example: "Validate my CircleCI config"
The tool provides:
Detailed validation results
Configuration recommendations
This helps you:
Catch configuration errors before pushing
Learn CircleCI configuration best practices
Troubleshoot configuration issues
Implement CircleCI features correctly
create_prompt_templateHelps generate structured prompt templates for AI-enabled applications based on feature requirements. This tool:
Converts Feature Requirements to Structured Prompts:
Transforms user requirements into optimized prompt templates
Example: "Create a prompt template for generating bedtime stories by age and topic"
The tool provides:
A structured prompt template
A context schema defining required input parameters
This helps you:
Create effective prompts for AI applications
Standardize input parameters for consistent results
Build robust AI-powered features
recommend_prompt_template_testsGenerates test cases for prompt templates to ensure they produce expected results. This tool:
Provides Test Cases for Prompt Templates:
Creates diverse test scenarios based on your prompt template and context schema
Example: "Generate tests for my bedtime story prompt template"
The tool provides:
An array of recommended test cases
Various parameter combinations to test template robustness
This helps you:
Validate prompt template functionality
Ensure consistent AI responses across inputs
Identify edge cases and potential issues
Improve overall AI application quality
list_followed_projectsLists all projects that the user is following on CircleCI. This tool:
Retrieves and Displays Projects:
Shows all projects the user has access to and is following
Provides the project name and projectSlug for each entry
Example: "List my CircleCI projects"
The tool returns a formatted list of projects, example output:
Projects followed: 1. my-project (projectSlug: gh/organization/my-project) 2. another-project (projectSlug: gh/organization/another-project)This is particularly useful for:
Identifying which CircleCI projects are available to you
Obtaining the projectSlug needed for other CircleCI tools
Selecting a project for subsequent operations
Note: The projectSlug (not the project name) is required for many other CircleCI tools, and will be used for those tool calls after a project is selected.
run_pipelineTriggers a pipeline to run. This tool can be used in three ways:
Using Project Slug and Branch (Recommended Workflow):
First, list your available projects:
Use the list_followed_projects tool to get your projects
Example: "List my CircleCI projects"
Then choose the project, which has a projectSlug associated with it
Example: "Lets use my-project"
Then ask to run the pipeline for a specific branch:
Example: "Run the pipeline for my-project on the main branch"
Using CircleCI URL:
Provide a CircleCI URL in any of these formats:
Job URL: "https://app.circleci.com/pipelines/github/org/repo/123/workflows/abc-def/jobs/789"
Workflow URL: "https://app.circleci.com/pipelines/github/org/repo/123/workflows/abc-def"
Pipeline URL: "https://app.circleci.com/pipelines/github/org/repo/123"
Project URL with branch: "https://app.circleci.com/projects/github/org/repo?branch=main"
Example: "Run the pipeline for https://app.circleci.com/pipelines/github/org/repo/123/workflows/abc-def"
Using Local Project Context:
Works from your local workspace by providing:
Workspace root path
Git remote URL
Branch name
Example: "Run the pipeline for my current project on the main branch"
The tool returns a link to monitor the pipeline execution.
This is particularly useful for:
Quickly running pipelines without visiting the CircleCI web UI
Running pipelines from a specific branch
run_rollback_pipelineRun a rollback pipeline for a CircleCI project. This tool guides you through the full rollback process, adapting to the information you provide and prompting for any missing details.
Initial Step:
First, call the
list_followed_projectstool to retrieve the list of projects the user follows.Then, ask the user to select a project by providing either a
projectIDor the exactprojectSlugas returned bylist_followed_projects.Typical Flow:
Start: User initiates a rollback request.
Project Selection: If a `projectSlug` or `projectID` is not provided, call `listFollowedProjects` and prompt the user to select a project using the exact value returned.
Execute the tool and list the versions.
Workflow Rerun:
Inform the user of the fact that no rollback pipeline is defined for this project.
Ask the user if they want to rerun a workflow.
If the user wants to rerun a workflow, execute the tool with rollback_type set to `WORKFLOW_RERUN`. Do not propose to choose another project.
Component Selection:
If the project has multiple components, present up to 20 options for the user to choose from.
If there is only one component, proceed automatically and do not ask the user to select a component.
Environment Selection:
If the project has multiple environments, present up to 20 options for the user to choose from.
If there is only one environment, proceed automatically and do not ask the user to select an environment.
Version Selection:
Present the user with available versions to rollback to, based on the selected environment and component. Include the namespace for each version.
Ask for both the current deployed version and the target version to rollback to.
Optional Details:
If the rollback type is `PIPELINE`, prompt the user for an optional reason for the rollback (e.g., "Critical bug fix").
If the rollback type is `WORKFLOW_RERUN`, provide the workflow ID of the selected version to the tool.
provide the namespace for the selected version to the tool.
Confirmation:
Summarize the rollback request and confirm with the user before submitting.
Returns:
On success: The rollback ID or a confirmation in case of workflow rerun.
On error: A clear message describing what is missing or what went wrong.
rerun_workflowReruns a workflow from its start or from the failed job.
The tool returns the ID of the newly-created workflow, and a link to monitor the new workflow.
This is particularly useful for:
Quickly rerunning a workflow from its start or from the failed job without visiting the CircleCI web UI
analyze_diffAnalyzes git diffs against cursor rules to identify rule violations.
This tool can be used by providing:
Git Diff Content:
Staged changes:
git diff --cachedUnstaged changes:
git diffAll changes:
git diff HEADExample: "Analyze my staged changes against the cursor rules"
Repository Rules:
Rules from
.cursorrulesfile in your repository rootRules from
.cursor/rulesdirectoryMultiple rule files combined with
---separatorExample: "Check my diff against the TypeScript coding standards"
The tool provides:
Detailed violation reports with confidence scores
Specific explanations for each rule violation
Example usage scenarios:
"Analyze my staged changes for any rule violations"
"Check my unstaged changes against rules"
This is particularly useful for:
Pre-commit code quality checks
Ensuring consistency with team coding standards
Catching rule violations before code review
The tool integrates with your existing cursor rules setup and provides immediate feedback on code quality, helping you catch issues early in the development process.
Development
Getting Started
Clone the repository:
git clone https://github.com/CircleCI-Public/mcp-server-circleci.git cd mcp-server-circleciInstall dependencies:
pnpm installBuild the project:
pnpm build
Building Docker Container
You can build the Docker container locally using:
docker build -t circleci:mcp-server-circleci .This will create a Docker image tagged as circleci:mcp-server-circleci that you can use with any MCP client.
To run the container locally:
docker run --rm -i -e CIRCLECI_TOKEN=your-circleci-token -e CIRCLECI_BASE_URL=https://circleci.com circleci:mcp-server-circleciTo run the container as a self-managed remote MCP server you need to add the environment variable start=remote to the docker run command. You can also define the port to use with the environment variable port=<port> or else the default port 8000 will be used:
docker run --rm -i -e CIRCLECI_TOKEN=your-circleci-token -e CIRCLECI_BASE_URL=https://circleci.com circleci:mcp-server-circleci -e start=remote -e port=8000Development with MCP Inspector
The easiest way to iterate on the MCP Server is using the MCP inspector. You can learn more about the MCP inspector at https://modelcontextprotocol.io/docs/tools/inspector
Start the development server:
pnpm watch # Keep this running in one terminalIn a separate terminal, launch the inspector:
pnpm inspectorConfigure the environment:
Add your
CIRCLECI_TOKENto the Environment Variables section in the inspector UIThe token needs read access to your CircleCI projects
Optionally you can set your CircleCI Base URL. Defaults to
https//circleci.com
Testing
Run the test suite:
pnpm testRun tests in watch mode during development:
pnpm test:watch
For more detailed contribution guidelines, see CONTRIBUTING.md
Available Tools
13 toolsanalyze_diffA
This tool is used to analyze a git diff (unstaged, staged, or all changes) against IDE rules to identify rule violations. By default, the tool will use the staged changes, unless the user explicitly asks for unstaged or all changes.
Parameters:
params: An object containing:
speedMode: boolean - A mode that can be enabled to speed up the analysis. Default value is false.
filterBy: enum - "Violations" | "Compliants" | "Human Review Required" | "None" - A filter that can be applied to set the focus of the analysis. Default is None.
diff: string - A git diff string.
rules: string - Rules to use for analysis, found in the rules subdirectory of the IDE workspace settings. Combine all rules from multiple files by separating them with ---
Returns:
A list of rule violations found in the git diff.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
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 describes the analysis process and default behavior for diff selection, but lacks details on permissions, rate limits, error handling, or output format beyond 'a list of rule violations.' For a tool with no annotations, this leaves gaps in understanding its operational 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 well-structured and appropriately sized. It starts with the core purpose, adds usage context, then details parameters and returns. Each sentence adds value, with no redundant information. A minor deduction because the parameter explanations could be slightly more concise, but overall it's efficient and front-loaded.
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 tool's complexity (analyzing git diffs with configurable rules) and the absence of annotations and output schema, the description is adequate but incomplete. It covers the purpose, parameters, and basic return type, but lacks details on error cases, performance implications of speedMode, or examples of rule violation outputs. For a tool with no structured behavioral data, more context 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 description adds significant meaning beyond the input schema. The schema has 0% description coverage (no parameter descriptions), but the tool description explains all four parameters (speedMode, filterBy, diff, rules) with practical context, including default behaviors and usage notes (e.g., 'Combine all rules from multiple files by separating them with ---'). This compensates well for the schema's lack of 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 tool's purpose: 'analyze a git diff against IDE rules to identify rule violations.' It specifies the verb ('analyze'), resource ('git diff'), and scope ('against IDE rules'), distinguishing it from sibling tools like config_helper or run_pipeline which have unrelated functions. The description is specific and unambiguous.
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 clear context for when to use the tool: 'analyze a git diff (unstaged, staged, or all changes) against IDE rules.' It also specifies default behavior: 'By default, the tool will use the staged changes, unless the user explicitly asks for unstaged or all changes.' However, it does not mention when NOT to use this tool or explicitly name alternatives among siblings, which prevents a score of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_helperB
This tool helps analyze and validate and fix CircleCI configuration files.
Parameters:
params: An object containing:
configFile: string - The full contents of the CircleCI config file as a string. This should be the raw YAML content, not a file path.
Example usage: { "params": { "configFile": "version: 2.1 orbs: node: circleci/node@7 ..." } }
Note: The configFile content should be provided as a properly escaped string with newlines represented as .
Tool output instructions: - If the config is invalid, the tool will return the errors and the original config. Use the errors to fix the config. - If the config is valid, do nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behavioral traits: the tool analyzes, validates, and fixes configs; it returns errors and original config if invalid, and does nothing if valid. However, it misses details like rate limits, authentication needs, or whether 'fix' is automated or suggested, which are important 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 front-loaded with the purpose but includes redundant sections like 'Parameters:' that repeat schema info. The example and notes are helpful but could be more streamlined. Overall, it's adequately sized but has some inefficiencies in structure.
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 1 parameter with 0% schema coverage, the description provides basic completeness: purpose, param details, and output behavior. However, for a tool that 'fixes' configs (implying mutation), it lacks critical context like side effects, error handling specifics, or return format details, making it minimally adequate.
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 0%, so the description must compensate. It adds significant meaning beyond the schema: it explains that 'configFile' is the raw YAML content as a string, not a file path, and provides an example with formatting notes. This clarifies usage effectively, though it could detail YAML structure or constraints more.
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 tool's purpose: 'analyze and validate and fix CircleCI configuration files.' It specifies the verb ('analyze, validate, fix') and resource ('CircleCI configuration files'), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'run_pipeline' or 'rerun_workflow', which might involve config validation indirectly.
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 implies usage context through the example and output instructions, suggesting this tool is for validating configs before execution. However, it lacks explicit guidance on when to use this versus alternatives (e.g., 'run_pipeline' might handle validation internally) or any prerequisites, leaving some ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_prompt_templateA
ABOUT THIS TOOL:
This tool is part of a toolchain that generates and provides test cases for a prompt template.
This tool helps an AI assistant to generate a prompt template based on one of the following:
feature requirements defined by a user - in which case the tool will generate a new prompt template based on the feature requirements.
a pre-existing prompt or prompt template that a user wants to test, evaluate, or modify - in which case the tool will convert it into a more structured and testable prompt template while leaving the original prompt language relatively unchanged.
This tool will return a structured prompt template (e.g.
template) along with a context schema (e.g.contextSchema) that defines the expected input parameters for the prompt template.In some cases, a user will want to add test coverage for ALL of the prompts in a given application. In these cases, the AI agent should use this tool to generate a prompt template for each prompt in the application, and should check the entire application for AI prompts that are not already covered by a prompt template in the
./promptsdirectory.
WHEN SHOULD THIS TOOL BE TRIGGERED?
This tool should be triggered whenever the user provides requirements for a new AI-enabled application or a new AI-enabled feature of an existing application (i.e. one that requires a prompt request to an LLM or any AI model).
This tool should also be triggered if the user provides a pre-existing prompt or prompt template from their codebase that they want to test, evaluate, or modify.
This tool should be triggered even if there are pre-existing files in the
./promptsdirectory with the<relevant-name>.prompt.ymlconvention (e.g.bedtime-story-generator.prompt.yml,plant-care-assistant.prompt.yml,customer-support-chatbot.prompt.yml, etc.). Similar files should NEVER be generated directly by the AI agent. Instead, the AI agent should use this tool to first generate a new prompt template.
PARAMETERS:
params: object
prompt: string (the feature requirements or pre-existing prompt/prompt template that will be used to generate a prompt template. Can be a multi-line string.)
promptOrigin: "codebase" | "requirements" (indicates whether the prompt comes from an existing codebase or from new requirements)
model: string (the model that the prompt template will be tested against. Explicitly specify the model if it can be inferred from the codebase. Otherwise, defaults to
gpt-4.1-mini.)temperature: number (the temperature of the prompt template. Explicitly specify the temperature if it can be inferred from the codebase. Otherwise, defaults to 1.)
EXAMPLE USAGE (from new requirements): { "params": { "prompt": "Create an app that takes any topic and an age (in years), then renders a 1-minute bedtime story for a person of that age.", "promptOrigin": "requirements" "model": "gpt-4.1-mini" "temperature": 1.0 } }
EXAMPLE USAGE (from pre-existing prompt/prompt template in codebase): { "params": { "prompt": "The user wants a bedtime story about {{topic}} for a person of age {{age}} years old. Please craft a captivating tale that captivates their imagination and provides a delightful bedtime experience.", "promptOrigin": "codebase" "model": "claude-3-5-sonnet-latest" "temperature": 0.7 } }
TOOL OUTPUT INSTRUCTIONS:
The tool will return...
a
templatethat reformulates the user's prompt into a more structured format.a
contextSchemathat defines the expected input parameters for the template.a
promptOriginthat indicates whether the prompt comes from an existing prompt or prompt template in the user's codebase or from new requirements.
The tool output -- the
template,contextSchema, andpromptOrigin-- will also be used as input to therecommend_prompt_template_teststool to generate a list of recommended tests that can be used to test the prompt template.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well. It explains the tool's role in a toolchain, describes the transformation process (converting to structured format), specifies output components (template, contextSchema, promptOrigin), and mentions downstream usage with 'recommend_prompt_template_tests'. However, it doesn't address potential limitations like error conditions or processing 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 well-structured with clear sections (ABOUT, WHEN, PARAMETERS, EXAMPLES, OUTPUT), but it's verbose with some redundancy. Sentences like 'This tool will return a structured prompt template...' could be more concise. While organized, it could be tightened without losing clarity.
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, 0% schema coverage, no output schema, and moderate complexity, the description does well. It explains the tool's purpose, usage, parameters, examples, and output format. However, it doesn't fully address error handling, validation rules, or what happens with malformed inputs, leaving some gaps for a tool with significant transformation responsibility.
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 0%, so the description must compensate. It provides a dedicated PARAMETERS section explaining each parameter's purpose, including the distinction between 'codebase' and 'requirements' origins, default values for model/temperature, and usage examples. This adds substantial value beyond the bare schema, though it doesn't fully explain all edge cases for parameter values.
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 tool's purpose: 'generate a prompt template based on feature requirements or pre-existing prompts.' It specifies the exact action (generate), resource (prompt template), and distinguishes between two distinct input scenarios. This is specific and unambiguous, with no sibling tools performing similar functions.
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 explicitly states when to trigger the tool: for new AI application/feature requirements OR for pre-existing prompts from codebases. It also provides exclusion guidance: 'Similar files should NEVER be generated directly by the AI agent' and specifies to use this tool even when prompt files already exist. This gives clear when/when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_flaky_testsA
This tool retrieves information about flaky tests in a CircleCI project.
The agent receiving this output MUST analyze the flaky test data and implement appropriate fixes based on the specific issues identified.
CRITICAL REQUIREMENTS:
1. Truncation Handling (HIGHEST PRIORITY):
- ALWAYS check for <MCPTruncationWarning> in the output
- When present, you MUST start your response with:
"WARNING: The logs have been truncated. Only showing the most recent entries. Earlier build failures may not be visible."
- Only proceed with log analysis after acknowledging the truncation
Input options (EXACTLY ONE of these THREE options must be used):
Option 1 - Project Slug:
- projectSlug: The project slug obtained from listFollowedProjects tool (e.g., "gh/organization/project")
Option 2 - Direct URL (provide ONE of these):
- projectURL: The URL of the CircleCI project in any of these formats:
* Project URL: https://app.circleci.com/pipelines/gh/organization/project
* Pipeline URL: https://app.circleci.com/pipelines/gh/organization/project/123
* Workflow URL: https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def
* Job URL: https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def/jobs/xyz
Option 3 - Project Detection (ALL of these must be provided together):
- workspaceRoot: The absolute path to the workspace root
- gitRemoteURL: The URL of the git remote repository
Additional Requirements:
- Never call this tool with incomplete parameters
- If using Option 1, make sure to extract the projectSlug exactly as provided by listFollowedProjects
- If using Option 2, the URLs MUST be provided by the user - do not attempt to construct or guess URLs
- If using Option 3, BOTH parameters (workspaceRoot, gitRemoteURL) must be provided
- If none of the options can be fully satisfied, ask the user for the missing information before making the tool call
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
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. It effectively describes several behavioral traits: the tool's output may be truncated (with specific handling instructions), it requires exactly one of three parameter sets, and it has strict validation requirements for each parameter option. However, it doesn't mention authentication needs, rate limits, or what happens when flaky tests are found (beyond stating the agent should 'implement appropriate fixes').
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 appropriately front-loaded with the core purpose, but contains significant redundancy and instructional content that extends beyond tool description. The 'CRITICAL REQUIREMENTS' section includes agent instructions about output handling that belong in a different context. While well-structured with clear sections, it's verbose (over 400 words) with some sentences that don't directly describe the tool's behavior or parameters.
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 (multiple parameter patterns, no annotations, no output schema), the description provides substantial context about parameter usage, validation rules, and output handling. It adequately covers the tool's operational context despite the lack of structured metadata. However, it doesn't explain what format the flaky test information returns in or what specific data fields are available, which would be helpful given the absence of an output schema.
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?
With 0% schema description coverage (the schema provides only basic parameter names without meaningful descriptions), the description comprehensively compensates by explaining all four parameters in detail. It clarifies the three mutually exclusive usage patterns, provides specific format examples for each parameter, explains relationships between parameters (e.g., Option 3 requires BOTH workspaceRoot and gitRemoteURL), and gives practical guidance on parameter sourcing and validation.
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 tool 'retrieves information about flaky tests in a CircleCI project', providing a specific verb ('retrieves') and resource ('flaky tests'). It distinguishes from sibling tools like 'get_job_test_results' or 'get_build_failure_logs' by focusing specifically on flaky tests rather than general test results or failure logs. However, it doesn't explicitly contrast with these siblings in the description text.
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 extensive, explicit guidance on when and how to use this tool through the 'CRITICAL REQUIREMENTS' and 'Input options' sections. It specifies three mutually exclusive parameter options with clear conditions ('EXACTLY ONE of these THREE options must be used'), includes prerequisites ('If using Option 1, make sure to extract the projectSlug exactly as provided by listFollowedProjects'), and gives explicit fallback instructions ('If none of the options can be fully satisfied, ask the user for the missing information before making the tool call').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_build_failure_logsA
This tool helps debug CircleCI build failures by retrieving failure logs.
CRITICAL REQUIREMENTS:
1. Truncation Handling (HIGHEST PRIORITY):
- ALWAYS check for <MCPTruncationWarning> in the output
- When present, you MUST start your response with:
"WARNING: The logs have been truncated. Only showing the most recent entries. Earlier build failures may not be visible."
- Only proceed with log analysis after acknowledging the truncation
Input options (EXACTLY ONE of these THREE options must be used):
Option 1 - Project Slug and branch (BOTH required):
- projectSlug: The project slug obtained from listFollowedProjects tool (e.g., "gh/organization/project")
- branch: The name of the branch (required when using projectSlug)
Option 2 - Direct URL (provide ONE of these):
- projectURL: The URL of the CircleCI project in any of these formats:
* Project URL: https://app.circleci.com/pipelines/gh/organization/project
* Pipeline URL: https://app.circleci.com/pipelines/gh/organization/project/123
* Legacy Job URL: https://circleci.com/pipelines/gh/organization/project/123
* Workflow URL: https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def
* Job URL: https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def/jobs/xyz
Option 3 - Project Detection (ALL of these must be provided together):
- workspaceRoot: The absolute path to the workspace root
- gitRemoteURL: The URL of the git remote repository
- branch: The name of the current branch
Recommended Workflow:
1. Use listFollowedProjects tool to get a list of projects
2. Extract the projectSlug from the chosen project (format: "gh/organization/project")
3. Use that projectSlug with a branch name for this tool
Additional Requirements:
- Never call this tool with incomplete parameters
- If using Option 1, make sure to extract the projectSlug exactly as provided by listFollowedProjects
- If using Option 2, the URLs MUST be provided by the user - do not attempt to construct or guess URLs
- If using Option 3, ALL THREE parameters (workspaceRoot, gitRemoteURL, branch) must be provided
- If none of the options can be fully satisfied, ask the user for the missing information before making the tool call
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
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 and does so comprehensively. It reveals critical behavioral traits including truncation handling requirements (checking for <MCPTruncationWarning>, required warning message), input validation rules (exactly one of three options, parameter completeness requirements), and workflow dependencies (recommends using listFollowedProjects first). This goes well beyond what a basic description would provide.
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 well-structured with clear sections (CRITICAL REQUIREMENTS, Input options, Recommended Workflow, Additional Requirements) but is quite lengthy. While every sentence earns its place by providing essential guidance, the front-loading could be improved - the core purpose appears early, but critical behavioral details are buried in later sections. The structure helps navigation but the length reduces conciseness.
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 tool's complexity (multiple input options, truncation handling, workflow dependencies) and the absence of both annotations and output schema, the description provides complete contextual information. It covers purpose, usage scenarios, parameter semantics, behavioral constraints, error handling, and integration with other tools. No additional information would be needed for an agent to use this tool correctly.
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?
Despite having 0% schema description coverage (the schema has descriptions but they're not counted in coverage), the description provides extensive parameter semantics that fully compensate. It explains the three distinct parameter options, their relationships (mutual exclusivity, required combinations), specific format requirements (e.g., projectSlug format from listFollowedProjects), and practical usage examples. This adds substantial meaning beyond the basic schema properties.
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 tool's purpose: 'retrieving failure logs' to 'debug CircleCI build failures'. It specifies the exact resource (failure logs) and verb (retrieve), and distinguishes it from siblings like get_job_test_results or get_latest_pipeline_status by focusing specifically on failure logs rather than test results or status.
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 explicit, detailed guidance on when and how to use this tool versus alternatives. It outlines three distinct input options with clear requirements, specifies that exactly one option must be used, and provides a recommended workflow starting with the listFollowedProjects tool. It also includes explicit exclusions ('Never call this tool with incomplete parameters') and prerequisites for each option.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_test_resultsA
This tool retrieves test metadata for a CircleCI job.
PRIORITY USE CASE:
- When asked "are tests passing in CI?" or similar questions about test status
- When asked to "fix failed tests in CI" or help with CI test failures
- Use this tool to check if tests are passing in CircleCI and identify failed tests
Common use cases:
- Get test metadata for a specific job
- Get test metadata for all jobs in a project
- Get test metadata for a specific branch
- Get test metadata for a specific pipeline
- Get test metadata for a specific workflow
- Get test metadata for a specific job
CRITICAL REQUIREMENTS:
1. Truncation Handling (HIGHEST PRIORITY):
- ALWAYS check for <MCPTruncationWarning> in the output
- When present, you MUST start your response with:
"WARNING: The test results have been truncated. Only showing the most recent entries. Some test data may not be visible."
- Only proceed with test result analysis after acknowledging the truncation
2. Test Result Filtering:
- Use filterByTestsResult parameter to filter test results:
* filterByTestsResult: 'failure' - Show only failed tests
* filterByTestsResult: 'success' - Show only successful tests
- When looking for failed tests, ALWAYS set filterByTestsResult to 'failure'
- When checking if tests are passing, set filterByTestsResult to 'success'
Input options (EXACTLY ONE of these THREE options must be used):
Option 1 - Project Slug and branch (BOTH required):
- projectSlug: The project slug obtained from listFollowedProjects tool (e.g., "gh/organization/project")
- branch: The name of the branch (required when using projectSlug)
Option 2 - Direct URL (provide ONE of these):
- projectURL: The URL of the CircleCI job in any of these formats:
* Job URL: https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def/jobs/789
* Workflow URL: https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def
* Pipeline URL: https://app.circleci.com/pipelines/gh/organization/project/123
Option 3 - Project Detection (ALL of these must be provided together):
- workspaceRoot: The absolute path to the workspace root
- gitRemoteURL: The URL of the git remote repository
- branch: The name of the current branch
For simple test status checks (e.g., "are tests passing in CI?") or fixing failed tests, prefer Option 1 with a recent pipeline URL if available.
Additional Requirements:
- Never call this tool with incomplete parameters
- If using Option 1, make sure to extract the projectSlug exactly as provided by listFollowedProjects and include the branch parameter
- If using Option 2, the URL MUST be provided by the user - do not attempt to construct or guess URLs
- If using Option 3, ALL THREE parameters (workspaceRoot, gitRemoteURL, branch) must be provided
- If none of the options can be fully satisfied, ask the user for the missing information before making the tool call
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
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. It effectively describes critical behavioral traits: truncation handling with specific warning requirements, test result filtering logic, and strict parameter combination rules. However, it doesn't mention rate limits, authentication needs, or error handling, leaving some gaps for a tool with complex input requirements.
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 appropriately front-loaded with purpose and priority use cases, but becomes verbose with repetitive sections like 'Get test metadata for...' listing and detailed parameter explanations that could be more streamlined. While all content is valuable, the structure could be more efficient given the length.
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 tool's complexity (multiple parameter options, no annotations, no output schema), the description does an excellent job covering input requirements and behavioral expectations. It explains truncation handling, filtering logic, and parameter combinations thoroughly. The main gap is lack of output format description, which would help agents interpret results.
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 0%, so the description must fully compensate. It provides comprehensive parameter semantics: explains three distinct input options with their required combinations, clarifies parameter purposes beyond schema names, and offers practical examples. The description adds significant value by organizing parameters into logical groups and explaining their relationships.
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 tool's purpose with specific verb+resource: 'retrieves test metadata for a CircleCI job.' It distinguishes from siblings by focusing on test results rather than pipeline status, build logs, or other CI aspects. The title is null, so the description fully carries the purpose definition.
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 explicit guidance on when to use this tool with 'PRIORITY USE CASE' section listing specific scenarios like 'are tests passing in CI?' and 'fix failed tests in CI.' It also offers alternatives within the tool via parameter options and distinguishes from sibling tools by its test-focused nature versus general pipeline status or build logs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latest_pipeline_statusA
This tool retrieves the status of the latest pipeline for a CircleCI project. It can be used to check pipeline status, get latest build status, or view current pipeline state.
Common use cases:
- Check latest pipeline status
- Get current build status
- View pipeline state
- Check build progress
- Get pipeline information
Input options (EXACTLY ONE of these THREE options must be used):
Option 1 - Project Slug and branch (BOTH required):
- projectSlug: The project slug obtained from listFollowedProjects tool (e.g., "gh/organization/project")
- branch: The name of the branch (required when using projectSlug)
Option 2 - Direct URL (provide ONE of these):
- projectURL: The URL of the CircleCI project in any of these formats:
* Project URL: https://app.circleci.com/pipelines/gh/organization/project
* Pipeline URL: https://app.circleci.com/pipelines/gh/organization/project/123
* Workflow URL: https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def
* Job URL: https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def/jobs/xyz
* Legacy Job URL: https://circleci.com/gh/organization/project/123
Option 3 - Project Detection (ALL of these must be provided together):
- workspaceRoot: The absolute path to the workspace root
- gitRemoteURL: The URL of the git remote repository
- branch: The name of the current branch
Recommended Workflow:
1. Use listFollowedProjects tool to get a list of projects
2. Extract the projectSlug from the chosen project (format: "gh/organization/project")
3. Use that projectSlug with a branch name for this tool
Additional Requirements:
- Never call this tool with incomplete parameters
- If using Option 1, make sure to extract the projectSlug exactly as provided by listFollowedProjects
- If using Option 2, the URLs MUST be provided by the user - do not attempt to construct or guess URLs
- If using Option 3, ALL THREE parameters (workspaceRoot, gitRemoteURL, branch) must be provided
- If none of the options can be fully satisfied, ask the user for the missing information before making the tool call
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
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. It effectively describes the tool's behavior by detailing three distinct input options with specific requirements (e.g., 'EXACTLY ONE of these THREE options must be used'), constraints like 'ALL THREE parameters must be provided' for Option 3, and error-handling guidance ('ask the user for the missing information'). It lacks details on rate limits or authentication needs, but covers operational constraints well.
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 well-structured with clear sections (purpose, use cases, input options, workflow, requirements), but it is verbose. Sentences like 'It can be used to check pipeline status, get latest build status, or view current pipeline state' are redundant with the opening statement. The 'Common use cases' list repeats similar ideas (e.g., 'Check latest pipeline status' and 'View pipeline state'), reducing efficiency. However, the structure aids readability.
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 (multiple input options, no annotations, no output schema), the description is largely complete. It thoroughly explains parameter usage, dependencies, and workflows. The main gap is the lack of information on return values (e.g., what status data is provided), which is significant since there's no output schema. Otherwise, it adequately covers the tool's operational context and constraints.
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 0%, so the description must fully compensate. It adds significant meaning beyond the bare schema by explaining the three input options in detail, specifying exact parameter combinations (e.g., 'Option 1 - Project Slug and branch (BOTH required)'), providing examples for each parameter, and clarifying interdependencies and usage rules. This transforms the schema from a simple list into actionable guidance.
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 tool's purpose: 'retrieves the status of the latest pipeline for a CircleCI project.' It specifies the verb ('retrieves'), resource ('latest pipeline'), and scope ('CircleCI project'), distinguishing it from siblings like 'run_pipeline' (executes) or 'get_build_failure_logs' (focuses on logs).
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 explicit guidance on when to use this tool versus alternatives. It includes a 'Recommended Workflow' section directing users to first use 'listFollowedProjects' to obtain a projectSlug, and it lists 'Common use cases' like checking pipeline status or build progress. It also specifies when not to use it (e.g., 'Never call this tool with incomplete parameters').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_followed_projectsA
This tool lists all projects that the user is following on CircleCI.
Common use cases:
- Identify which CircleCI projects are available to the user
- Select a project for subsequent operations
- Obtain the projectSlug needed for other CircleCI tools
Returns:
- A list of projects that the user is following on CircleCI
- Each entry includes the project name and its projectSlug
Workflow:
1. Run this tool to see available projects
2. User selects a project from the list
3. The LLM should extract and use the projectSlug (not the project name) from the selected project for subsequent tool calls
4. The projectSlug is required for many other CircleCI tools, and will be used for those tool calls after a project is selected
Note: If pagination limits are reached, the tool will indicate that not all projects could be displayed.
IMPORTANT: Do not automatically run any additional tools after this tool is called. Wait for explicit user instruction before executing further tool calls. The LLM MUST NOT invoke any other CircleCI tools until receiving a clear instruction from the user about what to do next, even if the user selects a project. It is acceptable to list out tool call options for the user to choose from, but do not execute them until instructed.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
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. It effectively describes key behaviors: it's a read-only listing operation (implied by 'lists'), discloses pagination limits ('If pagination limits are reached, the tool will indicate that not all projects could be displayed'), and specifies the return format ('Each entry includes the project name and its projectSlug'). However, it doesn't mention authentication requirements or rate limits, which would be helpful for a complete behavioral picture.
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 appropriately front-loaded with the core purpose, but contains some redundancy (e.g., 'Returns' section repeats what's in the initial description, and the workflow section could be more concise). The 'IMPORTANT' warning about not automatically running tools is valuable but lengthy. Overall, it's comprehensive but could be more tightly structured.
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 tool's simplicity (0 parameters, no annotations, no output schema), the description provides complete contextual information. It explains what the tool does, when to use it, what it returns, workflow guidance, and important behavioral constraints. For a listing tool with no complex inputs or outputs, this description covers all necessary 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 0 parameters (empty object), so there are no parameters to document. The description appropriately doesn't discuss parameters, focusing instead on the tool's purpose and usage. With no parameters to cover, this exceeds the baseline expectation for 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 specific action ('lists all projects that the user is following') and resource ('on CircleCI'), distinguishing it from siblings like 'run_pipeline' or 'get_latest_pipeline_status' which perform different operations. It goes beyond just restating the name by specifying the scope (user's followed projects).
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 explicit guidance on when to use this tool ('Identify which CircleCI projects are available to the user', 'Select a project for subsequent operations', 'Obtain the projectSlug needed for other CircleCI tools') and includes a detailed workflow section. It also explicitly states when NOT to use it automatically ('Do not automatically run any additional tools after this tool is called'), addressing alternatives by requiring explicit user instruction for subsequent actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_prompt_template_testsB
About this tool:
This tool is part of a toolchain that generates and provides test cases for a prompt template.
This tool generates an array of recommended tests for a given prompt template.
Parameters:
params: object
promptTemplate: string (the prompt template to be tested)
contextSchema: object (the context schema that defines the expected input parameters for the prompt template)
promptOrigin: "codebase" | "requirements" (indicates whether the prompt comes from an existing codebase or from new requirements)
model: string (the model that the prompt template will be tested against)
Example usage: { "params": { "promptTemplate": "The user wants a bedtime story about {{topic}} for a person of age {{age}} years old. Please craft a captivating tale that captivates their imagination and provides a delightful bedtime experience.", "contextSchema": { "topic": "string", "age": "number" }, "promptOrigin": "codebase" } }
The tool will return a structured array of test cases that can be used to test the prompt template.
Tool output instructions:
- The tool will return a recommendedTests array that can be used to test the prompt template.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
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 describes the tool's function and output format ('structured array of test cases'), but lacks details on permissions, rate limits, side effects, or error handling. For a tool with no annotations, this leaves significant gaps in understanding its operational 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 well-structured with clear sections (About, Parameters, Example usage, Tool output instructions) and front-loaded key information. It's appropriately sized for the tool's complexity, though some sentences could be more concise (e.g., the example usage is detailed but necessary). Overall, it's efficient with minimal waste.
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 tool's moderate complexity (1 parameter with nested objects), no annotations, and no output schema, the description provides a good foundation but has gaps. It explains the purpose, parameters, and output format, but lacks details on behavioral traits, error cases, and doesn't fully cover all schema parameters (e.g., temperature). It's adequate but not fully complete for safe and 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 description provides a 'Parameters' section that lists and briefly explains each parameter (promptTemplate, contextSchema, promptOrigin, model), adding meaning beyond the input schema. Since schema description coverage is 0%, the description compensates well by documenting the parameters, though it doesn't cover all schema parameters (e.g., temperature is omitted). The value added is substantial but not complete.
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 tool's purpose: 'generates an array of recommended tests for a given prompt template.' It specifies the verb ('generates') and resource ('recommended tests'), though it doesn't explicitly differentiate from sibling tools like 'run_evaluation_tests' or 'find_flaky_tests' which might also involve testing. The purpose is clear but 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 implies usage context by mentioning it's 'part of a toolchain that generates and provides test cases for a prompt template,' suggesting it should be used in a testing workflow. However, it doesn't explicitly state when to use this tool versus alternatives like 'run_evaluation_tests' or provide clear exclusions. The guidance is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rerun_workflowA
This tool is used to rerun a workflow from start or from the failed job.
Common use cases:
Rerun a workflow from a failed job
Rerun a workflow from start
Input options (EXACTLY ONE of these TWO options must be used):
Option 1 - Workflow ID:
workflowId: The ID of the workflow to rerun
fromFailed: true to rerun from failed, false to rerun from start. If omitted, behavior is based on workflow status. (optional)
Option 2 - Workflow URL:
workflowURL: The URL of the workflow to rerun
fromFailed: true to rerun from failed, false to rerun from start. If omitted, behavior is based on workflow status. (optional)
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
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. It explains the rerun behavior (from start or from failed) and the conditional logic when 'fromFailed' is omitted. However, it doesn't cover important aspects like authentication requirements, rate limits, error handling, or what happens to the original workflow. The description adds some behavioral context but leaves significant gaps.
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 well-structured and efficiently organized. It starts with a clear purpose statement, lists common use cases, then presents input options in a logical format with bullet points. Every sentence serves a purpose - there's no wasted text. The information is front-loaded 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 tool's complexity (mutating operation with conditional logic) and the lack of both annotations and output schema, the description should do more. While it covers parameters well, it doesn't explain what the tool returns, error conditions, or system behavior during execution. For a mutation tool with no structured safety information, this leaves important gaps for an AI agent.
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 0%, so the description must fully compensate. It does this excellently by explaining the two input options (Workflow ID vs Workflow URL), the exclusive nature of these options ('EXACTLY ONE'), and the conditional behavior of the 'fromFailed' parameter. The description provides crucial semantic information that the schema lacks, including URL format examples and usage rules.
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 tool's purpose: 'rerun a workflow from start or from the failed job.' It specifies the verb ('rerun') and resource ('workflow'), but doesn't explicitly differentiate from sibling tools like 'run_pipeline' or 'run_rollback_pipeline' that might have overlapping functionality. The description is specific about what the tool does but lacks sibling comparison.
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 clear context for when to use the tool: 'Common use cases: - Rerun a workflow from a failed job - Rerun a workflow from start.' It gives practical scenarios but doesn't explicitly state when NOT to use it or mention alternatives among sibling tools. The guidance is helpful but could be more comprehensive regarding exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_evaluation_testsA
This tool allows the users to run evaluation tests on a circleci pipeline.
They can be referred to as "Prompt Tests" or "Evaluation Tests".
This tool triggers a new CircleCI pipeline and returns the URL to monitor its progress.
The tool will generate an appropriate circleci configuration file and trigger a pipeline using this temporary configuration.
The tool will return the project slug.
Input options (EXACTLY ONE of these THREE options must be used):
Option 1 - Project Slug and branch (BOTH required):
- projectSlug: The project slug obtained from listFollowedProjects tool (e.g., "gh/organization/project")
- branch: The name of the branch (required when using projectSlug)
Option 2 - Direct URL (provide ONE of these):
- projectURL: The URL of the CircleCI project in any of these formats:
* Project URL with branch: https://app.circleci.com/pipelines/gh/organization/project?branch=feature-branch
* Pipeline URL: https://app.circleci.com/pipelines/gh/organization/project/123
* Workflow URL: https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def
* Job URL: https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def/jobs/xyz
Option 3 - Project Detection (ALL of these must be provided together):
- workspaceRoot: The absolute path to the workspace root
- gitRemoteURL: The URL of the git remote repository
- branch: The name of the current branch
Test Files:
- promptFiles: Array of prompt template file objects from the ./prompts directory, each containing:
* fileName: The name of the prompt template file
* fileContent: The contents of the prompt template file
Pipeline Selection:
- If the project has multiple pipeline definitions, the tool will return a list of available pipelines
- You must then make another call with the chosen pipeline name using the pipelineChoiceName parameter
- The pipelineChoiceName must exactly match one of the pipeline names returned by the tool
- If the project has only one pipeline definition, pipelineChoiceName is not needed
Additional Requirements:
- Never call this tool with incomplete parameters
- If using Option 1, make sure to extract the projectSlug exactly as provided by listFollowedProjects
- If using Option 2, the URLs MUST be provided by the user - do not attempt to construct or guess URLs
- If using Option 3, ALL THREE parameters (workspaceRoot, gitRemoteURL, branch) must be provided
- If none of the options can be fully satisfied, ask the user for the missing information before making the tool call
Returns:
- A URL to the newly triggered pipeline that can be used to monitor its progress
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well. It discloses key behaviors: generates temporary configuration files, may return a list of pipelines for selection, requires follow-up calls with pipelineChoiceName when multiple pipelines exist, and returns a URL for monitoring. It doesn't mention rate limits or authentication requirements, but covers most operational aspects.
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 well-structured with clear sections (Input options, Test Files, Pipeline Selection, Additional Requirements, Returns), but is quite lengthy. While most sentences earn their place by providing necessary guidance, some redundancy exists (e.g., repeating URL formats in both Option 2 and projectURL description). It could be more front-loaded.
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 tool's complexity (multiple input options, conditional pipeline selection, no annotations, no output schema), the description is mostly complete. It explains what the tool does, how to use it, and what it returns. The main gap is lack of error handling details or what happens when tests fail, but overall it provides sufficient context for an agent to use the tool correctly.
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 description adds substantial value beyond the input schema, which has 0% description coverage. It explains the three input options in detail, clarifies mutual exclusivity ('EXACTLY ONE of these THREE options'), provides format examples for URLs, and explains the pipeline selection logic. This compensates fully for the schema's lack of descriptions.
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 tool's purpose: 'run evaluation tests on a circleci pipeline' and specifies it 'triggers a new CircleCI pipeline and returns the URL to monitor its progress.' It distinguishes from siblings like 'run_pipeline' by focusing specifically on evaluation/prompt tests, not general pipeline execution.
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 explicit usage guidelines with three distinct input options and clear conditions for each. It includes when-not-to-use guidance: 'Never call this tool with incomplete parameters' and 'If none of the options can be fully satisfied, ask the user for the missing information.' It also references sibling tool 'listFollowedProjects' for obtaining projectSlug.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_pipelineA
This tool triggers a new CircleCI pipeline and returns the URL to monitor its progress.
Input options (EXACTLY ONE of these THREE options must be used):
Option 1 - Project Slug and branch (BOTH required):
- projectSlug: The project slug obtained from listFollowedProjects tool (e.g., "gh/organization/project")
- branch: The name of the branch (required when using projectSlug)
Option 2 - Direct URL (provide ONE of these):
- projectURL: The URL of the CircleCI project in any of these formats:
* Project URL with branch: https://app.circleci.com/pipelines/gh/organization/project?branch=feature-branch
* Pipeline URL: https://app.circleci.com/pipelines/gh/organization/project/123
* Workflow URL: https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def
* Job URL: https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def/jobs/xyz
Option 3 - Project Detection (ALL of these must be provided together):
- workspaceRoot: The absolute path to the workspace root
- gitRemoteURL: The URL of the git remote repository
- branch: The name of the current branch
Configuration:
- an optional configContent parameter can be provided to override the default pipeline configuration
Pipeline Selection:
- If the project has multiple pipeline definitions, the tool will return a list of available pipelines
- You must then make another call with the chosen pipeline name using the pipelineChoiceName parameter
- The pipelineChoiceName must exactly match one of the pipeline names returned by the tool
- If the project has only one pipeline definition, pipelineChoiceName is not needed
Additional Requirements:
- Never call this tool with incomplete parameters
- If using Option 1, make sure to extract the projectSlug exactly as provided by listFollowedProjects
- If using Option 2, the URLs MUST be provided by the user - do not attempt to construct or guess URLs
- If using Option 3, ALL THREE parameters (workspaceRoot, gitRemoteURL, branch) must be provided
- If none of the options can be fully satisfied, ask the user for the missing information before making the tool call
Returns:
- A URL to the newly triggered pipeline that can be used to monitor its progress
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does an excellent job disclosing behavioral traits: it explains the multi-step pipeline selection process, clarifies that URLs must be user-provided (not constructed), describes the return value format, and specifies parameter interdependencies. It doesn't mention rate limits or authentication requirements, but provides substantial operational context.
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 well-structured with clear sections (Input options, Configuration, Pipeline Selection, Additional Requirements, Returns) and front-loads the core purpose. While comprehensive, some sentences could be more concise (e.g., the URL format list is detailed but necessary). Every sentence adds value given the complex parameter interactions.
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 tool with 7 parameters, 0% schema coverage, no annotations, and no output schema, the description provides exceptional completeness. It covers all usage scenarios, parameter interdependencies, behavioral workflows (multi-step pipeline selection), return values, and error prevention guidance. Nothing essential appears missing for agent understanding.
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?
With 0% schema description coverage, the description fully compensates by providing rich semantic context for all parameters. It explains the three distinct usage patterns, clarifies parameter relationships (mutual exclusivity, required groupings), provides concrete examples for URL formats, and explains conditional parameter usage (pipelineChoiceName only needed for multiple pipelines).
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 specific action ('triggers a new CircleCI pipeline') and outcome ('returns the URL to monitor its progress'). It distinguishes this tool from siblings like 'get_latest_pipeline_status' (monitoring) and 'rerun_workflow' (re-running existing workflows) by focusing on initiating new pipelines.
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 explicit guidance on when to use this tool vs alternatives, including detailed instructions for three distinct parameter options with clear requirements ('EXACTLY ONE of these THREE options must be used'), prerequisites ('Never call this tool with incomplete parameters'), and fallback actions ('ask the user for the missing information before making the tool call').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_rollback_pipelineA
Run a rollback pipeline for a CircleCI project. This tool guides you through the full rollback process, adapting to the information you provide and prompting for any missing details.
**Initial Step:**
- First, call the `listFollowedProjects` tool to retrieve the list of projects the user follows.
- Then, ask the user to select a project by providing either a `projectID` or the exact `projectSlug` as returned by `listFollowedProjects`.
**Typical Flow:**
1. **Start:** User initiates a rollback request.
2. **Project Selection:** If a `projectSlug` or `projectID` is not provided, call `listFollowedProjects` and prompt the user to select a project using the exact value returned.
3. **Execute the tool and list the versions.**
4. **Workflow Rerun:**
- Inform the user of the fact that no rollback pipeline is defined for this project.
- Ask the user if they want to rerun a workflow.
- If the user wants to rerun a workflow, execute the tool with rollback_type set to `WORKFLOW_RERUN`. Do not propose to choose another project.
6. **Component Selection:**
- If the project has multiple components, present up to 20 options for the user to choose from.
- If there is only one component, proceed automatically and do not ask the user to select a component.
7. **Environment Selection:**
- If the project has multiple environments, present up to 20 options for the user to choose from.
- If there is only one environment, proceed automatically and do not ask the user to select an environment.
8. **Version Selection:**
- Present the user with available versions to rollback to, based on the selected environment and component. Include the namespace for each version.
- Ask for both the current deployed version and the target version to rollback to.
9. **Optional Details:**
- If the rollback type is `PIPELINE`, prompt the user for an optional reason for the rollback (e.g., "Critical bug fix").
- If the rollback type is `WORKFLOW_RERUN`, provide the workflow ID of the selected version to the tool.
- provide the namespace for the selected version to the tool.
10. **Confirmation:**
- Summarize the rollback request and confirm with the user before submitting.
**Parameters:**
- Either `projectSlug` (e.g., "gh/organization/repository") or `projectID` (UUID) must be provided.
- `environment_name` (optional at first if multiple environments): The target environment (e.g., "production", "staging").
- `component_name` (optional at first components): The component to rollback (e.g., "frontend", "backend").
- `current_version` (optional at first): The currently deployed version.
- `target_version` (optional at first): The version to rollback to.
- `reason` (optional): Reason for the rollback.
- `parameters` (optional): Additional rollback parameters as key-value pairs.
**Behavior:**
- If there are more than 20 environments or components, ask the user to refine their selection.
- Never attempt to guess or construct project slugs or URLs; always use values provided by the user or from `listFollowedProjects`.
- Do not prompt for missing parameters until versions have been listed.
- Do not call this tool with incomplete parameters.
- If the selected project lacks rollback pipeline configuration, provide a definitive error message without suggesting alternative projects.
**Returns:**
On success: The rollback ID or a confirmation in case of workflow rerun.
On error: A clear message describing what is missing or what went wrong.
If the selected project does not have a rollback pipeline configured: The tool will provide a clear error message specific to that project and will NOT suggest trying another project.
Important Note:
This tool is designed to work only with the specific project provided by the user.
If a project does not have rollback capability configured, the tool will NOT suggest alternatives or recommend trying other projects.
The assistant should NOT suggest trying different projects when a project lacks rollback configuration.
Each project must have its own rollback pipeline configuration to be eligible for rollback operations.
When a project cannot be rolled back, provide only the configuration guidance for THAT specific project.
If neither option is fully satisfied, prompt the user for the missing information before making the tool call.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and excels by disclosing critical behavioral traits: it describes the interactive, multi-step flow with user prompts; specifies error handling (e.g., definitive error messages without suggesting alternative projects); outlines constraints (e.g., never guess project slugs, do not call with incomplete parameters); and details success/error returns. This goes far beyond basic functionality.
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 well-structured with sections (Initial Step, Typical Flow, Parameters, Behavior, Returns, Important Note), but it is overly verbose with repetitive points (e.g., multiple warnings about not suggesting alternative projects). Some sentences could be condensed without losing clarity, making it longer than necessary for effective tool selection.
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 (multi-step interactive tool), no annotations, no output schema, and 0% schema coverage, the description is highly complete. It thoroughly explains the process, parameters, behavior, returns, and constraints, leaving no gaps for an AI agent to understand how to invoke it correctly 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 0%, so the description must compensate. It lists all parameters with brief explanations (e.g., 'projectSlug or projectID must be provided', 'optional at first if multiple environments'), clarifies dependencies (e.g., 'branch must also be provided' for projectSlug), and ties parameters to the flow (e.g., 'rollback_type set to WORKFLOW_RERUN'). While it adds significant value, some param details like format specifics are light, preventing a perfect score.
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 tool's purpose as 'Run a rollback pipeline for a CircleCI project' with specific verbs ('guides', 'adapting', 'prompting') and distinguishes it from siblings like 'rerun_workflow' and 'run_pipeline' by focusing on the full rollback process with user interaction.
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 explicit when-to-use guidance: it instructs to first call 'listFollowedProjects' for project selection, details the typical flow with conditional steps (e.g., if multiple components/environments), and specifies when not to use it (e.g., if project lacks rollback configuration, do not suggest alternatives). It clearly differentiates from siblings by outlining a guided, interactive process.
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.
13 tool updates
- First observed
analyze_diff - First observed
config_helper - First observed
create_prompt_template - First observed
find_flaky_tests - First observed
get_build_failure_logs - First observed
get_job_test_results - First observed
get_latest_pipeline_status - First observed
list_followed_projects - First observed
recommend_prompt_template_tests - First observed
rerun_workflow - First observed
run_evaluation_tests - First observed
run_pipeline - First observed
run_rollback_pipeline
TDQS
Scored across 13 tools
Most tools have distinct purposes, but there is significant overlap between run_pipeline, run_evaluation_tests, and rerun_workflow, which all involve triggering or re-running CI pipelines. Additionally, analyze_diff and config_helper are somewhat ambiguous as they analyze code/config but aren't clearly part of the core CircleCI domain. An agent might struggle to choose between these overlapping tools.
The majority of tools follow a consistent verb_noun pattern (e.g., list_followed_projects, get_build_failure_logs, run_pipeline). However, there are minor deviations like analyze_diff (verb_noun but not clearly CircleCI-specific) and config_helper (noun_verb pattern), which slightly break the consistency. Overall, naming is mostly predictable and readable.
With 13 tools, the count is reasonable for a CircleCI server, covering monitoring, debugging, and pipeline operations. However, it feels slightly heavy due to redundant pipeline-running tools and some tools (like create_prompt_template) that seem out of scope for a CI/CD server, suggesting the set could be more tightly scoped.
The server covers core CircleCI operations like listing projects, checking status, getting logs, and running pipelines, but there are notable gaps. For example, there are no tools for managing project settings, webhooks, or artifacts, and tools like create_prompt_template and recommend_prompt_template_tests seem unrelated to CircleCI, creating confusion about the domain. This incompleteness may hinder agent workflows.
Maintenance
Related MCP Connectors
Direct access to Cypress tests results and accessibility reports in your AI workflow.
Agentic CI operations for build inspection, failure diagnosis, and runner troubleshooting.
Run, debug, and triage tests from your IDE using natural language, no dashboard switching, no manual data transfers. The TestMu AI (formerly LambdaTest) MCP Server is a single remote server exposing four tool suites: HyperExecute — analyze your project, generate YAML configs and test runner commands, then monitor jobs and sessions. Automation — pull a TestID's details plus command, network, and console logs into one chat for instant root-cause analysis. Includes mobile app upload. SmartUI — explain pixel, layout, DOM, and perceptual changes in a visual regression run, with context-aware React/HTML/CSS fixes. Accessibility — audit any public URL or a local React app against WCAG and get ready-to-apply remediation steps. Connects over https://mcp.lambdatest.com/mcp using OAuth 2.1 — no API keys in your config. One-click install in Cursor; works with Claude, GitHub Copilot, Cline, and any MCP client. Tests execute on the TestMu AI cloud: 3,000+ browsers and 10,000+ real devices.
Plan Salesforce deploys, open pull requests and trigger pipelines from your AI client.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceIntegrates GitLab with AI assistants to manage merge requests, analyze CI/CD pipelines, and create Architecture Decision Records. It enables seamless code searching, pipeline triggering, and deployment management through the Model Context Protocol.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to query and manage GoCD pipelines, stages, and jobs through the Model Context Protocol. It allows users to trigger builds, analyze failures, and access build logs or artifacts using the GoCD REST API.582MIT
- AlicenseNot gradedqualityCmaintenanceProvides Jenkins CI/CD integration for AI assistants through the Model Context Protocol, enabling job management, build control, and system administration via natural language commands.1MIT
- FlicenseNot gradedqualityDmaintenanceIntegrates Harness with GenAI applications via the Model Context Protocol, enabling continuous delivery and cloud cost management through natural language.-