Hedgehog MCP Server

Local setup required. This server has to be cloned and prepared on your machine before you register it in Claude Code.
1

Set the server up locally

Run this once to clone and prepare the server before adding it to Claude Code.

Run in terminal
git clone https://github.com/jpalmerr/Hedgehog.git
cd Hedgehog
pip install .
2

Register it in Claude Code

After the local setup is done, run this command to point Claude Code at the built server.

Run in terminal
claude mcp add hedgehog -- node "<FULL_PATH_TO_HEDGEHOG>/dist/index.js"

Replace <FULL_PATH_TO_HEDGEHOG>/dist/index.js with the actual folder you prepared in step 1.

README.md

Structured spike investigations and Architecture Decision Record generation

Hedgehog 🦔

A Model Context Protocol (MCP) server for structured spike investigations and Architecture Decision Record (ADR) generation.

What It Does

Manages technical spike investigations with:

  • Enforced 4-phase workflow: Meta-design → Divergent exploration → Adversarial challenge → Synthesis
  • State machine: Prevents skipping phases or invalid transitions
  • Checkpoint/rollback: Save and restore investigation state
  • ADR generation: Auto-generates ADRs from exploration artifacts
  • Dead-end tracking: Documents abandoned approaches for future reference

Installation

git clone https://github.com/jpalmerr/Hedgehog.git
cd Hedgehog
pip install .

Then add to your Claude Code MCP settings (~/.claude.json):

{
  "mcpServers": {
    "hedgehog": {
      "command": "hedgehog",
      "args": []
    }
  }
}

Or via the CLI:

claude mcp add hedgehog --scope user -- hedgehog

Example Flow

Here's how a real investigation looks in Claude Code. You talk to Claude naturally — Hedgehog manages the structure behind the scenes.

Session 1: Frame the problem

You: I need to investigate options for migrating our Kafka topic IDs from numeric to string-based. Create a spike for this.

Claude calls spike_create("kafka-topic-migration", "Evaluate approaches for migrating Kafka topic IDs from numeric to string-based identifiers") and generates a meta-design template covering the problem statement, key questions, success criteria, and constraints.

You: The meta-design looks good. The key constraint is zero downtime — we can't stop consumers during migration. Approve it and let's start exploring.

Claude calls spike_approve_meta → advances to Phase 1. State is checkpointed automatically.

You: Let's explore three approaches: dual-write, shadow topics, and a proxy translation layer.

Claude registers all three branches and starts investigating the first one — reading docs, considering trade-offs, and documenting findings for each branch as it goes.

Session 2: Continue exploration (next day)

You: Pick up the kafka-topic-migration spike. Where did we leave off?

Claude calls spike_get_state → sees Phase 1 with one branch explored, two remaining. Continues investigating the remaining branches.

When the third branch is completed, Hedgehog automatically advances to Phase 2 (adversarial challenge) and checkpoints the state.

Session 3: Challenge and synthesize

You: Continue the spike. Challenge each approach — focus on failure modes and hidden assumptions.

Claude systematically challenges each branch: What happens during a dual-write if one write fails? What's the rollback story for shadow topics? How does the proxy handle schema evolution?

When all branches are challenged, Hedgehog auto-advances to Phase 3. Claude synthesizes the findings, generates an ADR with the recommendation, and you approve it.

The tools behind the scenes

Throughout this flow, Claude is calling Hedgehog tools:

spike_create / spike_approve_meta          → Phase 0 (framing)
spike_add_branch / spike_complete_branch   → Phase 1 (exploration)
spike_add_challenge                        → Phase 2 (adversarial)
spike_synthesize / spike_generate_adr      → Phase 3 (synthesis)
spike_approve_adr                          → Complete

Checkpoints are created automatically at each phase transition. Use spike_checkpoint for manual saves and spike_rollback to revert if an exploration path goes nowhere.

Usage Guidance

Investigations span multiple sessions

A full spike investigation is a significant piece of work — comparable to a multi-day task you'd do at work. Hedgehog persists all state to disk (~/.claude/spikes/), so you can spread an investigation across as many Claude Code sessions as you need.

Natural session boundaries:

  • Session 1: Frame the problem (Phase 0), start exploration
  • Session 2-3: Complete branch explorations (Phase 1)
  • Session 4: Adversarial challenges + synthesis (Phases 2-3)

Use spike_get_state at the start of any session to pick up where you left off.

Right-sizing your investigation

Not every technical question needs a full spike. Use Hedgehog when:

  • The decision is hard to reverse (infrastructure, data model, core architecture)
  • There are genuinely 3+ viable approaches worth comparing
  • You need a defensible ADR for your team

For smaller questions, just ask Claude directly — no ceremony needed.

Pro plan considerations

Hedgehog's own overhead is minimal (small JSON tool calls). The tokens go on Claude thinking about your problem — reading code, researching approaches, writing analysis. A full 3-branch investigation is token-intensive because the work is intensive.

On a Pro plan, lean into the multi-session workflow. Do one branch per session if needed. The checkpoint system means you never lose progress.

The Four Phases

Phase 0: Meta-Design

Define the investiga

Tools (11)

spike_createInitializes a new technical spike investigation.
spike_approve_metaApproves the meta-design phase and advances the investigation.
spike_add_branchAdds a new exploration branch to the investigation.
spike_complete_branchMarks an exploration branch as completed.
spike_add_challengeAdds an adversarial challenge to an investigation branch.
spike_synthesizeSynthesizes findings from all branches and challenges.
spike_generate_adrAuto-generates an Architecture Decision Record from artifacts.
spike_approve_adrFinalizes and approves the generated ADR.
spike_get_stateRetrieves the current state of the investigation.
spike_checkpointManually saves the current investigation state.
spike_rollbackReverts the investigation to a previous state.

Configuration

claude_desktop_config.json
{"mcpServers": {"hedgehog": {"command": "hedgehog", "args": []}}}

Try it

I need to investigate options for migrating our Kafka topic IDs from numeric to string-based. Create a spike for this.
Pick up the kafka-topic-migration spike. Where did we leave off?
Continue the spike. Challenge each approach — focus on failure modes and hidden assumptions.
The meta-design looks good. Approve it and let's start exploring.

Frequently Asked Questions

What are the key features of Hedgehog?

Enforced 4-phase workflow: Meta-design, Divergent exploration, Adversarial challenge, and Synthesis. State machine to prevent skipping phases or invalid transitions. Automatic checkpointing and manual rollback capabilities. Auto-generation of Architecture Decision Records (ADRs). Persistent state tracking across multiple Claude sessions.

What can I use Hedgehog for?

Evaluating complex infrastructure changes like database migrations. Comparing multiple architectural approaches for core system components. Documenting technical spikes that require defensible ADRs for team review. Managing long-running technical investigations that span multiple days.

How do I install Hedgehog?

Install Hedgehog by running: git clone https://github.com/jpalmerr/Hedgehog.git && cd Hedgehog && pip install .

What MCP clients work with Hedgehog?

Hedgehog works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep Hedgehog docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare