
Buildkite MCP, Buildkite's official MCP server
Lets your AI assistant check Buildkite builds, read job logs, diagnose failures, and retry or start builds.
This is Buildkite's own server. It lets Claude, Cursor and other assistants find why a build failed, read job logs and test results, and, if you allow it, retry jobs or start builds. Buildkite hosts a version you sign in to with your Buildkite account, and a separate read-only address cannot make changes. You can also run it yourself on your machine with an API token.
Good for
- Developers who want to know why a build is red without clicking through logs
- Platform engineers watching agents, queues and clusters
- Test owners hunting slow and flaky tests in Test Engine
- Team leads who want a quick answer on what is blocked
Works in
14 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports hosted MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports hosted MCP servers.
Install buildkite-mcp-server
Claude Code
- 1
Copy this prompt.
Add the buildkite-mcp-server server to Claude Code. Run this command: claude mcp add --transport http buildkite https://mcp.buildkite.com/mcp Ask me for BUILDKITE_API_TOKEN and only put the values in that config, nowhere else. Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Sign-in with the vendor account (OAuth).
Built from the package data we hold. Not yet tested by us.
Tools
Explains why a build failed in one step
Diagnoses a failed build in one call, with the build state, a count of jobs by state and details of the problem jobs.
Try: “Why did build 1234 on the web pipeline fail?”
Network ·
get_build_failure_summaryLists recent builds, newest first
Lists builds for one pipeline, or across all pipelines in an organization, with light details.
Try: “Show the last 10 builds on main for the web pipeline.”
Network ·
list_buildsShows one build
Returns a single build with short annotation summaries.
Try: “Show me the details of build 1234.”
Network ·
get_buildCompares a build with an earlier one
Compares step results, retries and timing between builds of one pipeline. Picks an earlier build in the same pipeline as the baseline.
Try: “What changed since this build last passed on main?”
Network ·
compare_buildsWaits until a build finishes
Polls a build until it passes, fails, is canceled or is blocked.
Try: “Wait for build 1234 to finish and tell me the result.”
Network ·
wait_for_buildLists the jobs in a build
Lists jobs for a build with a short summary, and can filter to failed or timed-out jobs.
Try: “List the failed jobs in build 1234.”
Network ·
list_jobsShows one job
Returns a single job by its ID.
Try: “Show me details of the failed test job.”
Network ·
get_jobShows a job's environment variables
Returns the environment variables set for a job. This can expose values you would rather keep private.
Try: “Show the environment variables of the deploy job.”
Network ·
get_job_envShows the last lines of a job log
Returns the last entries of a job log, which is where most failures show up.
Try: “Show the last 50 lines of the failed job's log.”
Network ·
tail_logsSearches a job log with a pattern
Searches log entries with a regular expression and optional surrounding lines.
Try: “Search that log for "ECONNRESET" with 5 lines of context.”
Network ·
search_logsReads a job log from a chosen row
Reads log entries, optionally starting at a row number, with a limit.
Try: “Read the first 100 lines of that job's log.”
Network ·
read_logsLists the pipelines in an organization
Lists pipelines with basic details, build counts and status.
Try: “List all pipelines in my organization.”
Network ·
list_pipelinesShows one pipeline's setup
Returns a pipeline's configuration, steps, environment variables and build statistics.
Try: “Show me how the deploy pipeline is configured.”
Network ·
get_pipelineChecks pipeline YAML against the schema
Validates pipeline YAML against Buildkite's schema without calling the API.
Try: “Validate this pipeline.yml.”
Read ·
validate_pipelineLists files a build produced
Lists artifacts across all jobs of a build with names, paths, sizes and types.
Try: “What artifacts did build 1234 produce?”
Network ·
list_artifacts_for_buildReads one build artifact
Returns an artifact. Text files under 64 KiB come back inline.
Try: “Open the coverage summary artifact from that build.”
Network ·
get_artifactLists notes attached to a build or job
Lists annotations for a build or a single job.
Try: “Show the annotations on build 1234.”
Network ·
list_annotationsLists your build agents
Lists agents with connection state, host details, version, current job and pause status.
Try: “Which agents are offline right now?”
Network ·
list_agentsLists your clusters
Lists clusters with names, descriptions and default queues.
Try: “List my clusters.”
Network ·
list_clustersLists the queues in a cluster
Lists queues with keys, dispatch status and agent configuration.
Try: “Which queues in the main cluster are paused?”
Network ·
list_cluster_queuesLists tests in a Test Engine suite
Lists tests with execution metrics over a time window, with filtering.
Try: “Which tests in the unit suite were slowest this week?”
Network ·
list_testsShows one Test Engine run
Returns a specific test run in Test Engine.
Try: “Show me the latest test run for the unit suite.”
Network ·
get_test_runLists the failed tests in a test run
Returns failed test executions for a run, with expanded failure details if you ask.
Try: “Which tests failed in that run, and why?”
Network ·
get_failed_executionsFinds the test suites a pipeline reports to
Lists Test Engine suites with recorded runs from a pipeline.
Try: “Which test suites does the web pipeline report to?”
Network ·
list_test_suites_for_pipelineShows who the token belongs to
Returns the name, email and account details of the token's owner.
Try: “Which Buildkite user am I connected as?”
Network ·
current_userShows what the current token can do
Returns the current API token's scopes and ID.
Try: “What permissions does my token have?”
Network ·
access_tokenStarts a new build
Triggers a build on a pipeline for a commit and branch, with optional environment variables and metadata. Pipelines can run deploy steps.
Try: “Start a build of main on the web pipeline.”
Write ·
create_buildRe-runs a whole build
Rebuilds an entire build on a pipeline.
Try: “Rebuild build 1234.”
Write ·
rebuild_buildRetries one failed job
Retries a specific failed or timed-out job.
Try: “Retry the failed lint job in build 1234.”
Write ·
retry_jobRetries failed jobs that are safe to retry
Retries only failures it considers safe, and reports every job it retried or skipped with a reason. Has a dry-run option.
Try: “Do a dry run of retrying the failed jobs in build 1234.”
Write ·
retry_failed_jobsCancels a running build
Cancels a running build on a pipeline.
Try: “Cancel build 1234.”
Write ·
cancel_buildCancels one job
Cancels a single command job without canceling the rest of the build.
Try: “Cancel the stuck integration job.”
Write ·
cancel_jobApproves a blocked step
Unblocks a job that is waiting on a block step so the build continues. A block step is often a deploy approval.
Try: “Unblock the production deploy step.”
Write ·
unblock_jobAdds a note to a build or job
Creates an annotation on a build or a job.
Try: “Add an annotation to build 1234 saying the retry was approved.”
Write ·
create_annotationSets up a new pipeline
Creates a pipeline from YAML or an approved template, with a repository connection and cluster.
Try: “Create a pipeline for the docs repo from this YAML.”
Write ·
create_pipelineChanges a pipeline's settings
Modifies a pipeline's configuration, repository, settings or metadata.
Try: “Change the default branch of the web pipeline to main.”
Write ·
update_pipelineSchedules builds on a cron timer
Creates a schedule that triggers builds on a cron interval.
Try: “Schedule a nightly build of main at 2am.”
Write ·
create_pipeline_scheduleChanges a build schedule
Modifies a schedule's cron expression, branch, environment variables or enabled state.
Try: “Disable the nightly schedule.”
Write ·
update_pipeline_scheduleCreates a cluster
Creates a new cluster in an organization.
Try: “Create a cluster called staging-agents.”
Write ·
create_clusterStores a secret in a cluster
Creates a secret in a cluster.
Try: “Create a cluster secret named DEPLOY_KEY.”
Write ·
create_cluster_secretStops a queue from sending out jobs
Pauses dispatch on a queue so no new jobs go to its agents.
Try: “Pause the deploy queue.”
Write ·
pause_cluster_queue_dispatchLets a paused queue send out jobs again
Resumes dispatch on a paused queue.
Try: “Resume the deploy queue.”
Write ·
resume_cluster_queue_dispatchUsed by the assistant behind the scenes
Loads a usage guide for the tools
Loads a built-in guide that explains patterns and pitfalls for using the Buildkite tools.
Try: “Load the Buildkite skill guide for fixing failed builds.”
Read ·
load_skill
Read from the source code
Permissions
medium risk · 4 things to watch
Medium risk
The assistant can start, retry, cancel and unblock builds, and Buildkite builds can run deploy steps. Begin with the read-only address and add write access when you need it.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only modeHow to turn it on
Watch out for
It can start and unblock builds that deploy
Starting a build or approving a block step can run pipeline commands, including deployments. Keep approval prompts on for write actions in your AI tool. buildkite.com
It can read job environment variables and logs
Logs and job settings can contain secrets that your pipeline prints or sets. Everything it reads goes to your AI provider. github.com
It can create secrets and change queues
Tools can store cluster secrets, pause a queue and change pipeline settings. The read-only address removes all of them. github.com
Read-only is not a sandbox
Buildkite notes that an agent with shell access and a signed-in Buildkite CLI can still make changes with the CLI. buildkite.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | Hosted: use https://mcp.buildkite.com/mcp/readonly, which only offers tools that need read scopes. Local with Docker: add -e BUILDKITE_READ_ONLY=true to the docker run command. Local binary: add the --read-only flag. You can also give the local server a token with only read scopes. |
|---|---|
| Talks to | Buildkite (mcp.buildkite.com when hosted, api.buildkite.com when run locally) |
| Scopes |
|
Questions
What is the Buildkite MCP server URL?
It is https://mcp.buildkite.com/mcp. It signs you in with OAuth and has read and write access. The read-only version is https://mcp.buildkite.com/mcp/readonly.
Can I make it read-only?
Yes. On the hosted server, connect to https://mcp.buildkite.com/mcp/readonly, which only offers tools that need read scopes. On the local Docker server, add -e BUILDKITE_READ_ONLY=true to the docker run command. On the local binary, add the --read-only flag. Read-only limits this connection only, not an agent's shell or other signed-in tools.
Hosted or local: which should I use?
Use the hosted server for your own use in a chat tool, as Buildkite recommends. Run the local server when you need a pinned version or an automated agent that cannot sign in through a browser.
How do I run the local server with Docker?
Run the image buildkite/mcp-server with the stdio subcommand and your token as BUILDKITE_API_TOKEN. In Claude Code: claude mcp add buildkite -- docker run --pull=always -q --rm -i -e BUILDKITE_API_TOKEN=<your-token> buildkite/mcp-server stdio. Buildkite's setup page has the same command for other clients, and a binary route as buildkite-mcp-server stdio. Use buildkite/mcp-server:<version> to pin a version.
What does the API token need?
It depends on the tools you use, and only the local server uses a token. Buildkite's smallest set is the read_builds, read_pipelines and read_user scopes. Adding read_clusters, read_secrets_details, read_artifacts, read_build_logs, read_organizations and read_suites gives all read-only tools, and write tools need more write scopes. A retries-only setup needs read_builds, read_build_logs and retry_builds.
How many tools does it have?
The tool list above is partial. The server has dozens of tools in many groups, and you can limit them to chosen groups when you run it locally.
How do I add it to Claude Code or Cursor?
Use the install box above. Both sign you in to Buildkite the first time.
Information
updated Nov 2, 2026
- Publisher
- Official
- Transport
- Streamable HTTP, stdio
- Auth
- OAuth
- Version
- 0.7.0
- License
- MIT
- Last commit
- Oct 31, 2026
- Open issues
- 3
- Listed in
- Official MCP registry, Docker MCP Catalog
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 7Hide
- Buildkite MCP server docs · buildkite.com
- buildkite-mcp-server README · github.com
- buildkite-mcp-server main.go · github.com
- buildkite-mcp-server stdio.go · github.com
- buildkite.com · buildkite.com
- buildkite.com · buildkite.com
- buildkite.com · buildkite.com