Skip to main content
Glama
Vvkmnn

claude-augur-mcp

by Vvkmnn

claude-augur-mcp

A Model Context Protocol (MCP) server for plan reasoning summaries in Claude Code. Surfaces decisions, tradeoffs, and assumptions as scannable abstracts so you can correct Claude's reasoning at a glance.

claude-augur-mcp

npm version License: MIT TypeScript Node.js Claude GitHub stars


Claude's reasoning about plans is invisible. When Claude writes a plan, its decisions, assumptions, and tradeoffs are buried in the document. You have to read the entire thing to find them. If Claude assumed the wrong approach or made a bad tradeoff, you won't know until implementation is underway and something breaks.

Augur reads the plan structure and returns a template that Claude fills with its actual reasoning, inline in the response rather than hidden in a collapsed tool result. You see decisions, assumptions, and tradeoffs at a glance and can correct them before a single line of code is written.

install

Requirements:

Claude Code

From shell:

claude mcp add claude-augur-mcp -- npx claude-augur-mcp

From inside Claude (restart required):

Add this to our global mcp config: npx claude-augur-mcp

Install this mcp: https://github.com/Vvkmnn/claude-augur-mcp

From any manually configurable mcp.json: (Cursor, Windsurf, etc.)

{
  "mcpServers": {
    "claude-augur-mcp": {
      "command": "npx",
      "args": ["claude-augur-mcp"],
      "env": {}
    }
  }
}

There is no npm install required: no external databases, no indexing, only Node.js built-ins for filesystem access.

However, if npx resolves the wrong package, you can force resolution with:

npm install -g claude-augur-mcp

Related MCP server: Dev Notes MCP Server

features

1 tool. Plan structure extraction. Template seeding. Inline rendering.

augur_explain

Read a plan file and return a structured template for Claude to fill with its reasoning. Claude renders the abstract inline in its response, not hidden in a collapsed tool result.

Call after writing or editing a plan file:

augur_explain plan_path="/Users/you/.claude/plans/your-plan.md"

MCP returns two content blocks:

Block 1: one-line summary, visible even when the tool result is collapsed.

your-plan.md Β· 10/18 done

Block 2: template with pre-rendered header, progress, and [FILL] markers.

β”Œ πŸ“ my-project Β· your-plan.md ────────────────────────────────────
β”‚ Build a REST API with authentication, rate limiting,
β”‚ and WebSocket support for real-time notifications.
β”‚
β”œ Progress ───────────────────────────────────────────────────────
β”‚ Done (10/18): Auth scaffold, Rate limiter + 1 more
β”‚ Next: WebSocket layer + 1 more
β”‚
β”œ Decisions ──────────────────────────────────────────────────────
β”‚ [FILL: 2-4 decisions, format: "βœ“ choice β€” reason"]
β”‚ [child decisions use: "  β”” choice β€” reason"]
β”‚
β”œ Assumptions ────────────────────────────────────────────────────
β”‚ [FILL: 1-2 assumptions, format: "? statement"]
β”‚
β”œ Tradeoffs ──────────────────────────────────────────────────────
β”‚ [FILL: 1-2 lines, "+" for pro, "βˆ’" for con]
β”‚
β”œ Reasoning ──────────────────────────────────────────────────────
β”‚ [FILL: 2-3 lines explaining WHY]
└──────────────────────────────────────────────────────────────────

Claude fills the template inline:

β”Œ πŸ“ my-project Β· your-plan.md ────────────────────────────────────
β”‚ Build a REST API with authentication, rate limiting,
β”‚ and WebSocket support for real-time notifications.
β”‚
β”œ Progress ───────────────────────────────────────────────────────
β”‚ Done (10/18): Auth scaffold, Rate limiter + 1 more
β”‚ Next: WebSocket layer + 1 more
β”‚
β”œ Decisions ──────────────────────────────────────────────────────
β”‚ βœ“ Express over Fastify β€” team familiarity, middleware ecosystem
β”‚   β”” Passport.js for auth β€” proven, supports OAuth + JWT
β”‚ βœ“ Redis for rate limiting β€” atomic counters, TTL built-in
β”‚ βœ“ ws over Socket.io β€” lighter, no fallback polling needed
β”‚
β”œ Assumptions ────────────────────────────────────────────────────
β”‚ ? Single Redis instance sufficient for current scale
β”‚ ? WebSocket clients handle reconnection gracefully
β”‚
β”œ Tradeoffs ──────────────────────────────────────────────────────
β”‚ + Redis rate limiting: sub-ms response, horizontal scaling
β”‚ βˆ’ Extra infrastructure dependency to operate
β”‚
β”œ Reasoning ──────────────────────────────────────────────────────
β”‚ Auth must be production-grade from day one β€” Passport.js
β”‚ handles OAuth/JWT without custom crypto. Redis rate limiting
β”‚ chosen over in-memory because the API will be multi-process.
β”‚ ws chosen over Socket.io to avoid 200KB bundle overhead.
└──────────────────────────────────────────────────────────────────

What gets extracted from the plan file:

Field

Source

Example

Project name

H1 title before :

my-project

Purpose

First **Primary goal**: line, or first prose paragraph

Full text, word-wrapped

Sections

H2 headings (excluding Detail: sections)

Context, Architecture, ...

Progress

### Step N: headings with - [x] / - [ ] counts

Done (10/18): Auth, Rate limiter

Done steps

Steps where all items are [x]

Capped at 2 names + N more

Next steps

Steps with pending items

First name + N more

methodology

How claude-augur-mcp reads plans:

                    πŸ“ claude-augur-mcp
                    ━━━━━━━━━━━━━━━━━━━

              Claude writes a plan
                augur_explain
                    β”‚
                    β–Ό
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β”‚  read plan file β”‚  from disk (read-only)
              β”‚  (session.ts)   β”‚
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       β”‚
                       β”œβ”€β”€ title β†’ project name (before ":")
                       β”œβ”€β”€ purpose β†’ **Primary goal**: or first prose
                       β”œβ”€β”€ sections β†’ H2 headings
                       └── progress β†’ ### Step N: with [x]/[ ] counts
                       β”‚
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
              β”‚ render template β”‚  left-gutter format
              β”‚ (render.ts)     β”‚  [FILL] markers for Claude
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       β”‚
          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
          β–Ό                         β–Ό
     block 1                   block 2
     summary                   template
     (visible collapsed)       (Claude renders inline)
          β”‚                         β”‚
          β–Ό                         β–Ό
     plan.md Β· 10/18 done      β”Œ πŸ“ project Β· plan.md ──
                               β”‚ purpose...
                               β”œ Progress ────────────
                               β”‚ Done (10/18): Auth + 1
                               β”œ Decisions ───────────
                               β”‚ [FILL]
                               β”œ Assumptions ─────────
                               β”‚ [FILL]
                               └──────────────────────


     TEMPLATE SEEDING:

     Regex extraction of Claude's thinking blocks produces garbage:
     free-form prose has no structured patterns to match.

     Augur takes a different approach: extract plan structure (the
     deterministic part), seed a template, let Claude fill reasoning
     (the part only Claude knows). Structure from MCP, content from
     Claude. Consistent format, accurate reasoning.

     MCP pre-renders              Claude fills
     ──────────────               ────────────
     header + purpose             decisions
     progress counts              assumptions
     section labels               tradeoffs
     formatting rules             reasoning

Two-block return: MCP tool results get collapsed in Claude Code UI. Block 1 is a one-line summary visible even when collapsed. Block 2 is the full template that Claude renders inline in its response, visible to the user without expanding.

Read-only: augur_explain only reads the plan file. No disk writes, no state, no side effects. Works in plan mode.

Architecture:

claude-augur-mcp/
β”œβ”€β”€ package.json
β”œβ”€β”€ tsconfig.json
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ index.ts       # MCP server, 1 tool
β”‚   β”œβ”€β”€ types.ts       # PlanStructure interface
β”‚   β”œβ”€β”€ session.ts     # Plan file parser + step progress extractor
β”‚   └── render.ts      # Template generator with left-gutter format
└── demo/
    β”œβ”€β”€ demo.cast      # asciinema recording
    └── demo.gif       # animated demo

Design principles:

  • Template seeding over regex extraction: regex on thinking blocks produced garbage; template seeding lets Claude fill its own reasoning accurately

  • Inline over collapsed: tool results get collapsed in Claude Code UI; inline rendering keeps the abstract visible

  • Read-only: no disk writes, no state, works in plan mode

  • Single tool: augur_explain does one thing well; no CRUD, no storage, no insight management

  • Left-gutter format: β”Œβ”‚β”œβ”” vertical bar with no right border; can't misalign, renders cleanly in any terminal width

  • Never truncate: purpose and header always render in full; word-wrapped, never cut

Design influences:

  • Architecture Decision Records: structured format for capturing decisions with context and consequences

  • Y-Statement ADR variant: concise decision format: "In context X, facing Y, we decided Z, accepting C"

  • Roman Augurs: priests who interpreted signs and patterns to reveal meaning hidden from ordinary observation

development

git clone https://github.com/Vvkmnn/claude-augur-mcp && cd claude-augur-mcp
npm install && npm run build

Scripts:

Command

Description

npm run build

TypeScript compilation (tsc && chmod +x dist/index.js)

npm run dev

Watch mode (tsc --watch)

npm start

Run MCP server (node dist/index.js)

npm run clean

Remove build artifacts (rm -rf dist)

npm run typecheck

TypeScript validation without emit

npm test

Type-check

Contributing:

  • Fork the repository and create feature branches

  • Follow TypeScript strict mode and MCP protocol standards

Learn from examples:

license

MIT

Tomb of the Augurs, fresco (Tarquinia, ~530 BCE). Claudius, emperor, scholar, and member of the Augural College, wrote Tyrrenika, a lost 20-volume history of Etruscan civilization and their methods of divination. The augurs' role was not to predict the future, but to interpret the signs and reveal whether a proposed course of action had merit.

Available Tools

1 tool
augur_explainExplain PlanA
Read-onlyIdempotent

Extract plan structure and return a template for inline rendering. Call after writing/editing plan files. Render the filled template INLINE in your response (not in a code block).

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_pathYesAbsolute path to the plan file

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds non-obvious behavioral context the annotations do not: that it returns a template, and that the agent must render the filled template inline rather than in a code block.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, all front-loaded: purpose first, then trigger condition, then rendering instruction. No filler and every sentence carries actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description appropriately discloses the return value (a template) and how to consume it. No auth, error, or edge-case behavior is mentioned, but for this simple read-only extraction tool the coverage is largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter (plan_path) is fully documented by the schema. The description only obliquely references 'plan files' and adds no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs ('Extract plan structure and return a template') and a concrete resource (plan files). It is clear what the tool produces, though 'plan structure' remains somewhat abstract and there are no siblings to distinguish it from.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit timing guidance ('Call after writing/editing plan files') and a clear rendering instruction ('INLINE ... not in a code block'). There are no alternatives to name since no sibling tools exist, so no exclusions are possible.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.1.1
    • First observedaugur_explain

TDQS

A4.1/5.0

Scored across 1 tool

Disambiguation5/5

Only one tool is exposed, so there is no possibility of selecting the wrong tool or confusing overlapping purposes. Its purposeβ€”extracting plan structure and returning an inline templateβ€”is clearly stated.

Naming Consistency5/5

The sole tool uses a clear snake_case name with a consistent augur_ prefix. With only one tool, there are no naming inconsistencies to evaluate.

Tool Count3/5

One tool is thin for an MCP server, but it matches a narrow, single-purpose helper. It is borderline rather than extreme because the operation is non-trivial and self-contained.

Completeness4/5

The tool covers the stated operation of extracting plan structure and producing a renderable template. There are no lifecycle operations like validation or template customization, but those are not clearly required by the described scope.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers