{
  "markdown": "<!-- mcp-name: io.github.meridianmcp/meridian -->\r\n<p align=\"center\">\r\n  <img src=\"meridian/static/logo.svg\" width=\"64\" height=\"64\" alt=\"Meridian\">\r\n</p>\r\n\r\n# Meridian\r\n\r\n**Claude Code has no memory between sessions. Meridian fixes that.**\r\n\r\nOpen-source MCP server for persistent AI session memory — shared task log,\r\npinned decisions, human-in-the-loop queue, and tiered handoffs. Works with\r\nClaude Code, Cursor, Cline, Claude Desktop, or any MCP client.\r\n\r\n[![GitHub Stars](https://img.shields.io/github/stars/meridianmcp/Meridian?style=social)](https://github.com/meridianmcp/Meridian)\r\n[![License: MSL-1.0](https://img.shields.io/badge/license-MSL--1.0-blue)](LICENSE)\r\n[![Tests](https://github.com/meridianmcp/Meridian/actions/workflows/test.yml/badge.svg)](https://github.com/meridianmcp/Meridian/actions/workflows/test.yml)\r\n[![Docs](https://img.shields.io/badge/docs-docs.usemeridian.us-6c8fff)](https://docs.usemeridian.us)\r\n[![Hosted](https://img.shields.io/badge/hosted-usemeridian.us-a78bfa)](https://usemeridian.us)\r\n[![Neon](https://img.shields.io/badge/db-neon%20postgres-00e599)](https://neon.tech)\r\n[![Server](https://img.shields.io/endpoint?url=https://usemeridian.us/status/server)](https://usemeridian.us)\r\n[![MCP Tools](https://img.shields.io/endpoint?url=https://usemeridian.us/status/tools)](https://docs.usemeridian.us/mcp-tools)\r\n[![Live Sessions](https://img.shields.io/endpoint?url=https://usemeridian.us/status/sessions)](https://usemeridian.us)\r\n\r\n## Why Meridian\r\n\r\nEvery AI coding session boots blind. You re-explain the architecture, re-describe\r\nthe constraints, re-list what's been tried. When context fills up mid-task,\r\neverything is lost. This is context debt — and it compounds.\r\n\r\nMeridian gives your sessions shared memory. They see the same task log, the same\r\npinned decisions, the same goal state. When context fills up, a new session resumes\r\nfrom a compressed handoff in seconds. No copy-paste, no re-explaining from scratch.\r\n\r\n[![Meridian dashboard](docs/screenshots/01_dashboard.png)](https://usemeridian.us)\r\n\r\n## What it is, in 30 seconds\r\n\r\nA local MCP server every AI session connects to. They share goal state, see each\r\nother's task log, and resume from a compressed handoff when context fills up.\r\n\r\n**Two ways to run Meridian:**\r\n- **Self-host** — free forever, any team size. Clone and run in 2 commands.\r\n- **Hosted** at [usemeridian.us](https://usemeridian.us) — 30 days free (no card), then $20/mo Standard.\r\n\r\n<!-- MERIDIAN:ANCHOR:START quickstart -->\r\n## Quickstart\r\n\r\n### Option 1 — binary release (recommended)\r\n\r\nSigned binaries for Windows, macOS (Apple Silicon), and Linux are attached to\r\nevery [GitHub release](https://github.com/meridianmcp/Meridian/releases) (current: v0.2.6).\n\r\n**Linux / macOS (one-liner via uv):**\r\n```bash\r\nuv tool install meridian-server\r\nmeridian --tunnel --repo .\r\n```\r\n\r\n**Linux / macOS (manual binary download):**\r\n```bash\r\ncurl -fsSL https://usemeridian.us/install.sh | sh\r\n```\r\n\r\n**Windows (PowerShell, one-liner via uv):**\r\n```powershell\r\nuv tool install meridian-server\r\nmeridian --tunnel --repo .\r\n```\r\n\r\n**Windows (PowerShell, manual binary download):**\r\n```powershell\r\nirm https://usemeridian.us/install-windows.ps1 | iex\r\n```\r\n\r\nDashboard opens at **http://localhost:7878**. Data persists in `~/.meridian/` by default.\r\n\r\n### Option 2 — from source (dev setup / self-host)\r\n\r\n**Linux / macOS:**\r\n```bash\r\ngit clone https://github.com/meridianmcp/Meridian\r\ncd Meridian\r\n./install.sh\r\npixi run start\r\n```\r\n\r\n**Windows (PowerShell):**\r\n```powershell\r\ngit clone https://github.com/meridianmcp/Meridian\r\ncd Meridian\r\n.\\install.ps1\r\npixi run start\r\n```\r\n\r\nDashboard opens at **http://localhost:7878**. Data persists in `./data/meridian.db`.\r\n<!-- MERIDIAN:ANCHOR:END quickstart -->\r\n\r\n## Wire it into your AI client\r\n\r\n### Claude Code\r\n\r\nDrop a `.mcp.json` at your project root.\r\n\r\n**Hosted (no install)** — generate an API key at [usemeridian.us/settings](https://usemeridian.us/settings):\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"meridian\": {\r\n      \"type\": \"http\",\r\n      \"url\": \"https://usemeridian.us/mcp\",\r\n      \"headers\": { \"Authorization\": \"Bearer sk_meridian_YOUR_KEY_HERE\" }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n**Self-host (from source):**\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"meridian\": {\r\n      \"command\": \"pixi\",\r\n      \"args\": [\"run\", \"python\", \"-m\", \"meridian\", \"--mcp\"],\r\n      \"cwd\": \"/absolute/path/to/Meridian\"\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### Cursor / Windsurf\r\n\r\nSame JSON snippet — both clients read `.mcp.json` from the project root.\r\n\r\n### Claude Desktop\r\n\r\nAdd the same `mcpServers` block to:\r\n- Windows: `%APPDATA%\\Claude\\claude_desktop_config.json`\r\n- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`\r\n\r\nRestart Claude Desktop. New chats have Meridian tools. If a newly deployed\ntool is still missing, follow the [MCP tool-surface freshness guide](docs/mcp-tool-surface.md)\nbefore editing any client cache.\n\r\n### claude.ai web (recommended for planning chat)\r\n\r\nUse [dnakov/claude-mcp](https://github.com/dnakov/claude-mcp) — included as a submodule — to bridge claude.ai to your local Meridian server:\r\n\r\n```bash\r\ngit clone --recurse-submodules https://github.com/meridianmcp/Meridian\r\n```\r\n\r\n1. Open `chrome://extensions` and enable **Developer mode**\r\n2. Click **Load unpacked** and select `extensions/claude-mcp`\r\n3. Click the extension icon and set the URL to `http://localhost:7878/mcp`\r\n\r\nAll 54+ Meridian tools (`checkpoint`, `log_task`, `pin_decision`, etc.) are now available directly in claude.ai planning chat. No copy-pasting session output.\r\n\r\n### Hosted tier (no install)\r\n\r\nSign in at [usemeridian.us](https://usemeridian.us) → Settings → MCP client setup → Generate API key → Copy config.\r\n\r\nOr manually:\r\n```json\r\n{\"mcpServers\":{\"meridian\":{\"type\":\"http\",\"url\":\"https://usemeridian.us/mcp\",\"headers\":{\"Authorization\":\"Bearer sk_meridian_YOUR_KEY_HERE\"}}}}\r\n```\r\n\r\n**claude.ai (browser)** users: install the [dnakov/claude-mcp](https://github.com/dnakov/claude-mcp) Chrome extension, then visit [usemeridian.us/install-mcp](https://usemeridian.us/install-mcp) for a step-by-step setup guide with one-click copy buttons.\r\n\r\nGet your API key at [usemeridian.us/settings](https://usemeridian.us/settings) after sign-in. Free tier: 30 days, no card, full features.\r\n\r\n<!-- MERIDIAN:ANCHOR:START features-list -->\r\n## What you get\r\n\r\n- **Dashboard** at `http://localhost:7878` — sessions, tasks, sprint board,\r\n  swimlane timeline, HITL queue, pinned decisions.\r\n- **MCP tools** — `start_session`, `log_task`, `claim_task`, `set_decision`,\r\n  `pin_decision`, `request_hitl`, `generate_handoff`, and ~50 more.\r\n- **Symbol-level parallel safety** — `claim_file` can claim a single class or\r\n  function (parsed with `ast` / tree-sitter) so two sessions edit the same file\r\n  safely; an overlapping claim is blocked with the free symbols listed.\r\n- **Live work queue** — planners inject sprint items mid-run; executors pick them\r\n  up at the next item boundary via a `board_change` signal, no interruption.\r\n- **HITL recommended option** — `request_hitl` can flag a safe-default option the\r\n  dashboard highlights; Enter submits it, number keys pick others.\r\n- **GitHub hub** (hosted) — connect your repo once in Settings; sessions get `read_file`,\r\n  `list_files`, `search_code`, `git_log`, `get_commit` injected automatically. No extra install.\r\n- **Tiered handoffs** — L0/L1/L2 compression so a fresh session can resume in seconds.\r\n- **Webhook intake** — push events from LangGraph / Autogen / custom agents into the same dashboard.\r\n- **Works everywhere** — Claude Code, Claude Desktop, Cursor, Windsurf, LangGraph, custom.\r\n<!-- MERIDIAN:ANCHOR:END features-list -->\r\n\r\n## How it works\r\n\r\n```\r\n> start_session(project_id=\"meridian\", session_name=\"feature-x\")\r\n  ✓ session registered · sprint loaded · 12 active tasks\r\n\r\n> get_tasks(project_id=\"meridian\", limit=5)\r\n  [DONE]    backend / wire decisions_pinned table\r\n  [PENDING] frontend / add notes vtab (claimed by session-2)\r\n\r\n> claim_task(task_id=\"a1f3...\")\r\n  ✓ claimed — other sessions skip this one\r\n```\r\n\r\nState lives in `data/meridian.db` (SQLite) or a Postgres URL via `MERIDIAN_DB_URL`.\r\nNo cloud required for local use.\r\n\r\n## Team coordination\r\n\r\nPoint `MERIDIAN_DB_URL` at a shared Postgres (Neon free tier works great). Every\r\nteammate runs their own local Meridian against the same DB — instant shared\r\nsessions, no Meridian server in the cloud.\r\n\r\n## Auto-checkpoint with hooks\r\n\r\nOne command wires Claude Code and Codex to Meridian. Every session start injects\r\nyour project context automatically. Every session end snapshots completed work and\r\nwrites a delta handoff.\r\n\r\n**Mac/Linux:**\r\n```bash\r\ncurl -fsSL https://usemeridian.us/hooks.sh | bash\r\n```\r\n\r\n**Windows:**\r\n```powershell\r\nirm https://usemeridian.us/hooks.ps1 | iex\r\n```\r\n\r\nPrompts for your Meridian server URL (default `http://localhost:7878`), then opens\r\nyour browser to connect this machine — no project ID or API token to paste. Writes\r\nto `~/.claude/settings.json` (Claude Code) or `~/.codex/config.toml` (Codex). After\r\nsetup, every session automatically:\r\n\r\n1. **On start** — calls `POST /hooks/session-start` → injects goal, sprint items,\r\n   recent tasks, and pinned decisions into the session context via `additionalContext`.\r\n2. **On stop** — calls `POST /hooks/stop` → runs `auto_capture` and writes a delta\r\n   handoff so the next session resumes from where this one ended.\r\n\r\nNo more manual `start_session()` calls. No lost work when context fills.\r\n\r\n<!-- MERIDIAN:ANCHOR:START pricing-table -->\r\n## Hosted tier\r\n\r\n| | Standard | Pro |\r\n|---|---|---|\r\n| **Price** | $20/mo | $49/mo (waitlist) |\r\n| **Storage** | 1 GB included | 10 GB included |\r\n| **Compute** | 2 CU · 100 hrs/mo | 4 CU · 300 hrs/mo |\r\n| **Bring your own Postgres** | ✓ | ✓ |\r\n| **OAuth + email magic link** | ✓ | ✓ |\r\n| **Extra storage** | $0.50 / GB-month | $0.50 / GB-month |\r\n| **Support** | Email | Priority |\r\n\r\n30-day free trial · no card required\r\n<!-- MERIDIAN:ANCHOR:END pricing-table -->\r\n\r\n## License\r\n\r\n[MSL-1.0](LICENSE) — free for local and internal use at any team size. Paid\r\nlicense required if you host Meridian as a service for others. Converts to\r\nMIT after 6 years.\r\n\r\nFor licensing questions: [hello@usemeridian.us](mailto:hello@usemeridian.us)\r\n\r\n## Contributors\r\n\r\nBuilt by [@ajc3xc](https://github.com/ajc3xc)\r\n\r\n[![Add to Cursor](https://cursor.com/deeplink/mcp-install-badge.svg)](https://cursor.com/install-mcp?name=meridian&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vdXNlbWVyaWRpYW4udXMvbWNwIiwiaGVhZGVycyI6eyJBdXRob3JpemF0aW9uIjoiQmVhcmVyIHNrX21lcmlkaWFuX1lPVVJfS0VZX0hFUkUifX0=)\r\n",
  "bytes": 10672,
  "sha": "beaac6e0af0ff28ecaa1ea9131a9895a8f154e5e7c48661c69cc101e8834ea4b",
  "repo_slug": "meridianmcp/meridian",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_ajc3xc_meridian_f67564f8/readme"
}