NewAgent Observability — find failures before customers do.
Back to directory
BuildPulse logo

BuildPulse MCP server: 9 tools for flaky tests

A narrow connector for flaky-test triage, why the tool count changed between releases, and what the tools do not cover.

Connector
Official, self-hosted
Coverage
Flaky tests, coverage, test history, CI submissions
Tools
9, all on by default, all read-only
Biggest risk for an agent
A fixed fourteen-day window on three tools

Checked 1 September 2026 · from The BuildPulse repository and source, npm and the server's own tools/list response

One of 91 guides to monitoring and developer tools. Each covers what an AI coding agent can get out of the tool through MCP, the protocol that lets the agent query the tool directly.

Summary

BuildPulse publishes a deliberately narrow MCP server. The 0.1.7 package, published 14 September 2026, registers 9 tools, and every one reads.

The five from 0.1.5 cover the flaky inventory, a repository flakiness score, a coverage percentage, one test's failure history and the recent CI submissions. The four added after 0.1.5 list organizations and repositories, return one submission's test results, and aggregate recent failures.

On 0.1.5, measured 24 August 2026, the five definitions cost 686 to 1,463 tokens, or 0.3% to 0.7% of a 200,000-token window. The 0.1.7 list adds four tools and longer descriptions, so it costs more.

Three tools describe a fixed fourteen-day window, so an answer is about the last fourteen days rather than about all history. get_recent_failures reads the last 10 submissions by default.

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 core 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.

The 0.1.7 additions fill the gaps around that workflow. list_my_organizations and list_repositories find the right scope, get_submission_test_results opens one CI run, and get_recent_failures lists every test that failed in recent runs.

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 nine tools stay deliberately close to test evidence: inventory, score, coverage, history, CI submissions and recent failures. That narrow focus does not make it an operational, agent-observability or cost connector.

Part of the workWhat BuildPulse has hereCan an agent reach it
Code, tests & reviewFlaky test inventory, coverage, test historyYes. Core strength, within a fourteen-day window on three of the nine tools
CI & releaseCI submissionsPartial. list_recent_submissions, get_submission_test_results and get_recent_failures read uploaded CI results; there are no pipeline tools
Production observabilityNoneNo metrics, logs or traces from running services
Agent observability & evalsNoneNo traces, evaluations or prompt versioning for your own agents
AI cost managementNoneNo 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?

TaskToolsWorksWatch out for
Ask why CI is redlist_recent_submissions get_submission_test_resultsYesIts own description names this as the first call for that question
Take a health snapshotget_repo_flakiness get_repo_coverageYesFlakiness covers fourteen days; coverage is from the most recent report
List the worst offendersfind_flaky_testsYesTwo sort orders: BuildPulse's own disruptiveness ranking, which is the default, and recency
Check one test's recordget_test_historyYesUp to ten events from the last fourteen days, keyed by BuildPulse test ID
Get from a flake to the build that failedget_test_historyYesEach event carries the CI build URL and the commit hash
List every test that failed recentlyget_recent_failuresYesLast 10 submissions by default, up to 50, with the flakiness threshold left out
See the test codeGitHubNo, separate serverBuildPulse holds outcomes, never source
Re-run a failing jobCircleCI, GitHub or HarnessNo, separate serverEvery tool reads; CI triggers sit in a pipeline connector

find_flaky_tests returns BuildPulse test IDs, and get_test_history needs one. Running them in that order is the whole workflow.

9 tools registered in 0.1.7, all on by default, all read-only

Orientation3
list_my_organizationslist_repositorieslist_recent_submissions
Health2
get_repo_flakinessget_repo_coverage
Inventory1
find_flaky_tests
Detail2
get_test_historyget_submission_test_results
Recent failures1
get_recent_failures

Every tool carries readOnlyHint: true, and none writes, triggers a build or changes state. Counted on 6 October 2026 from the mcp-v0.1.7 source, the commit npm 0.1.7 was built from. The 0.1.5 package registered five of them: find_flaky_tests, get_test_history, list_recent_submissions, get_repo_flakiness and get_repo_coverage.

What the tool definitions cost in context

A client that loads every tool definition at the start of a session spends this much context before the first question. Claude Code defers definitions by default through tool search, and loads a tool's definition when the agent needs it. The method below gives the version and date measured.

A context window is the amount of text a model can hold at once. A client that loads every tool definition upfront sends each tool's name, description and input schema to the model when the session starts. That list is charged whether or not a single tool is called.

On 0.1.5, 5 tools cost between 686 and 1,463 tokens, measured 24 August 2026. The 0.1.7 package registers 9 tools with longer descriptions, and its cost is still to be measured.

The 0.1.5 proportions were unremarkable, which is the point. Descriptions averaged 221 characters and schemas 336, so a narrow server with ordinary text cost almost nothing to keep connected.

Tool setToolsTokens (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 on 0.1.5, 24 August 20265696 to 982686 to 9841,411 to 1,4630.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 billed as input whenever the client loads it.

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 tool count changed between releases.

The published 0.1.5 package registered five tools in its tools/list response, captured on 24 August 2026. The 0.1.7 package, published 14 September 2026, registers nine.

A catalog listing is metadata submitted at publication and is not re-derived from the running server, so it can lag either release.

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. 1

    Expect a fourteen-day horizon

    find_flaky_tests, get_repo_flakiness and get_test_history all describe that window. get_recent_failures counts submissions instead, the last 10 by default.

  2. 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. 3

    Pair it with a repository connector

    The tools return build URLs and commit hashes, and something else has to open them.

  4. 4

    Expect a small context cost

    The five-tool 0.1.5 build measured 686 tokens at the low end. The 0.1.7 build adds four tools, so expect more.

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.

Terminal
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.
- For get_recent_failures, how many submissions it read.
Do not 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 is the only credential, and the tool list is small.

Terminal
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.

Terminal
{"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.

Terminal
[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.

Terminal
{"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.

Terminal
{"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.

Terminal
{"servers":{"buildpulse":{"command":"npx",
  "args":["-y","@buildpulse/mcp"],
  "env":{"BUILDPULSE_TOKEN":"<your-token>"}}}}

The key depends on the file. .vscode/mcp.json uses servers. The portable .mcp.json at the project root and ~/.copilot/mcp-config.json use mcpServers. VS Code's docs recommend the portable files for new servers.

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.

Terminal
{"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.

Terminal
{"mcpServers":{"buildpulse":{"command":"npx",
  "args":["-y","@buildpulse/mcp@0.1.7"],
  "env":{"BUILDPULSE_TOKEN":"<your-token>"}}}}

Read-only access, permissions and security

  • BuildPulse exposes test evidence only

    All nine tools read. They create, update, delete and trigger nothing.

  • 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_history returns 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

    Nine names and nine schemas can be read in full before connecting, which is not true of most servers here.

Troubleshooting

The server exits immediately
BUILDPULSE_TOKEN is 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_tests covers 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_tests first and pass the identifier it returns.
A catalog lists a different tool count
Check the version. The released 0.1.5 package registered five tools on 24 August 2026. The 0.1.7 package, published 14 September 2026, registers nine.

BuildPulse MCP server: Reference

ItemValue
Statusnpm 0.1.7, published 14 September 2026 · repository pushed 20 September 2026
Adoption0 stars · 0 forks · 4 releases · repository created 17 May 2026
LicenseMIT
Package@buildpulse/mcp on npm, binary buildpulse-mcp
AuthBUILDPULSE_TOKEN, required at startup
Tools9 in 0.1.7, all on by default, all read-only
WindowFourteen days on three tools · last 10 submissions on get_recent_failures
Context cost686 to 1,463 tokens for the five 0.1.5 tools

What engineers report

BuildPulse published @buildpulse/mcp to npm on 17 May 2026, released 0.1.7 on 14 September 2026, and pushed the repository on 20 September 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 checkedWhat it shows
Stars0
Last push20 September 2026
Latest release0.1.7 on npm, 14 September 2026
LicenseMIT
Tools5 returned by tools/list on 0.1.5 · 9 registered in 0.1.7
Average description221 characters per tool, on 0.1.5
Average schema size336 characters per tool, on 0.1.5

Repository facts from the GitHub API and npm, retrieved 6 October 2026. Tool sizes come from the 0.1.5 package's own tools/list response on 24 August 2026. The 0.1.7 tool list comes from its tagged source.

Should you connect an agent to BuildPulse?

Yes. Best for leaving connected permanently, given how small its tool list is.

Strongest fit
Teams already uploading test results to BuildPulse who want flake triage without leaving the editor.
Main advantage
A small, read-only tool list, 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.

See agent observability

Frequently asked questions

How many tools does the BuildPulse MCP server have?

The 0.1.7 npm package, published 14 September 2026, registers nine read-only tools, all on by default. The 0.1.5 package registered five, counted from its own tools/list response on 24 August 2026.

What do the tool definitions cost?

The five-tool 0.1.5 package cost 686 to 1,463 tokens, or 0.3% to 0.7% of a 200,000-token window. The nine-tool 0.1.7 package costs more and is still to be measured.

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.

Changelog

  • 14 September 2026. mcp-v0.1.7 published to npm and the MCP Registry. It registers nine tools.
  • 6 June 2026. BuildPulseLLC/buildpulse-mcp tagged mcp-v0.1.6, adding list_repositories, get_submission_test_results and get_recent_failures. The npm publish for 0.1.6 failed, so npm stayed on 0.1.5.
  • 17 May 2026. First release, mcp-v0.1.5.

Sources

Every number on the page traces to one of these

  1. Repository facts from the GitHub API · BuildPulseLLC/buildpulse-mcp, retrieved 6 October 2026
  2. Package and publication facts from npm · @buildpulse/mcp 0.1.5 and 0.1.7
  3. Tool sizes and the fourteen-day window from the 0.1.5 server's own tools/list response
  4. The 0.1.7 tool list from internal/mcpserver/tools.go at tag mcp-v0.1.7, and the repository CHANGELOG

BuildPulse’s own MCP documentation

Also code, tests and review:

For the build a flake came from: