culprit — Claude Code MCP server for root-cause analysis
culprit searches Git history for likely causes of a bug and checks whether a proposed fix leaves callers untouched. Use it to review a patch before committing.
claude mcp add culprit -- uvx culpritWhat culprit does
culprit gives a coding agent tools to rank commits that may have introduced a regression, inspect a change’s impact, and check a patch before commit. Its verify_fix tool returns complete, partial, or risky, along with references to files that still use the changed symbol. That makes missed call sites visible while the agent is working on a fix.
The server provides 11 MCP tools, including find_suspects, get_blast_radius, and get_test_impact. from_trace starts an investigation from a stack trace, and the separate CLI uses rca. culprit runs offline, leaves the repository unchanged, and needs no API key. The MCP server requires Python 3.10+ and uv; without those, launching it through uvx will fail. In tests on 50 regressions, the introducing commit appeared among the top five suspects in 66% of cases, so treat the ranking as evidence to inspect, not a final answer.
What it helps with
- rank commits that may have introduced a regression
- check a patch for untouched uses of a changed symbol
- assess which files and tests a change affects
- trace a bug’s likely cause from a stack trace
Example prompts for the agent
- Find commits that may have introduced this regression.
- Check my patch before I commit and list any untouched uses of the changed symbol.
- Use this stack trace to investigate the likely cause of the error.
How to install culprit
Platform CLI
claude mcp add culprit -- uvx culprituvx runs the command named after the package; if the README names another one, use uvx --from culprit <command>
Platform CLI
codex mcp add culprit -- uvx culprituvx runs the command named after the package; if the README names another one, use uvx --from culprit <command>
Config file
{
"mcpServers": {
"culprit": {
"command": "uvx",
"args": [
"culprit"
]
}
}
}uvx runs the command named after the package; if the README names another one, use uvx --from culprit <command>
Config file
{
"servers": {
"culprit": {
"type": "stdio",
"command": "uvx",
"args": [
"culprit"
]
}
}
}uvx runs the command named after the package; if the README names another one, use uvx --from culprit <command>
Platform CLI
gemini mcp add culprit uvx culprituvx runs the command named after the package; if the README names another one, use uvx --from culprit <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about culprit
How do I install culprit in Claude Code?
Run claude mcp add culprit -- uvx culprit. The MCP server requires Python 3.10+ and uv.
What does culprit do?
It examines Git history to rank possible bug-introducing commits and checks whether a patch covers uses of the changed symbol. It can also report affected dependents and tests.
Does culprit need network access or an API key?
No. The server works offline and needs no API key; it also makes no changes to the repository.