BuildPulse MCP server: 5 tools for flaky tests
A narrow connector for flaky-test triage, why the registry entry and the wire disagree, and what the tools do not cover.
Last verified 1 September 2026 · from The BuildPulse repository, npm and the server's own tools/list response
This page is one of 90 in a directory of monitoring and developer tools. Each page checks what an AI coding agent can get out of the tool through its MCP server, the connector that lets the agent query the tool directly.
Summary
BuildPulse publishes a deliberately narrow MCP server. A connection registers 5 tools, all about flaky tests: the flaky inventory, a repository flakiness score, a coverage percentage, one test's failure history and the recent CI submissions.
Fifteen connectors measured in this guide cost less than BuildPulse does. The definitions cost between 686 and 1,463 tokens, which is 0.3% to 0.7% of a 200,000-token window.
Three of the five tools describe a fixed fourteen-day window, so an answer is about the last fourteen days rather than about all history.
What is the BuildPulse MCP server?
It is BuildPulse's server for the Model Context Protocol. BuildPulse tracks flaky and disruptive tests across CI runs, so a connected agent can tell a real regression from a known flake.
The five tools follow one workflow. list_recent_submissions shows which CI runs uploaded results, get_repo_flakiness gives a health score, find_flaky_tests lists the offenders and get_test_history shows one test's recent failures with build URLs and commit hashes.
get_repo_coverage is the odd one out. It returns the coverage percentage from the most recent coverage report rather than anything about flakiness.
BuildPulse's five tools stay deliberately close to flaky-test evidence: inventory, score, coverage, history and CI submissions. That narrow focus does not make it an operational, agent-observability or cost connector.
| Part of the work | What BuildPulse has here | Can an agent reach it |
|---|---|---|
| Code, tests & review | Flaky test inventory, coverage, test history | Yes. Core strength, within a fourteen-day window on three of the five tools |
| CI & release | CI submissions | Partial. list_recent_submissions shows which CI runs uploaded results; there are no pipeline tools |
| Production observability | None | No metrics, logs or traces from running services |
| Agent observability & evals | None | No traces, evaluations or prompt versioning for your own agents |
| AI cost management | None | No spend data of any kind |
For an agent, that means BuildPulse answers one question well: is this failure new, or is this test always like that. It cannot show the code, the pipeline configuration or the running service, so it is a companion to a repository connector rather than a replacement for one.
What can an AI agent do with BuildPulse?
| Task | Tools | Works | Watch out for |
|---|---|---|---|
| Ask why CI is red | list_recent_submissions | Yes | Its own description names this as the first call for that question |
| Take a health snapshot | get_repo_flakiness get_repo_coverage | Yes | Flakiness covers fourteen days; coverage is from the most recent report |
| List the worst offenders | find_flaky_tests | Yes | Two sort orders: BuildPulse's own disruptiveness ranking, which is the default, and recency |
| Check one test's record | get_test_history | Yes | Up to ten events from the last fourteen days, keyed by BuildPulse test ID |
| Get from a flake to the build that failed | get_test_history | Yes | Each event carries the CI build URL and the commit hash |
| See the test code | GitHub | No, separate server | BuildPulse holds outcomes, never source |
| Re-run a failing job | CircleCI, GitHub or Harness | No, separate server | Nothing here triggers CI; every tool reads |
find_flaky_tests returns BuildPulse test IDs, and get_test_history needs one. Running them in that order is the whole workflow.
5 tools registered, all on by default, all read-only
- Orientation1
list_recent_submissions- Health2
get_repo_flakinessget_repo_coverage- Inventory1
find_flaky_tests- Detail1
get_test_history
No tool writes, triggers a build or changes state. Counted on 24 August 2026 from the released npm package.
What connecting costs before the first question
A context window is the amount of text a model can hold at once, and connecting uses some of it before the agent asks anything. Every tool the server registers sends its name, description and input schema to the model when the session starts. The tool list is charged whether or not a single tool is called.
5 tools cost between 686 and 1,463 tokens, among the smallest figures measured in this guide; fifteen connectors cost less.
The proportions are unremarkable, which is the point. Descriptions average 221 characters and schemas 336, so a narrow server with ordinary text costs almost nothing to keep connected.
| Tool set | Tools | Tokens (GPT-5.6, GPT-5.5) | Tokens (GPT-4, GPT-3.5) | Tokens (Claude Haiku 4.5 to Opus 5) | Share of a 200,000-token window |
|---|---|---|---|---|---|
| Every tool, as registered | 5 | 696 to 982 | 686 to 984 | 1,411 to 1,463 | 0.3% to 0.7% |
Encodings: GPT-5.6, GPT-5.5 o200k_base; GPT-4, GPT-3.5 cl100k_base; Claude Haiku 4.5 to Opus 5 count_tokens. Counted 24 August 2026 from tools/list on the released npm package 0.1.5. It was run locally with a placeholder token.
Registration is static, so no BuildPulse account was involved. Figures cover name, description and input schema. The two models in column one share the o200k_base encoding, so they get one count. The spread is formatting, about 43%. Reasoning tokens are output, spent per request. This count is input, charged once at connection.
The Claude figures are measured rather than encoded. Anthropic publishes no local tokenizer. The definitions were sent to the API's count_tokens endpoint, and a no-tools baseline was subtracted. The range covers two tokenizer generations rather than two serializations. Haiku 4.5 and Opus 4.6 sit at the low end. Opus 5 and Sonnet 5 sit at the high end. The gap between them is a small fraction.
BuildPulse MCP server limits: where answers come back incomplete
Both limits below come from a bounded window that the results themselves do not mention.
The agent says: “This test has never been flaky.” It means not in fourteen days.
find_flaky_tests returns tests that failed intermittently in the last fourteen days, get_repo_flakiness scores the same period, and get_test_history returns up to ten events from it.
None of the results restates the window, so an absence reads as a permanent fact rather than a recent one.
Guard: Require the agent to state the fourteen-day window whenever it reports an absence.
The agent says: “Coverage is at 74%.” That is the most recent report, not a trend.
get_repo_coverage returns the current coverage percentage from the most-recent coverage report. There is no history tool for coverage, unlike for flakiness.
Guard: Have the agent say that a coverage figure comes from one report rather than a period.
The registry entry and the released package disagree on how many tools exist.
The published 0.1.5 package registers five tools in its tools/list response, captured on 24 August 2026. A registry listing is metadata submitted at publication and is not re-derived from the running server.
Guard: Count tools from tools/list on the version you actually run, not from a catalog entry.
How to configure BuildPulse MCP for agents
- 1
Expect a fourteen-day horizon
find_flaky_tests,get_repo_flakinessandget_test_historyall describe that window, so nothing older is reachable. - 2
Get the token from the right place
The server's own startup error names the path: the BuildPulse app, then Organization Settings, then API Tokens.
- 3
Pair it with a repository connector
The tools return build URLs and commit hashes, and something else has to open them.
- 4
Do not budget context for it
At 686 tokens this is among the cheapest connections measured here, so there is no reason to disconnect it between tasks.
Paste this into your agent’s instructions
Every headline number here is bounded by a fourteen-day window that does not appear in the result. The block makes the agent say so.
When you answer using BuildPulse MCP tools, state: - The repository the numbers cover. - The window. find_flaky_tests, get_repo_flakiness and get_test_history all report the last fourteen days. - Whether a coverage figure came from get_repo_coverage, which reads the most recent report rather than a period. Never state that data does not exist. State that no results were returned for the repository and window above. Write your answer in ASD-STE100 Simplified Technical English. Use short sentences with one idea in each.
Do you need the MCP server at all?
Yes, during triage. For a weekly review the BuildPulse web application is the better surface, and reading a dashboard costs no context at all.
The connector earns its place inside a failing build. An agent that can ask whether this failure is known, and get a commit hash back, saves the round trip to a browser.
For CI itself, a pipeline connector answers what ran and lets you re-run it. This one only reports on test outcomes.
Connect it during triage. Use the web application for periodic review of the same numbers.
BuildPulse MCP server setup
The package runs with npx and needs one token in BUILDPULSE_TOKEN. Without it the server exits before registering anything.
The startup message names where to find a token, which is unusual and worth using rather than searching the documentation.
Claude Code
One token. The tool list is small enough that it costs under a thousand tokens.
claude mcp add-json "buildpulse" '{"command":"npx",
"args":["-y","@buildpulse/mcp"],
"env":{"BUILDPULSE_TOKEN":"<your-token>"}}'Cursor
In ~/.cursor/mcp.json. The token is the only credential involved.
{"mcpServers":{"buildpulse":{"command":"npx",
"args":["-y","@buildpulse/mcp"],
"env":{"BUILDPULSE_TOKEN":"<your-token>"}}}}Codex CLI
Codex reads TOML, so the JSON blocks above will not transfer. The token still applies.
[mcp_servers.buildpulse]
command = "npx"
args = ["-y", "@buildpulse/mcp"]
env = { BUILDPULSE_TOKEN = "<your-token>" }Every other client
Each block below is the configuration for one client, with the file path and the key that client expects.
Claude Desktop
macOS ~/Library/Application Support/Claude/claude_desktop_config.json. Windows %APPDATA%\Claude\claude_desktop_config.json. There is no CLI. Edit through Settings, Developer, Edit Config.
Quit and restart fully for changes to load. Paths in args must be absolute. Logs at ~/Library/Logs/Claude/mcp.log.
{"mcpServers":{"buildpulse":{"command":"npx",
"args":["-y","@buildpulse/mcp"],
"env":{"BUILDPULSE_TOKEN":"<your-token>"}}}}Gemini CLI
~/.gemini/settings.json globally, or .gemini/settings.json per project. Key mcpServers. CLI: gemini mcp add.
{"mcpServers":{"buildpulse":{"command":"npx",
"args":["-y","@buildpulse/mcp"],
"env":{"BUILDPULSE_TOKEN":"<your-token>"}}}}VS Code Copilot
.vscode/mcp.json per workspace, or your user profile. CLI: code --add-mcp.
{"servers":{"buildpulse":{"command":"npx",
"args":["-y","@buildpulse/mcp"],
"env":{"BUILDPULSE_TOKEN":"<your-token>"}}}}The key is `servers`, not `mcpServers`. VS Code is the only client that uses that name, and copying a config from anywhere else fails silently.
Windsurf
~/.codeium/windsurf/mcp_config.json, which is the path Windsurf documents. Key mcpServers, the same JSON shape as Cursor, carrying the same API token.
Zed
~/.config/zed/settings.json, carrying the same API token as the blocks above.
The key is `context_servers`. Zed does not call them MCP servers in config, so searching its settings for mcp finds nothing.
Google Antigravity
~/.gemini/config/mcp_config.json globally, or .agents/mcp_config.json per project. Key mcpServers. There is no CLI. Use the /mcp overlay in the editor. Supports stdio, streamable HTTP, SSE and websocket.
{"mcpServers":{"buildpulse":{"command":"npx",
"args":["-y","@buildpulse/mcp"],
"env":{"BUILDPULSE_TOKEN":"<your-token>"}}}}Amp (Sourcegraph)
~/.config/amp/settings.json or .amp/settings.json, carrying the same API token. The amp mcp CLI covers approve, doctor and oauth.
The key is `amp.mcpServers`, namespaced. A bare mcpServers block is ignored.
Cline
~/.cline/mcp.json per the docs. The source also reads ~/.cline/data/settings/cline_mcp_settings.json. Key mcpServers, standard JSON shape, carrying the same API token. Supports stdio, streamable HTTP and SSE.
Goose (Block)
~/.config/goose/config.yaml, carrying the same API token.
YAML, and servers are called `extensions`. Goose does not use the MCP vocabulary in config at all. Add one interactively with goose configure, or per session with goose session --with-extension.
Kiro (AWS)
.kiro/settings/mcp.json per workspace, or ~/.kiro/settings/mcp.json globally. Key mcpServers, standard JSON shape, carrying the same API token.
Warp
~/.warp/.mcp.json or .warp/.mcp.json. Key mcpServers, standard shape, carrying the same API token. Also addable through the /agent-add-mcp skill.
JetBrains Junie
.junie/mcp/mcp.json per project, or ~/.junie/mcp/mcp.json. Key mcpServers, carrying the same API token. Use /mcp in the CLI to manage.
Roo Code
.roo/mcp.json per project. The global file is mcp_settings.json, opened from the Roo Code MCP settings view with Edit Global MCP. Key mcpServers, carrying the same API token.
Continue
.continue/mcpServers/*.yaml, one file per server, carrying the same API token.
YAML, and `mcpServers` is a list, not an object. Every JSON client keys servers by name. Continue takes an array, so a converted config will not parse.
Trae
.trae/mcp.json per project, or paste into the UI under Raw Config (JSON). Key mcpServers, standard shape, carrying the same API token.
Devin
Devin has no config file to edit. Servers are added through a web form in the settings UI, and Devin's documentation states you do not need to write or paste JSON. The block below is the shape those fields describe, shown for reference. Either route uses the same API token.
Pinned version
Pinning avoids a tool list changing under you between sessions. The token is unchanged.
{"mcpServers":{"buildpulse":{"command":"npx",
"args":["-y","@buildpulse/mcp@0.1.5"],
"env":{"BUILDPULSE_TOKEN":"<your-token>"}}}}Read-only access, permissions and security
BuildPulse exposes test evidence only
None of its five tools creates, updates, deletes or triggers a build.
The token is the whole boundary
There is no scoping inside the server, so what the token can see is what the agent can see.
Results carry links outward
get_test_historyreturns CI build URLs and commit hashes, which points the agent at systems this connector does not cover.The tool list is small enough to audit
Five names and five schemas can be read in full before connecting, which is not true of most servers here.
Troubleshooting
- The server exits immediately
BUILDPULSE_TOKENis not set. The server prints the requirement and names the path to a token: the BuildPulse app, Organization Settings, then API Tokens.- A known flaky test is missing
find_flaky_testscovers tests that failed intermittently in the last fourteen days. A test that was quiet for fourteen days is outside the window.- `get_test_history` returns nothing
- It needs a BuildPulse test ID rather than a test name. Run
find_flaky_testsfirst and pass the identifier it returns. - The registry lists a different tool count
- Trust the wire. The released 0.1.5 package registers five tools, which is what was captured for this page on 24 August 2026.
BuildPulse MCP server: Reference
| Item | Value |
|---|---|
| Status | npm 0.1.5, published 17 May 2026 · repository pushed 19 August 2026 |
| Adoption | 0 stars · 0 forks · 3 releases · repository created 17 May 2026 |
| License | MIT |
| Package | @buildpulse/mcp on npm, binary buildpulse-mcp |
| Auth | BUILDPULSE_TOKEN, required at startup |
| Tools | 5, all on by default, all read-only |
| Window | Fourteen days on three of the five tools |
| Context cost | 686 to 1,463 tokens |
What engineers report
BuildPulse published @buildpulse/mcp to npm on 17 May 2026 and pushed the repository on 19 August 2026. It has no stars and little public discussion, so the figures below come from the package and the wire rather than from community reports.
| What was checked | What it shows |
|---|---|
| Stars | 0 |
| Last push | 19 August 2026 |
| Latest release | 0.1.5 on npm, 17 May 2026 |
| License | MIT |
Tools returned by tools/list | 5 |
| Average description | 221 characters per tool |
| Average schema size | 336 characters per tool |
Repository facts from the GitHub API and npm, retrieved 24 August 2026. Tool counts and sizes come from the released package's own tools/list response, which is the figure this page uses wherever a catalog disagrees.
Should you connect an agent to BuildPulse?
Yes. Best for leaving connected permanently, given that it costs under a thousand tokens to do so.
- Strongest fit
- Teams already uploading test results to BuildPulse who want flake triage without leaving the editor.
- Main advantage
- One of the cheapest connections measured here, with a workflow that runs in two calls.
- Main weakness
- A fourteen-day horizon on the tools that matter, and no way to reach further back.
- Operational risk
- None from the tools themselves. Every one reads, and nothing triggers a build.
From Oodle
One platform for agent traces and infrastructure
Agent traces usually sit in a different product from the rest of your telemetry, so when a slow database makes an agent slow the symptom is in one tool and the cause is in another. Oodle keeps both in one query surface, from $10 per million spans.
See agent observabilityFrequently asked questions
How many tools does the BuildPulse MCP server have?
The released 0.1.5 npm package registers five read-only tools by default. Counted from its own tools/list response on 24 August 2026.
What do the tool definitions cost?
Between 686 and 1,463 tokens, or 0.3% to 0.7% of a 200,000-token window. Fifteen connectors measured cheaper.
How far back can it see?
Fourteen days for flaky tests, repository flakiness and test history. Coverage comes from the most recent report rather than a period.
Can an agent re-run a failing job?
No. Every tool reads. Test history returns the CI build URL, and a pipeline connector is needed to act on it.
Where do I get a token?
The server's own startup message names the path: the BuildPulse app, then Organization Settings, then API Tokens.