Diffblue MCP server: three tools over the dcover CLI
One of the smallest servers in this guide, what its three tools actually invoke, and the two prerequisites that decide whether it runs at all.
Last verified 1 September 2026 · from Diffblue's repository 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
The Diffblue MCP server is small. It wraps the command line of Diffblue's Cover product, and registers 3 tools: create, refactor and issues.
None of them does the work. Each shells out to the dcover CLI, which must already be installed and on your PATH, and Cover is a commercial product rather than a free one.
Two prerequisites decide whether it runs. The package requires Python 3.14 or later, which is newer than most systems carry, and it is not published to PyPI, so installation is from the repository.
What is the Diffblue MCP server?
It is Diffblue's server for the Model Context Protocol. Diffblue Cover writes JUnit tests for Java automatically, so a connected agent can ask for tests rather than writing them itself.
The server is deliberately thin. Its own README calls the script a universal adapter for the dcover create command, and the three tool descriptions each say they execute a dcover subcommand.
That makes the tool list a faithful map of the CLI. create generates tests and refactor applies automated fixes, aliased as fix-build.
issues returns a prioritized list of problems that may prevent test generation, which is why it is worth calling first.
Diffblue sits in code, tests and review through a three-tool wrapper around its Cover command line, and reaches nothing in CI, production observability, agent observability or cost.
| Part of the work | What Diffblue has here | Can an agent reach it |
|---|---|---|
| Code, tests & review | Java unit test generation, refactoring, project issues | Yes. Core strength, and the only stage this connector reaches |
| CI & release | None | No pipeline tools. Generated tests run in CI, but nothing here talks to it |
| 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 Diffblue answers one question: can this Java code have tests written for it, and what is stopping that. It has no view of the build, the pipeline or production, so it sits alongside those connectors rather than replacing any of them.
What can an AI agent do with Diffblue?
| Task | Tools | Works | Watch out for |
|---|---|---|---|
| Generate tests for a class | create | Yes | It executes dcover create, so the CLI does the work and the time |
| Find out why generation fails | issues | Yes | Returns a prioritized list of problems that may prevent test generation |
| Fix a broken build first | refactor | Yes | Aliased as fix-build; it applies automated refactorings and changes your code |
| Run the generated tests | Your build tool, or a CI connector | No, separate server | Nothing here executes a test suite |
| See coverage across the project | SonarQube, Codacy or BuildPulse | No, separate server | Diffblue writes tests; it does not report coverage over this connector |
Run issues before create. Its description exists precisely because generation fails for reasons that are worth reading first.
3 tools registered, all on by default
- Generating1Write
create- Repairing1Write
refactor- Diagnosing1
issues
Two of the three change files on disk, because generating tests and refactoring both write. Counted on 24 August 2026 from the installed 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.
3 tools cost between 836 and 1,817 tokens, or 0.4% to 0.9% of a 200,000-token window.
The schemas carry it. Descriptions average 220 characters and schemas average 1,004, because each tool passes a long list of CLI options through to dcover.
| 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 | 3 | 869 to 1,389 | 836 to 1,390 | 1,656 to 1,817 | 0.4% to 0.9% |
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 package installed from the git repository and run under Python 3.14.
Registration is static, so no Diffblue license was involved in the capture. Figures cover name, description and input schema. The two models in column one share the o200k_base encoding, so they produce one count. The 66% spread inside a column is formatting, compact to indented. Reasoning tokens are output, spent per request. The tool list is input, charged once at connection.
The Claude figures are measured rather than encoded. Anthropic publishes no local tokenizer, so the definitions were sent to the API's count_tokens endpoint and a no-tools baseline 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 at the high end. The gap between them is about a tenth.
Diffblue MCP server limits: where answers come back incomplete
Both limits below come from the server being an adapter rather than an implementation.
The agent says: “Diffblue could not generate tests.” The CLI may not be installed.
All 3 tool descriptions say they execute a dcover subcommand. The server holds no test-generation logic of its own.
A missing or unlicensed dcover therefore surfaces as a tool failure that looks like a Diffblue limitation.
Guard: Confirm dcover version runs in the same environment, and have the agent say whether a failure came from the server or the CLI.
The agent says: “I have added the tests.” Two tools change your working tree.
create generates JUnit test files and refactor applies automated refactorings, described as fixing build issues or adding missing dependencies. Only issues is read-only.
Guard: Run these on a clean branch, so the diff shows exactly what the CLI changed.
The package will not install on the Python version most machines carry.
pyproject.toml declares requires-python >= 3.14. An install under 3.12 is rejected outright, which is a configuration failure rather than a runtime one.
Guard: Install a 3.14 interpreter for this server specifically, rather than changing your project's Python.
How to configure Diffblue MCP for agents
- 1
Check your Python version first
The package declares
requires-python >= 3.14, so an older interpreter refuses to install it. - 2
Install the CLI before the server
dcovermust be on your PATH; the README suggests verifying withdcover version. - 3
Know that two tools write
createadds test files andrefactorchanges project files, both through the CLI. - 4
Pin your own clone
With nothing on PyPI, the version you run is whatever the repository held when you installed it.
Paste this into your agent’s instructions
Every tool here shells out, so a failure can come from the server, the CLI or the license. The block makes the agent say which.
When you answer using Diffblue MCP tools, state: - The dcover subcommand that ran, and the path it ran against. - Whether files were written. create adds tests and refactor changes project files. - Whether a failure came from the MCP server or from the dcover CLI it invoked. Never state that data does not exist. State that the command above produced no output. 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?
Usually not. dcover create in a terminal does exactly what the create tool does, without a server in between.
The connector earns its place when the agent is already editing Java and can call generation as part of the same conversation, then read issues when it fails.
For test quality signals rather than test generation, SonarQube and Codacy report coverage and duplication that this connector does not touch.
Use the CLI directly for batch work. Connect the server when an agent is writing the Java it wants tested.
Diffblue MCP server setup
Two prerequisites come before any client configuration: the dcover CLI on your PATH, and Python 3.14 or later.
The package is not on PyPI, so install it from the git repository. It exposes no console script; the server is a module.
Claude Code
No credentials appear in the configuration. Licensing is handled by the dcover CLI itself, not by the server.
claude mcp add-json "diffblue" '{"command":"python3.14",
"args":["-c","from covermcp.server import mcp; mcp.run()"]}'Cursor
In ~/.cursor/mcp.json. Again no credentials here: the CLI holds the license and must already be on the PATH.
{"mcpServers":{"diffblue":{"command":"python3.14",
"args":["-c","from covermcp.server import mcp; mcp.run()"]}}}Codex CLI
Codex reads TOML, so the JSON blocks above will not transfer. No credentials belong here either.
[mcp_servers.diffblue] command = "python3.14" args = ["-c", "from covermcp.server import mcp; mcp.run()"]
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.
No credentials appear in the file. The dcover CLI holds the license, so nothing is stored here.
{"mcpServers":{"diffblue":{"command":"python3.14",
"args":["-c","from covermcp.server import mcp; mcp.run()"]}}}Gemini CLI
~/.gemini/settings.json globally, or .gemini/settings.json per project. Key mcpServers. CLI: gemini mcp add.
No credentials appear in the file. The dcover CLI holds the license, so nothing is stored here.
{"mcpServers":{"diffblue":{"command":"python3.14",
"args":["-c","from covermcp.server import mcp; mcp.run()"]}}}VS Code Copilot
.vscode/mcp.json per workspace, or your user profile. CLI: code --add-mcp.
No credentials appear in the file. The dcover CLI holds the license, so nothing is stored here.
{"servers":{"diffblue":{"command":"python3.14",
"args":["-c","from covermcp.server import mcp; mcp.run()"]}}}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 credential.
Zed
~/.config/zed/settings.json, carrying the same credential 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.
No credentials appear in the file. The dcover CLI holds the license, so nothing is stored here.
{"mcpServers":{"diffblue":{"command":"python3.14",
"args":["-c","from covermcp.server import mcp; mcp.run()"]}}}Amp (Sourcegraph)
~/.config/amp/settings.json or .amp/settings.json, carrying the same credential. 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 credential. Supports stdio, streamable HTTP and SSE.
Goose (Block)
~/.config/goose/config.yaml, carrying the same credential.
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 credential.
Warp
~/.warp/.mcp.json or .warp/.mcp.json. Key mcpServers, standard shape, carrying the same credential. 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 credential. 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 credential.
Continue
.continue/mcpServers/*.yaml, one file per server, carrying the same credential.
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 credential.
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 credential.
Installing it
Nothing is published, so this comes from the repository. No credentials are involved in the install; the dcover CLI holds the license.
python3.14 -m pip install \
"git+https://github.com/diffblue/cover-mcp.git"
# then verify the CLI it wraps:
dcover versionRead-only access, permissions and security
Every tool executes a local command
The server's job is to invoke
dcoverwith arguments the model supplies.Two of the three write to your working tree
createadds test files andrefactorapplies automated changes to project files.The license boundary is the CLI's
The server holds no credential; whatever
dcoveris entitled to do on that machine is what the agent can trigger.There is no pinned version
With no PyPI release, the installed code is whatever the default branch held at install time.
Troubleshooting
- Installation is refused
- The package declares
requires-python >= 3.14. Older interpreters, including 3.12, are rejected before anything is installed. - No console script appears after installing
- The package ships no entry point. Start it as a module instead, importing
mcpfromcovermcp.serverand callingrun(). - Every tool call fails
dcoveris probably not on the PATH. The README suggests confirming withdcover versionbefore configuring any client.- Test generation produces nothing
- Call
issuesfirst. It returns a prioritized list of project problems that may prevent test generation.
Diffblue MCP server: Reference
| Item | Value |
|---|---|
| Status | Version 0.1.0 · repository pushed 18 December 2025 |
| Adoption | 2 stars · 0 forks · 0 releases · repository created 9 October 2025 |
| License | Apache-2.0 |
| Distribution | None. Install from the git repository |
| Runtime | Python 3.14 or later, declared in pyproject.toml |
| External requirement | The dcover CLI on your PATH |
| Auth | None in the server; licensing belongs to the CLI |
| Tools | 3, all on by default |
| Context cost | 836 to 1,817 tokens |
What engineers report
Adoption is small and the repository is quiet, which is the honest summary of a three-tool adapter.
| What was checked | What it shows |
|---|---|
| Stars | 2 |
| Last push | 18 December 2025 |
| Version | 0.1.0 |
| License | Apache-2.0 |
| PyPI package | None; cover-mcp returns 404 |
Tools returned by tools/list | 3 |
| Average description | 220 characters per tool |
| Average schema size | 1,004 characters per tool |
Repository facts from the GitHub API, retrieved 24 August 2026. PyPI was checked for cover-mcp on the same date and returned 404. Tool counts and sizes come from the server's own tools/list response on the installed package.
Should you connect an agent to Diffblue?
Yes, though there is no packaged release. Best for a dedicated 3.14 interpreter, a verified dcover install and a clean branch to run against.
- Strongest fit
- Java teams that already license Diffblue Cover and want test generation inside an agent conversation.
- Main advantage
- A faithful, tiny surface: three tools that map exactly onto the CLI subcommands they invoke.
- Main weakness
- Nothing is published, and the package needs Python 3.14, which most machines do not have.
- Operational risk
- Two tools write to the working tree by invoking a local CLI with model-supplied arguments.
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 Diffblue MCP server have?
3: create, refactor and issues. Counted from the server's own tools/list response on the installed package, on 24 August 2026.
Can I install it from PyPI?
No. cover-mcp returns 404 on PyPI, so it installs from the git repository and there is no released version to pin.
What does it need to run?
Python 3.14 or later, declared in its pyproject.toml, and the dcover CLI installed and on your PATH.
Does the server generate the tests?
No. All three tools execute dcover subcommands. The server is described in its own README as an adapter for the CLI.
Which tools change my files?
create writes JUnit test files and refactor applies automated changes. issues only reports.