Decision OS MCP Server

1

Add it to Claude Code

Run this in a terminal.

Run in terminal
claude mcp add -e "DECISION_OS_PATH=${DECISION_OS_PATH}" decision-os -- npx decision-os-mcp
Required:DECISION_OS_PATH
README.md

An LLM-native decision tracking and learning system.

Decision OS MCP

An MCP server for Decision OS — an LLM-native decision tracking and learning system.

What is Decision OS?

Decision OS captures novel pressure — moments when reality surprises you during engineering work. Unlike traditional documentation, it focuses on what an LLM couldn't predict, creating a learning loop:

Cases → Pressure Events (surprises) → Outcomes → Foundations (compressed learnings)

Quick Start

1. Install the MCP Server

# Global install
npm install -g decision-os-mcp

# Or use npx (no install needed)
npx decision-os-mcp

2. Add to Your Project

Copy the template to your project:

cp -r templates/.decision-os /path/to/your-project/

Edit config.yaml with your project name.

3. Configure Your Agent

Cursor

Add to your project's .cursor/mcp.json:

{
  "mcpServers": {
    "decision-os": {
      "command": "npx",
      "args": ["-y", "decision-os-mcp"],
      "env": {
        "DECISION_OS_PATH": "${workspaceFolder}/.decision-os"
      }
    }
  }
}

Copy the Cursor rules template:

cp templates/.cursor/rules/decision-os.mdc /path/to/your-project/.cursor/rules/
Claude Code / Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "decision-os": {
      "command": "npx",
      "args": ["-y", "decision-os-mcp"],
      "env": {
        "DECISION_OS_PATH": "/absolute/path/to/your-project/.decision-os"
      }
    }
  }
}

Copy the agent instructions template (includes a .claude/rules/ symlink to AGENTS.md):

cp templates/AGENTS.md /path/to/your-project/
cp -R templates/.claude /path/to/your-project/

Note: Claude Desktop requires absolute paths in DECISION_OS_PATH (no ${workspaceFolder}).

AGENTS.md is an open standard supported by 20+ coding agents including OpenAI Codex, Google Jules, Claude Code, Cursor, Aider, Zed, Warp, VS Code, and more. The .claude/rules/ symlink lets Claude Code pick it up automatically too — one file, every agent.

Tools

Tool Description
get_context Get active case, recent pressures, foundations ranked by relevance, conflicts
log_pressure Log a pressure event when reality differs from expectation
quick_pressure Quick-capture a pressure event with minimal friction (only expected + actual required)
create_case Create a new case (unit of work)
close_case Close a case with outcome signals and regret score (auto-forgets successful cases)
set_active_case Set the active case for the session (persists across restarts)
get_foundations Query foundations from project and global scopes
search_pressures Search past pressure events
check_policy Check what policy requires for given signals
promote_to_foundation Promote pressure events to a foundation (PROJECT or GLOBAL scope)
elevate_foundation Elevate a project foundation to global scope
validate_foundation Validate that a global foundation applies in current project
suggest_review Review project for unextracted learnings and forgetting opportunities
list_cases List all cases in the project

Core Concepts

Pressure Events

The primary learning artifact. Logged when something unexpected happens:

expected: "Supabase insert would throw on null FK"
actual: "RLS silently blocked the write, no error"
adaptation: "Added explicit null-check before insert"
remember: "Supabase RLS fails silently on null FK values"

Foundations

Compressed learnings promoted from repeated pressure events:

id: F-0001
title: "Supabase RLS fails silently on null FK"
default_behavior: "Always validate FK values before insert when using RLS"
context_tags: [SUPABASE, RLS, DATA_MODEL]
confidence: 2  # Out of 3
scope: PROJECT  # or GLOBAL
origin_project: my-project
validated_in: [my-project, other-project]
exit_criteria: "Supabase adds explicit error for null FK violations"
source_pressures: [PE-0003, PE-0007]

Hierarchical Foundations (GLOBAL -> PROJECT)

Decision OS supports a cascading scope model similar to Git config:

~/.decision-os/                    # GLOBAL (user-wide, universal learnings)
├── config.yaml
└── defaults/foundations.yaml      # GF-prefixed foundations

~/projects/my-app/.decision-os/    # PROJECT (specific to this codebase)
├── config.yaml
├── cases/
└── defaults/foundations.yaml      # F-prefixed foundations

Resolution order: PROJECT wins over GLOBAL on conflicts.

Global foundations are recommendations, not rules. They represent universal patterns that transcend specific tech stacks:

  • Tool behaviors (e.g., "MCP descriptor paths may be stale")
  • Debugging strategies (e.g., "Trace call sites before refactoring")
  • Meta-learnings (e.g., "Question requirements before implementing")

**Setu

Tools (14)

get_contextGet active case, recent pressures, foundations ranked by relevance, and conflicts.
log_pressureLog a pressure event when reality differs from expectation.
quick_pressureQuick-capture a pressure event with minimal friction.
create_caseCreate a new case (unit of work).
close_caseClose a case with outcome signals and regret score.
set_active_caseSet the active case for the session.
get_foundationsQuery foundations from project and global scopes.
search_pressuresSearch past pressure events.
check_policyCheck what policy requires for given signals.
promote_to_foundationPromote pressure events to a foundation.
elevate_foundationElevate a project foundation to global scope.
validate_foundationValidate that a global foundation applies in current project.
suggest_reviewReview project for unextracted learnings and forgetting opportunities.
list_casesList all cases in the project.

Environment Variables

DECISION_OS_PATHrequiredThe absolute path to the project's .decision-os directory.

Configuration

claude_desktop_config.json
{"mcpServers": {"decision-os": {"command": "npx", "args": ["-y", "decision-os-mcp"], "env": {"DECISION_OS_PATH": "/absolute/path/to/your-project/.decision-os"}}}}

Try it

Log a pressure event: I expected the Supabase insert to work, but RLS blocked it silently.
Create a new case for the user authentication refactor.
Search for past pressure events related to database RLS policies.
Review the current project for unextracted learnings.
Promote the recent pressure event about null FK values to a project foundation.

Frequently Asked Questions

What are the key features of Decision OS?

Captures 'pressure events' when engineering reality surprises the LLM.. Compresses repeated learnings into persistent 'foundations'.. Supports hierarchical scope (Global vs Project) for knowledge management.. Integrates with 20+ coding agents via the AGENTS.md standard.. Provides a structured loop for cases, outcomes, and knowledge retention..

What can I use Decision OS for?

Tracking unexpected technical hurdles during complex refactoring tasks.. Building a shared knowledge base of team-specific engineering patterns.. Documenting why specific architectural decisions were made to prevent future regressions.. Managing work units (cases) while automatically logging learning artifacts..

How do I install Decision OS?

Install Decision OS by running: npm install -g decision-os-mcp

What MCP clients work with Decision OS?

Decision OS 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 Decision OS 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