Decision State MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Decision State MCPRecord that we decided to use PostgreSQL"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Decision State MCP
Decision State is a small MCP server for keeping project decisions outside the chat context while still making them easy for Claude Code or Codex to retrieve.
It is intentionally not a planner or executor. It only stores compact, decision-relevant state: goals, constraints, facts, assumptions, risks, decisions, and reflections.
Tools
get_state: return the current state summary and record counts.update_state: apply a JSON merge patch to.claude-state/state.json.record_evidence: save normalized evidence sources, findings, limitations, and confidence.record_decision: save a structured decision under.claude-state/decisions/.get_task_context: return compact state and matching prior records for a task.search_state: search prior decisions, evidence, reflections, and sessions.get_session: return the active decision session.reflect_outcome: record what happened after a decision or implementation.
Related MCP server: dev-memory-mcp
Local Use
Install dependencies:
npm installRun the server over stdio:
npm start -- --state-dir .claude-stateThe default state directory is .claude-state relative to the process working directory. You can also set DECISION_STATE_DIR.
Claude Code MCP
From a project where you want the state to live:
claude mcp add --transport stdio decision-state -- node C:\Users\ZCX\Documents\mcp-state\server\index.js --state-dir .claude-stateState Layout
.claude-state/
state.json
decisions/
evidence/
sessions/
briefs/
reflections/
updates/Keep this state compact. Do not store raw conversation dumps, private secrets, or full source files.
Evidence Shape
Evidence is normalized into a compact structure inspired by Spice:
{
"summary": "Why this evidence matters",
"sources": [
{
"source_id": "file:src/auth.ts",
"source_type": "file",
"title": "auth module",
"path": "src/auth.ts",
"verification_status": "verified_by_agent"
}
],
"findings": [
{
"text": "Auth token validation is centralized in src/auth.ts.",
"source_refs": ["file:src/auth.ts"],
"confidence": "high"
}
],
"limitations": ["Only inspected auth files"],
"confidence": "medium"
}record_decision accepts either legacy evidence findings or an evidence_context object. When evidence is present, the server writes a separate evidence artifact, links it to the decision, updates the active session, and creates a markdown brief under .claude-state/briefs/.
Available Tools
8 toolsget_sessionGet Decision SessionA
Return the active session or a requested session record.
Inputs: session_id.
get_stateGet Decision StateB
Return the current project state summary and record counts.
Inputs: no named parameters.
get_task_contextGet Task ContextC
Return compact decision-relevant state for a specific task.
Inputs: task (required), limit.
record_decisionRecord DecisionC
Persist a structured decision and update recent_decisions.
Inputs: problem (required), options (required), selected (required), rationale (required), +6 more.
record_evidenceRecord EvidenceC
Persist normalized evidence sources, findings, limitations, and confidence.
Inputs: summary, sources, findings, limitations, +3 more.
reflect_outcomeReflect OutcomeC
Record the outcome of a previous decision or implementation.
Inputs: status (required), summary (required), outcome (required), decision_id, +3 more.
search_stateSearch Decision StateC
Search prior decisions and reflections by query text.
Inputs: query, limit.
update_stateUpdate Decision StateB
Apply a JSON merge patch to state.json and record why the state changed.
Inputs: patch (required), reason (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
TDQS
Scored across 8 tools
Each tool targets a distinct operation or entity: session, state, task context, decision, evidence, outcome, search, and state update. No two tools have overlapping purposes, ensuring clear differentiation for an agent.
Most tools follow a verb_noun pattern with 'get_' for retrieval and 'record_' for persistence, but 'reflect_outcome' deviates from the 'record_' convention. Overall, the naming is predictable and readable.
With 8 tools, the set is well-scoped for a decision state management server. Each tool serves a clear purpose without excess or deficiency.
The tools cover the core lifecycle: reading state, adding decisions/evidence/outcomes, searching, and updating. Minor gaps exist (e.g., no explicit get_decision or update/delete for decisions), but the surface is largely complete for the domain.
Maintenance
Related MCP Connectors
Shared memory MCP server for Claude Code, Codex, Gemini CLI and Cursor. Cited, editable.
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
Hosted MCP memory: save sessions/decisions once, search from Claude, Cursor, ChatGPT. EU-hosted FTS.
Cloud-hosted MCP server for durable AI memory
Related MCP Servers
- AlicenseNot gradedqualityDmaintenancePersistent memory MCP server for Claude Code that captures and recalls project context across sessions, eliminating the need to re-explain architecture and decisions daily.98 npm1MIT
- AlicenseNot gradedqualityDmaintenanceMCP server providing Claude with persistent, local memory for tracking architectural decisions, dead ends, and project context across conversations.MIT
- AlicenseAqualityCmaintenanceMCP server providing structured continuity memory for AI coding agents, tracking decisions, open loops, and session state in local SQLite. Enables agents to resume work from verified state across sessions without replaying transcripts.17Apache 2.0
- AlicenseAqualityDmaintenanceA zero-dependency MCP server for cross-session memory recall in Claude Code. Provides lexical search, listing, and retrieval of past session memories to avoid re-explaining context.38 npmMIT