Bicameral MCP

Bicameral MCP

A provenance-aware decision ledger that maps meeting transcripts and PRDs to code symbols to track implementation and drift. It enables developers to maintain institutional memory by linking historical context and architectural decisions directly to the evolving codebase.

Category
Visit Server

README

Bicameral MCP — Decision Ledger for Your Codebase

Every software team makes hundreds of verbal decisions per week — in meetings, PRDs, Slack threads, and huddles. None of those decisions are linked to the code that implements (or fails to implement) them.

Bicameral MCP is a local MCP server that ingests meeting transcripts and PRDs, builds a structured graph of decisions mapped to code symbols, and continuously tracks whether those decisions are reflected, drifting, or lost as the codebase evolves.

One-liner: A provenance-aware decision layer for your codebase — paste a transcript, get a living map of what was decided and what was actually built.


The Problem: 5 SDLC Friction Points

Smell What Happens Fix
CONSTRAINT_LOST A rate limit or compliance rule surfaces mid-sprint instead of at design time bicameral.search — pre-flight context before coding
CONTEXT_SCATTERED The "why" behind a decision is split across Slack, Notion, and someone's memory bicameral.ingest — normalizes intent from any source into a unified graph
DECISION_UNDOCUMENTED A verbal "let's do X" never lands in a ticket or ADR bicameral.status — tracks what was decided vs what was built
REPEATED_EXPLANATION Same context tax paid twice — once to design, once to engineering bicameral.search — retrieves full decision provenance
TRIBAL_KNOWLEDGE Only one person knows why the system works the way it does bicameral.drift — surfaces institutional memory tied to code

Bicameral's value is drift detection — knowing that a decision made three weeks ago is now inconsistent with what actually shipped, or that a decision made today is inconsistent with the codebase reality.


Quickstart

One-command setup

# With pipx (recommended — most systems have it)
pipx run bicameral-mcp setup

# Or with uvx
uvx bicameral-mcp setup

# Or with pip
pip install bicameral-mcp && bicameral-mcp setup

This launches an interactive wizard that:

  1. Detects your repo (from cwd or prompts you)
  2. Auto-detects the best available runner (uvx, pipx, or python)
  3. Installs the MCP config into Claude Code

That's it. The server builds its code index on first tool call.

Manual config

Run from your repo root:

claude mcp add-json bicameral --scope local '{
  "command": "uvx",
  "args": ["bicameral-mcp@latest"],
  "env": {
    "REPO_PATH": "/path/to/your/repo",
    "SURREAL_URL": "surrealkv:///path/to/your/repo/.bicameral/ledger.db"
  }
}'

Local development

pip install -e ".[test]"
bicameral-mcp setup           # interactive config
bicameral-mcp --smoke-test    # verify tools
bicameral-mcp                 # start MCP server (stdio)

No LLM provider credentials needed — all retrieval is deterministic.


5 MCP Tools

Tool Purpose Auto-triggers
bicameral.ingest Ingest a normalized source payload (transcript, PRD, Slack export) and advance the source cursor
bicameral.status Surface implementation status of all tracked decisions (reflected / drifted / pending / ungrounded)
bicameral.search Pre-flight: find past decisions relevant to a feature before writing code link_commit(HEAD)
bicameral.drift Code review: surface decisions that touch symbols in a file, flagging divergence link_commit(HEAD)
bicameral.link_commit Sync a commit into the ledger — updates content hashes, re-evaluates drift

How the Tools Compose

Pre-flight (before coding)

bicameral.search("add rate limiting") → surfaces prior constraints and code regions

Code review (before merging)

bicameral.drift("payments/processor.py") → surfaces decisions touching this file
bicameral.status(filter="drifted") → full drift report

Ingestion (after a meeting)

bicameral.ingest(transcript_payload) → extracts intents, maps to code
bicameral.link_commit("HEAD") → syncs latest commit state
bicameral.status(since="2026-03-20") → shows what's reflected vs pending

Status Derivation

Decision status is a pure function computed at query time — never stored:

Condition Status Meaning
No code_region mapped ungrounded Intent captured but no matching code found
Symbol absent at git ref pending Code not yet written
content_hash differs drifted Code changed since decision was recorded
content_hash matches reflected Code matches intent

This makes Bicameral immune to rebase, squash, and cherry-pick — status is always re-derivable from (intent, git_ref).


Environment Variables

Var Default Purpose
REPO_PATH . Path to the repo being analyzed
SURREAL_URL surrealkv://~/.bicameral/ledger.db SurrealDB URL. Use memory:// for tests.

Tests

pip install -e ".[test]"
pytest tests/ -v
Phase Tests What
Phase 1 test_phase1_code_locator.py Code locator tools against real indexed repo
Phase 2 test_phase2_ledger.py SurrealDB ledger adapter with memory://
Phase 3 test_phase3_integration.py Full E2E structured around 5 SDLC failure modes

Phase 3 tests produce JSON artifacts (test-results/e2e/) with full tool responses and SurrealDB graph dumps for qualitative review.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured