Skip to content
/

openspec-mcp (Lumiaqian)

openspec-mcp · Lumiaqian/openspec-mcp · ★ 24 · last commit 2026-01-12

Exposes the full OpenSpec lifecycle (changes, approvals, reviews, tasks, validation) as MCP tools plus a real-time web dashboard.

Best whenOpenSpec operations should be first-class MCP tools, not shell commands — enabling richer multi-turn AI workflows with human approval gates.
vs seeds
openspecfile system as MCP tools — like ccmemory wraps Neo4j and taskmaster wraps tasks.json — but unique…
Primitive shape 31 total
MCP tools 31
00

Summary

openspec-mcp (Lumiaqian) — Summary

openspec-mcp is a TypeScript MCP server that exposes the full OpenSpec spec-driven development workflow as ~30 MCP tools plus an optional web dashboard, giving any MCP-capable AI client (Claude Code, Claude Desktop, Cursor) full programmatic access to OpenSpec's change, approval, review, and task management operations.

Problem it solves: The canonical OpenSpec CLI is powerful but requires the agent to issue shell commands; openspec-mcp wraps every OpenSpec operation as a first-class MCP tool so the AI can manage proposals, approvals, reviews, and task progress natively through tool calls rather than bash invocations, enabling richer multi-turn workflows.

Distinctive trait: Ships a complete web dashboard (--with-dashboard flag) on port 3000 (auto-incrementing) with a Kanban board, QA runner, approval queue, real-time WebSocket updates, and Markdown rendering — making it the only entry in this batch that pairs an MCP server with a fully featured web UI.

Target audience: Teams using the canonical OpenSpec CLI who want dashboard visibility, approval workflows, and programmatic AI access beyond what the CLI alone provides.

Production-readiness: v0.4.2, 24 stars, last commit January 2026. Published to npm as openspec-mcp. Requires @fission-ai/openspec CLI installed globally.

Relationship to seeds: Closest to ccmemory (Archetype 3 — MCP-anchored toolserver): like ccmemory, it wraps an external persistence layer (the OpenSpec file system) as MCP tools for AI consumption. Unlike ccmemory's Neo4j graph memory, openspec-mcp wraps file-based OpenSpec state. It also resembles taskmaster-ai (1 MCP server + file-based state), but adds a web dashboard and approval/review workflow tooling that taskmaster lacks.

01

Overview

openspec-mcp — Overview

Origin

Created by GitHub user Lumiaqian, a Chinese developer (the repo ships both English README.md and Chinese README.zh.md). Published to npm as openspec-mcp at version 0.4.2. The project is described as:

"MCP (Model Context Protocol) server for OpenSpec - spec-driven development with real-time dashboard and approval workflow."

Philosophy

The core thesis is that AI agents benefit from MCP-native access to OpenSpec operations rather than shell command invocations. The README highlights:

  • MCP Tools: "Full OpenSpec CLI functionality exposed as MCP tools"
  • Review System: First-class review comments with reply/resolve lifecycle
  • Approval Workflow: Explicit draft → pending_approval → approved → implementing → completed → archived state machine
  • Real-time Dashboard: Visual management interface with WebSocket live updates

Approval state machine (verbatim from README)

draft -> pending_approval -> approved -> implementing -> completed -> archived
                         -> rejected -> draft (revise and resubmit)

Available Prompts

The MCP server exposes two AI prompts (context-aware, for use in Claude/Codex):

Prompt Description
analyze-project Deep analysis of project architecture and stack
review-change Intelligent review of changes with linked specs

Deployment modes

The server supports three deployment modes via CLI flags:

Mode Command Purpose
MCP only openspec-mcp Expose tools to AI clients via stdio MCP
Dashboard only openspec-mcp --dashboard Start web UI on port 3000 without MCP
Both openspec-mcp --with-dashboard MCP + web dashboard simultaneously
02

Architecture

openspec-mcp — Architecture

Distribution

  • Type: MCP server (npm package)
  • npm name: openspec-mcp
  • Version: 0.4.2
  • Binary: openspec-mcp (defined in package.json#bin)
  • Language: TypeScript (Node.js)
  • Required runtime: Node.js >= 20.0.0

Dependencies (key)

Package Purpose
@modelcontextprotocol/sdk MCP protocol implementation
fastify HTTP server for dashboard
@fastify/websocket Real-time dashboard updates
@fastify/static Serve compiled frontend assets
chokidar File system watcher for auto-refresh
gray-matter Parse YAML front-matter from OpenSpec files
commander CLI argument parsing

Install commands

# Via Claude Code CLI (recommended)
claude mcp add openspec -- npx openspec-mcp

# With dashboard
claude mcp add openspec -- npx openspec-mcp --with-dashboard

# Claude Desktop / Cursor (mcp.json)
{
  "mcpServers": {
    "openspec": {
      "command": "npx",
      "args": ["-y", "openspec-mcp"]
    }
  }
}

Required external dependency

npm install -g @fission-ai/openspec

The MCP server wraps the OpenSpec CLI — openspec-mcp calls OpenSpec CLI commands internally via openspec-cli.ts.

Repository structure

openspec-mcp/
├── src/
│   ├── index.ts          ← MCP server entry point + CLI arg parsing
│   ├── core/
│   │   ├── approval-manager.ts
│   │   ├── context-analyzer.ts
│   │   ├── cross-service-manager.ts
│   │   ├── file-watcher.ts
│   │   ├── hooks-manager.ts
│   │   ├── openspec-cli.ts   ← Wraps @fission-ai/openspec CLI calls
│   │   ├── proposal-generator.ts
│   │   ├── review-manager.ts
│   │   ├── revision-manager.ts
│   │   ├── spec-critic.ts
│   │   ├── spec-parser.ts
│   │   ├── task-parser.ts
│   │   └── template-manager.ts
│   ├── api/              ← Fastify route handlers for dashboard
│   ├── server/           ← MCP tool registrations
│   ├── types/
│   └── utils/
└── web/                  ← Dashboard frontend (Vite/React/Tailwind)
    ├── src/
    ├── vite.config.ts
    └── tailwind.config.js

Target AI tools

  • Claude Code CLI (stdio MCP)
  • Claude Desktop
  • Cursor
  • Any MCP-compatible client
03

Components

openspec-mcp — Components

MCP Servers (1)

Server name: openspec-mcp Protocol: stdio (MCP) Total tools: ~31

MCP Tools by Category

Guides & Context (4)

Tool Purpose
openspec_get_instructions Get AGENTS.md usage guide
openspec_get_project_context Get project.md context
openspec_analyze_context Analyze project structure & stack
openspec_ai_analyze_context AI-enhanced context analysis

Management (4)

Tool Purpose
openspec_list_changes List all change proposals
openspec_list_specs List all specifications
openspec_show_change Show change details
openspec_show_spec Show spec details

Validation (3)

Tool Purpose
openspec_validate_change Validate a change
openspec_validate_spec Validate a spec
openspec_validate_all Batch validation

Archive (1)

Tool Purpose
openspec_archive_change Archive completed change

Tasks (4)

Tool Purpose
openspec_get_tasks Get tasks and progress
openspec_update_task Update task status
openspec_batch_update_tasks Batch update task status
openspec_get_progress_summary Get all changes progress

Approval (5)

Tool Purpose
openspec_get_approval_status Get approval status
openspec_request_approval Request approval
openspec_approve_change Approve a change
openspec_reject_change Reject a change
openspec_list_pending_approvals List pending approvals

Reviews (5)

Tool Purpose
openspec_add_review Add review comment to proposal/design/tasks
openspec_list_reviews List reviews with filters
openspec_reply_review Reply to a review
openspec_resolve_review Mark review as resolved
openspec_get_review_summary Get review statistics & blocking issues

Templates (3)

Tool Purpose
openspec_list_templates List available templates
openspec_create_change Create change from template
openspec_preview_template Preview template content

Generator (2)

Tool Purpose
openspec_generate_proposal Generate proposal from requirements
openspec_save_proposal Save generated proposal

Hooks (1)

Tool Purpose
openspec_setup_hooks Setup git hooks for project

Cross-Service (2)

Tool Purpose
openspec_list_cross_service_docs List cross-service documents
openspec_read_cross_service_doc Read a cross-service document

MCP Prompts (2)

Prompt Description
analyze-project Deep analysis of project architecture and stack
review-change Intelligent review of changes with linked specs

Web Dashboard Routes

Route Description
/ Overview with stats and recent changes
/kanban Drag-and-drop Kanban board
/changes List all changes with progress
/changes/:id Change detail with Specs & Tasks
/qa QA Runner dashboard
/context Project analysis & Tech stack
/specs Browse specifications
/approvals Approval queue management

Scripts

Script Purpose
npm run build Compile TypeScript
npm run build:web Build dashboard frontend (Vite)
npm run dev Development mode with tsx watch
05

Prompts

openspec-mcp — Prompts (Verbatim)

openspec-mcp is primarily a tool server, not a prompt-heavy framework. The prompting surface is in:

  1. The two MCP Prompts registered with the server
  2. The internal instruction passed to AI when tools are called

Since the source is TypeScript (not Markdown skills), verbatim prompt text requires inspecting TypeScript files. The README documents the MCP Prompts at the interface level:


1. MCP Prompt: analyze-project

From the README:

| analyze-project | Deep analysis of project architecture and stack |

Invocation pattern (in Claude Code):

Use the analyze-project MCP prompt to understand this codebase before proposing changes.

This prompt provides the AI with structured project context from project.md and the directory structure, which is also available as openspec_get_project_context (a tool that returns the same data programmatically).

Prompting technique: Context injection — loads project.md + directory structure as a prompt prefix so subsequent AI turns have accurate architectural context.


2. MCP Prompt: review-change

From the README:

| review-change | Intelligent review of changes with linked specs |

Invocation pattern:

Use the review-change MCP prompt to review the add-user-auth change.

This prompt pulls together proposal.md, linked specs/, and tasks.md for a change, then provides them as AI context for review. It is the MCP-native alternative to reading files individually.

Prompting technique: Multi-document context assembly — the prompt gathers all linked artifacts for a change and presents them as a unified review context.


3. Tool usage pattern (from README example)

The README shows conversational tool invocation patterns:

# List all changes
"List all openspec changes"

# Show change details
"Show me the add-user-auth change"

# Update task status
"Mark task 1.1 as done in add-user-auth"

# Request approval
"Request approval for add-user-auth from @reviewer"

Prompting technique: Natural language → tool dispatch. The AI receives the user's natural language request and maps it to the appropriate openspec_* tool call. The MCP tool descriptions guide this routing.


Key prompting techniques

  1. Tool description routing: MCP tool descriptions act as the routing layer — the AI reads tool names and descriptions to select the correct operation.
  2. State-machine awareness: The approval workflow tools expose the state machine (draft/pending/approved/rejected), and the AI is expected to respect state transitions.
  3. Context injection prompts: The analyze-project and review-change MCP Prompts pre-load multi-document context, reducing the AI's need to issue sequential file-read tool calls.
09

Uniqueness

openspec-mcp — Uniqueness and Positioning

differs_from_seeds

The closest seeds are ccmemory (Archetype 3: MCP-anchored toolserver) and taskmaster-ai. Like ccmemory, openspec-mcp wraps an external state store as MCP tools for AI consumption — but where ccmemory uses Neo4j for knowledge graph memory, openspec-mcp wraps the OpenSpec file system. Like taskmaster-ai (1 MCP server + file-based tasks.json), openspec-mcp exposes task management via MCP — but adds approval/review workflow tooling, a web dashboard, and cross-service document management that taskmaster lacks. Unlike openspec (the reference seed, which ships commands + skills), openspec-mcp has zero Claude Code slash-commands or SKILL.md files — it is pure MCP. It is the only framework in this batch that combines an MCP toolserver with a local web dashboard in a single binary.

Positioning

  • Niche: "OpenSpec + MCP + Web Dashboard in one binary"
  • Primary differentiator: The only entry in this batch with a real-time Kanban web dashboard and approval queue management
  • Secondary differentiator: Review comment system (add/reply/resolve) — treating AI-generated code changes with the same review primitives as human PRs

Observable failure modes

  1. CLI dependency: Requires @fission-ai/openspec installed globally — if the CLI version is incompatible with what openspec-cli.ts expects, tools silently fail or return unexpected results
  2. Single-project limitation: The server operates on one project directory at a time; multi-repo visibility requires running multiple instances
  3. No authentication on dashboard: The web dashboard has no authentication mechanism — accessible to anyone on the local network if bound to a non-loopback interface
  4. State drift: If the AI agent modifies openspec/ files directly (via Bash) while also using MCP tools, the file watcher may show stale state in the dashboard until the next chokidar event
  5. No multi-agent coordination: Multiple agents calling the same MCP server simultaneously could produce race conditions on approval state files

Explicit antipatterns

None documented in README.

04

Workflow

openspec-mcp — Workflow

Phases

The workflow follows the OpenSpec canonical lifecycle, augmented with approval and review gates:

# Phase MCP tool Artifact
1 Create proposal openspec_generate_proposal + openspec_save_proposal openspec/changes/{id}/proposal.md
2 Request approval openspec_request_approval openspec/approvals/{id}.json
3 Approve/reject openspec_approve_change / openspec_reject_change Updated approval record
4 Implementation (external — agent writes code; openspec_update_task tracks progress) Updated tasks.md
5 Review openspec_add_review, openspec_resolve_review Review comments in change directory
6 Validation openspec_validate_change / openspec_validate_all Validation report
7 Archive openspec_archive_change openspec/archive/{id}/

Approval state machine

draft → pending_approval → approved → implementing → completed → archived
                       → rejected → draft (revise and resubmit)

Approval records stored in: openspec/approvals/<change-id>.json

Approval gates

Count: 2

Gate Type Description
Approval before implementation yes-no Change must reach approved state before implementation proceeds
Review blocking issues yes-no openspec_get_review_summary flags "blocking issues"; archive blocked until resolved

Workflow integration

The MCP server does not drive the workflow itself — the AI agent calls the MCP tools in sequence. The server exposes the state and operations; the agent (or human via dashboard) controls the flow.

Dashboard Kanban columns

The /kanban route shows a 6-column board:

Backlog → Todo → In Progress → Review → Done → Released

Changes can be dragged between columns (drag-and-drop support).

Cross-service workflow

For multi-service projects, proposal.md frontmatter can include:

crossService:
  rootPath: "../../../../.cross-service"
  documents:
    - design.md
    - flows.md
    - services.yaml
  archivePolicy: snapshot

Cross-service documents are shown in the dashboard's "Cross-Service" tab.

06

Memory Context

openspec-mcp — Memory and Context

State storage

File-based (same OpenSpec directory layout as the canonical CLI). The MCP server reads and writes the openspec/ directory.

Persistent files (written/read by the server)

File Purpose
openspec/changes/{id}/proposal.md Change proposal
openspec/changes/{id}/tasks.md Task progress (checkboxes)
openspec/changes/{id}/specs/*.md Delta specifications
openspec/approvals/{id}.json Approval records with state machine
openspec/specs/*.md Living source-of-truth specifications
openspec/archive/{id}/ Completed changes
openspec/project.md Project context
openspec/AGENTS.md AI instructions

Real-time file watching

The server uses chokidar to watch openspec/ for file changes and push updates to connected dashboard WebSocket clients. Changes made by the AI agent (or manually) are reflected in the dashboard within seconds.

Context compaction

None. No built-in compaction.

Cross-session handoff

Yes — file state persists between sessions. The tasks.md checkboxes and approval records survive session restarts.

Memory type

File-based, project-scoped.

Search mechanism

None built into the MCP server. The openspec_analyze_context tool analyzes the directory structure and tech stack, but this is a point-in-time analysis rather than a search index.

07

Orchestration

openspec-mcp — Orchestration

Multi-agent

No built-in multi-agent coordination. The MCP server is a single-tenant tool server; multiple AI agents could theoretically call the same server simultaneously but there is no coordination mechanism.

Orchestration pattern

None (the server itself does not orchestrate). The AI agent calling the tools drives the workflow sequentially.

Isolation mechanism

None. All operations are in-place on the project's openspec/ directory.

Multi-model

No. The MCP server is model-agnostic.

Execution mode

Event-driven (the server runs continuously as a daemon, responding to tool calls from the AI client).

Prompt chaining

Implicit. The AI agent calls tools in sequence: proposal creation → approval request → task updates → validation → archive. Each tool call's result informs the next.

Consensus mechanism

The approval workflow implements a lightweight human-in-the-loop consensus:

  • openspec_request_approval — moves change to pending_approval
  • openspec_approve_change / openspec_reject_change — a reviewer (human or designated agent) decides
  • Review blocking issues — openspec_get_review_summary can flag blocking issues that prevent archive

This is not automated consensus between AI agents — it is a human approval gate exposed as MCP tools.

Auto-validators

openspec_validate_change and openspec_validate_all — these call the OpenSpec CLI's validation function and return structured results. They are not auto-triggered but are available as tools the agent can call.

Git automation

openspec_setup_hooks — sets up git hooks for the project. Details of what hooks are registered are in the source (hooks-manager.ts) but not documented in the README.

08

Ui Cli Surface

openspec-mcp — UI, CLI, and Observability

Dedicated CLI binary

Yes. Binary name: openspec-mcp

Usage: openspec-mcp [path] [options]

Arguments:
  path                    Project directory path (default: current directory)

Options:
  --dashboard             Start web dashboard only (HTTP mode)
  --with-dashboard        Start MCP server with web dashboard
  -p, --port <number>     Dashboard port (default: 3000; auto-increments if busy, 0 for random)
  -V, --version           Output version number
  -h, --help              Display help

Subcommands: None (flags-only interface) Is thin wrapper: Partially — the MCP server wraps @fission-ai/openspec CLI via openspec-cli.ts, but it also adds its own approval/review/hook/cross-service logic.

Local web dashboard

Yes.

Attribute Value
Type web-dashboard
Default port 3000 (auto-increments if busy)
Tech stack React + TypeScript + Tailwind CSS (frontend via Vite); Fastify + Node.js (backend)
Real-time WebSocket via @fastify/websocket

Dashboard pages

Route Description
/ Overview: stats, recent changes
/kanban 6-column Kanban (Backlog → Released), drag-and-drop
/changes Change list with progress bars
/changes/:id Change detail: proposal + specs + tasks
/qa QA Runner — trigger quality checks from UI
/context Project analysis + tech stack detection
/specs Browse all specifications
/approvals Approval queue — approve/reject from UI with comments

Dashboard features

  • Real-time updates via WebSocket
  • Markdown rendering for proposals and designs
  • Progress bars and status badges
  • Task toggles directly from UI
  • Review management (Open/Resolved tabs)
  • Cross-service docs view (services.yaml visualized as cards)

IDE integration

None — MCP-based, works with any MCP-compatible client.

Observability

  • Dashboard provides visual observability for changes, approvals, and tasks
  • openspec_validate_all returns structured validation results
  • Approval records in openspec/approvals/{id}.json provide an audit trail
  • No structured JSONL audit log

Related frameworks

same archetype · same primary tool · same memory type

Taskmaster AI ★ 27k

Converts a PRD into a dependency-ordered JSON task graph that AI coding agents execute one task at a time, eliminating context…

ccmemory ★ 1

Accumulates decisions, corrections, and failed approaches from Claude Code sessions into a queryable Neo4j graph so each new…

Pimzino spec-workflow-mcp ★ 4.2k

MCP server providing spec-driven development workflow with dashboard-backed approval gates, implementation logging, and VSCode…

MCP Shrimp Task Manager ★ 2.1k

Convert natural language requests into structured AI development tasks with chain-of-thought enforcement, reflection gates, and…

Bernstein ★ 460

Govern parallel CLI coding agents with a deterministic Python scheduler, HMAC-chained audit trail, and compliance-ready signed…

LeanSpec ★ 252

Provides a unified spec CLI and MCP server over any existing spec backend (markdown, GitHub Issues, ADO), making spec-driven…