MCP server for recursive deep reasoning — structured what-if analysis trees for Claude Code
SaferSkills independently audited Deep Reasoning Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Model Context Protocol server that turns Claude Code into a recursive analysis engine. Instead of linear reasoning, it builds explorable decision trees where every finding is traced as an IF/THEN chain, challenged with mitigations, and expanded into sub-findings at configurable depth.
Claude Code is excellent at reasoning, but complex problems — architecture reviews, production debugging, incident triage — benefit from structured exploration. Without structure, analysis tends to be shallow: the first plausible explanation wins, edge cases are missed, and mitigations are proposed without examining the risks they introduce.
Deep Reasoning forces a disciplined process:
The result is an analysis that is reproducible, auditable, and significantly more thorough than a single-pass review.
deep_scan Initial reconnaissance
| Identifies 3-7 key findings
v May ask clarifying questions
deep_explore Recursive what-if chains
/ | \ Loops until max depth
Branch Branch Branch Each gets mitigations + sub-findings
\ | /
v
deep_synthesize Action plan, residual risks,
decision log, quick winsSessions are persisted automatically. You can pause an analysis, close Claude Code, and resume days later with deep_resume.
| Mode | Cost | Requires | Best for |
|---|---|---|---|
| orchestrator | Zero extra | Any Claude Code plan | Interactive analysis where Claude Code reasons through the prompts itself |
| autonomous | API credits | ANTHROPIC_API_KEY | Batch analysis, CI/CD pipelines, non-Claude MCP clients |
Auto-detection: if ANTHROPIC_API_KEY is set, defaults to autonomous. Otherwise, defaults to orchestrator. You can override per-call with the mode parameter.
pip install deep-reasoning-mcpgit clone https://github.com/yourusername/deep-reasoning-mcp.git
cd deep-reasoning-mcp
uv syncAdd to ~/.claude/settings.json:
{
"mcpServers": {
"deep-reasoning": {
"command": "uv",
"args": [
"--directory",
"/path/to/deep-reasoning-mcp",
"run",
"deep-reasoning-mcp"
]
}
}
}If installed from PyPI:
{
"mcpServers": {
"deep-reasoning": {
"command": "deep-reasoning-mcp"
}
}
}{
"mcpServers": {
"deep-reasoning": {
"command": "deep-reasoning-mcp",
"env": {
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
}
}| Variable | Default | Description |
|---|---|---|
ANTHROPIC_API_KEY | _(none)_ | Enables autonomous mode. Not needed for orchestrator. |
DEEP_REASONING_MODEL | claude-opus-4-20250514 | Model for autonomous API calls |
DEEP_REASONING_MAX_TOKENS | 4096 | Max tokens per autonomous API call |
DEEP_REASONING_MAX_CONCURRENT | 3 | Max concurrent API calls (autonomous) |
DEEP_REASONING_COOLDOWN_MS | 500 | Minimum delay between API calls in ms (autonomous) |
deep_scan — Initial ReconnaissanceAlways call this first. Maps the problem space and identifies critical findings.
| Parameter | Required | Description |
|---|---|---|
description | Yes | The problem, code, or architecture to analyze |
analysis_type | No | architecture, code_review, debugging, incident, brainstorming (default: architecture) |
context | No | Additional codebase/stack context |
depth | No | Max exploration depth 1-5 (default: 3) |
language | No | Output language code, e.g. en, it, de (default: en) |
mode | No | orchestrator or autonomous (auto-detected) |
model | No | Model override for autonomous mode |
deep_explore — Recursive What-If AnalysisExplores specific branches of the reasoning tree. Call multiple times to deepen.
| Parameter | Required | Description |
|---|---|---|
tree | Yes | Reasoning tree JSON from deep_scan or previous deep_explore |
branch_ids | No | Specific finding IDs to explore (default: all pending) |
clarification_answers | No | Answers to pending questions {question_id: answer} |
go_ahead | No | Skip unanswered clarifications and proceed (default: false) |
mode | No | orchestrator or autonomous (auto-detected) |
model | No | Model override for autonomous mode |
deep_synthesize — Final ReportProduces a prioritized action plan from the completed reasoning tree.
| Parameter | Required | Description |
|---|---|---|
tree | Yes | Completed reasoning tree JSON |
language | No | Report language (default: en) |
mode | No | orchestrator or autonomous (auto-detected) |
model | No | Model override for autonomous mode |
Returns a Markdown report with: Executive Summary, Critical Findings, Action Plan, Quick Wins, Residual Risks, Decision Log.
deep_list_sessions — List Saved Sessions| Parameter | Required | Description |
|---|---|---|
analysis_type | No | Filter by type |
status | No | Filter by status (pending, exploring, complete) |
limit | No | Max results 1-500 (default: 50) |
deep_resume — Resume a Session| Parameter | Required | Description |
|---|---|---|
session_id | Yes | Session ID (supports partial matching) |
deep_save_session — Save Manually| Parameter | Required | Description |
|---|---|---|
tree | Yes | Reasoning tree to save |
session_name | No | Custom name (auto-generated if omitted) |
deep_delete_session — Delete a Session| Parameter | Required | Description |
|---|---|---|
session_id | Yes | Session ID to delete (exact match) |
Analyze the payment callback flow for race conditions.
Stack: Django 4.2, PostgreSQL, Celery, RabbitMQ.
PSPs send HTTP POST callbacks that can arrive within milliseconds of each other.Payment callbacks timeout randomly after 30s under load.
Logs show the PSP responds in 2s. The issue started after last Thursday's deploy.
Stack: Django, Gunicorn (4 workers), PostgreSQL, Redis cache.Production: ticket validation failing for operator CTM for ~20 minutes.
No recent deploys. Health checks pass. Grafana shows normal latency
but elevated 500s on the /api/v2/validate/ endpoint.We're evaluating migrating from Celery to Django-Q2 for async tasks.
We have ~50 Celery tasks, some with complex retry logic, beat scheduling,
and chain/chord patterns. What are the trade-offs?Sessions are saved automatically to ~/.claude/deep-reasoning/sessions/. Each session is a self-contained JSON file that captures the full reasoning tree.
~/.claude/deep-reasoning/
sessions/
20250409_152030_debugging_payment_callback.json
20250408_091500_architecture_auth_flow.json
index.jsonWorkflow:
deep_scan(...) — session auto-saveddeep_list_sessions() then deep_resume({session_id: "payment_callback"})deep_synthesize(...) — final reportThe JSON tree passed between tools:
{
"id": "a1b2c3d4",
"version": "2.0",
"analysis_type": "architecture",
"max_depth": 3,
"current_depth": 2,
"status": "exploring",
"language": "en",
"description": "Original problem description",
"findings": [
{
"id": "e5f6g7h8",
"depth": 1,
"status": "complete",
"title": "Race condition on payment callback",
"severity": "critical",
"condition": "IF two callbacks arrive within 50ms for same transaction",
"consequence": "THEN duplicate transaction record created",
"mitigations": [
{
"action": "Add SELECT FOR UPDATE on transaction lookup",
"where": "PaymentCallbackView.process_callback()",
"risk_introduced": "Increased lock contention under high load",
"effort": "medium"
}
],
"sub_findings": [
{
"id": "i9j0k1l2",
"depth": 2,
"status": "pending",
"title": "Lock contention under peak load",
"severity": "high",
"condition": "IF >100 concurrent callbacks hit the same lock",
"consequence": "THEN connection pool exhaustion, cascading timeouts"
}
]
}
],
"metadata": {
"total_findings": 5,
"explored_findings": 3,
"critical_count": 1,
"high_count": 2
}
}| sequential-thinking | deep-reasoning | |
|---|---|---|
| Structure | Linear chain | Recursive tree |
| Depth | Single pass | Configurable 1-5 levels |
| Persistence | None | Auto-saved sessions |
| Best for | Quick orientation, simple problems | Thorough analysis, complex systems |
| Output | Thought stream | Structured report with action plan |
They complement each other: sequential-thinking identifies the area, deep-reasoning explores it.
deep_reasoning_mcp/
__init__.py # Package entry point
server.py # MCP tool handlers
models.py # Pydantic models and enums
tree.py # Reasoning tree helpers
session.py # Session persistence
prompts.py # Analysis-type-specific prompts
llm.py # Anthropic API client with rate limitingMaurizio Mocci — [email protected]
MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.