@meridianmcp/mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,228 @@
1
+ <!-- mcp-name: io.github.ajc3xc/meridian -->
2
+ <p align="center">
3
+ <img src="meridian/static/logo.svg" width="64" height="64" alt="Meridian">
4
+ </p>
5
+
6
+ # Meridian
7
+
8
+ **Claude Code has no memory between sessions. Meridian fixes that.**
9
+
10
+ Open-source MCP server for persistent AI session memory — shared task log,
11
+ pinned decisions, human-in-the-loop queue, and tiered handoffs. Works with
12
+ Claude Code, Cursor, Cline, Claude Desktop, or any MCP client.
13
+
14
+ [![License: MSL-1.0](https://img.shields.io/badge/license-MSL--1.0-blue)](LICENSE)
15
+ [![Tests](https://github.com/meridianmcp/Meridian/actions/workflows/test.yml/badge.svg)](https://github.com/meridianmcp/Meridian/actions/workflows/test.yml)
16
+ [![Docs](https://img.shields.io/badge/docs-docs.usemeridian.us-6c8fff)](https://docs.usemeridian.us)
17
+ [![Hosted](https://img.shields.io/badge/hosted-usemeridian.us-a78bfa)](https://usemeridian.us)
18
+ [![Neon](https://img.shields.io/badge/db-neon%20postgres-00e599)](https://neon.tech)
19
+
20
+ ## Why Meridian
21
+
22
+ Every AI coding session boots blind. You re-explain the architecture, re-describe
23
+ the constraints, re-list what's been tried. When context fills up mid-task,
24
+ everything is lost. This is context debt — and it compounds.
25
+
26
+ Meridian gives your sessions shared memory. They see the same task log, the same
27
+ pinned decisions, the same goal state. When context fills up, a new session resumes
28
+ from a compressed handoff in seconds. No copy-paste, no re-explaining from scratch.
29
+
30
+ ---
31
+
32
+ ---
33
+
34
+ ## What it is, in 30 seconds
35
+
36
+ A local MCP server every AI session connects to. They share goal state, see each
37
+ other's task log, and resume from a compressed handoff when context fills up.
38
+
39
+ **Two ways to run Meridian:**
40
+ - **Self-host** — free forever, any team size. Clone and run in 2 commands.
41
+ - **Hosted** at [usemeridian.us](https://usemeridian.us) — 30 days free (no card), then $20/mo Solo.
42
+
43
+ ## Quickstart — binary (no Python required)
44
+
45
+ Download the single-file binary for your platform, double-click (or run from terminal), and the dashboard opens automatically.
46
+
47
+ > **Binary users skip `install.sh` entirely.** Just download, run, and wire hooks once with `hooks.sh` / `hooks.ps1`. No Python, no pixi, no git clone.
48
+
49
+ | Platform | Download | Default port |
50
+ |---|---|---|
51
+ | Windows | [meridian.exe](https://github.com/meridianmcp/Meridian/releases/latest/download/meridian.exe) | 7700 |
52
+ | macOS (Apple Silicon) | [meridian-mac-arm64](https://github.com/meridianmcp/Meridian/releases/latest/download/meridian-mac-arm64) | 7700 |
53
+ | macOS (Intel) | [meridian-mac-x86](https://github.com/meridianmcp/Meridian/releases/latest/download/meridian-mac-x86) | 7700 |
54
+
55
+ Data is stored in `~/.meridian/meridian.db`. Set `MERIDIAN_PORT` to change the port.
56
+
57
+ ## Quickstart — from source
58
+
59
+ **Linux / macOS:**
60
+ ```bash
61
+ git clone https://github.com/meridianmcp/Meridian
62
+ cd Meridian
63
+ ./install.sh
64
+ pixi run start
65
+ ```
66
+
67
+ **Windows (PowerShell):**
68
+ ```powershell
69
+ git clone https://github.com/meridianmcp/Meridian
70
+ cd Meridian
71
+ .\install.ps1
72
+ pixi run start
73
+ ```
74
+
75
+ Dashboard opens at **http://localhost:7878**. Data persists in `./data/meridian.db`.
76
+
77
+ ## Wire it into your AI client
78
+
79
+ ### Claude Code
80
+
81
+ Drop a `.mcp.json` at your project root:
82
+ ```json
83
+ {
84
+ "mcpServers": {
85
+ "meridian": {
86
+ "command": "pixi",
87
+ "args": ["run", "python", "-m", "meridian", "--mcp"],
88
+ "cwd": "/absolute/path/to/Meridian"
89
+ }
90
+ }
91
+ }
92
+ ```
93
+
94
+ ### Cursor / Windsurf
95
+
96
+ Same JSON snippet — both clients read `.mcp.json` from the project root.
97
+
98
+ ### Claude Desktop
99
+
100
+ Add the same `mcpServers` block to:
101
+ - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
102
+ - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
103
+
104
+ Restart Claude Desktop. New chats have Meridian tools.
105
+
106
+ ### claude.ai web (recommended for planning chat)
107
+
108
+ Use [dnakov/claude-mcp](https://github.com/dnakov/claude-mcp) — included as a submodule — to bridge claude.ai to your local Meridian server:
109
+
110
+ ```bash
111
+ git clone --recurse-submodules https://github.com/meridianmcp/Meridian
112
+ ```
113
+
114
+ 1. Open `chrome://extensions` and enable **Developer mode**
115
+ 2. Click **Load unpacked** and select `extensions/claude-mcp`
116
+ 3. Click the extension icon and set the URL to `http://localhost:7878/mcp`
117
+
118
+ All 27 Meridian tools (`checkpoint`, `log_task`, `pin_decision`, etc.) are now available directly in claude.ai planning chat. No copy-pasting session output.
119
+
120
+ ### Hosted tier (no install)
121
+
122
+ Sign in at [usemeridian.us](https://usemeridian.us) → Settings → MCP client setup → Generate API key → Copy config.
123
+
124
+ Or manually:
125
+ ```json
126
+ {
127
+ "mcpServers": {
128
+ "meridian": {
129
+ "command": "npx",
130
+ "args": ["-y", "mcp-remote", "https://usemeridian.us/mcp"],
131
+ "env": {"BEARER_TOKEN": "sk_meridian_YOUR_KEY_HERE"}
132
+ }
133
+ }
134
+ }
135
+ ```
136
+
137
+ **Claude Desktop** users can install [meridian-hosted.dxt](https://github.com/meridianmcp/Meridian/releases/latest/download/meridian-hosted.dxt) directly (one-click, no config needed).
138
+
139
+ **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.
140
+
141
+ Get your API key at [usemeridian.us/settings](https://usemeridian.us/settings) after sign-in. Free tier: 30 days, no card, full features.
142
+
143
+ ## What you get
144
+
145
+ - **Dashboard** at `http://localhost:7878` — sessions, tasks, sprint board,
146
+ swimlane timeline, HITL queue, pinned decisions.
147
+ - **MCP tools** — `start_session`, `log_task`, `claim_task`, `set_decision`,
148
+ `pin_decision`, `request_hitl`, `generate_handoff`, plus 10 more.
149
+ - **Tiered handoffs** — L0/L1/L2 compression so a fresh session can resume in seconds.
150
+ - **Webhook intake** — push events from LangGraph / Autogen / custom agents into the same dashboard.
151
+ - **Works everywhere** — Claude Code, Claude Desktop, Cursor, Windsurf, LangGraph, custom.
152
+
153
+ ## How it works
154
+
155
+ ```
156
+ > start_session(project_id="meridian", session_name="feature-x")
157
+ ✓ session registered · sprint loaded · 12 active tasks
158
+
159
+ > get_tasks(project_id="meridian", limit=5)
160
+ [DONE] backend / wire decisions_pinned table
161
+ [PENDING] frontend / add notes vtab (claimed by session-2)
162
+
163
+ > claim_task(task_id="a1f3...")
164
+ ✓ claimed — other sessions skip this one
165
+ ```
166
+
167
+ State lives in `data/meridian.db` (SQLite) or a Postgres URL via `MERIDIAN_DB_URL`.
168
+ No cloud required for local use.
169
+
170
+ ## Team coordination
171
+
172
+ Point `MERIDIAN_DB_URL` at a shared Postgres (Neon free tier works great). Every
173
+ teammate runs their own local Meridian against the same DB — instant shared
174
+ sessions, no Meridian server in the cloud.
175
+
176
+ ## Auto-checkpoint with hooks
177
+
178
+ One command wires Claude Code and Codex to Meridian. Every session start injects
179
+ your project context automatically. Every session end snapshots completed work and
180
+ writes a delta handoff.
181
+
182
+ **Mac/Linux:**
183
+ ```bash
184
+ curl -fsSL https://usemeridian.us/hooks.sh | bash
185
+ ```
186
+
187
+ **Windows:**
188
+ ```powershell
189
+ irm https://usemeridian.us/hooks.ps1 | iex
190
+ ```
191
+
192
+ Prompts for your Meridian server URL (default `http://localhost:7878`) and your
193
+ project ID. Writes to `~/.claude/settings.json` (Claude Code) or
194
+ `~/.codex/config.toml` (Codex). After setup, every session automatically:
195
+
196
+ 1. **On start** — calls `POST /hooks/session-start` → injects goal, sprint items,
197
+ recent tasks, and pinned decisions into the session context via `additionalContext`.
198
+ 2. **On stop** — calls `POST /hooks/stop` → runs `auto_capture` and writes a delta
199
+ handoff so the next session resumes from where this one ended.
200
+
201
+ No more manual `start_session()` calls. No lost work when context fills.
202
+
203
+ ## Hosted tier
204
+
205
+ | | Standard | Pro |
206
+ |---|---|---|
207
+ | **Price** | $20/mo | $49/mo (waitlist) |
208
+ | **Storage** | 1 GB included | 10 GB included |
209
+ | **Compute** | 2 CU · 100 hrs/mo | 4 CU · 300 hrs/mo |
210
+ | **Environments** | 1 | prod / staging / dev |
211
+ | **Bring your own Postgres** | ✓ | ✓ |
212
+ | **OAuth + email magic link** | ✓ | ✓ |
213
+ | **Extra storage** | $0.50 / GB-month | $0.50 / GB-month |
214
+ | **Support** | Email | Priority |
215
+
216
+ 7-day free trial on Standard. Card required, no charge until day 8.
217
+
218
+ ## License
219
+
220
+ [MSL-1.0](LICENSE) — free for local and internal use at any team size. Paid
221
+ license required if you host Meridian as a service for others. Converts to
222
+ MIT after 6 years.
223
+
224
+ For licensing questions: [hello@usemeridian.us](mailto:hello@usemeridian.us)
225
+
226
+ ## Contributors
227
+
228
+ [![Contributors](https://contrib.rocks/image?repo=meridianmcp/Meridian)](https://github.com/meridianmcp/Meridian/graphs/contributors)
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * meridian-mcp — npx launcher
4
+ * Checks for Python + pixi, then starts Meridian MCP server via stdio.
5
+ * Falls back to hosted SSE endpoint instructions if local setup not found.
6
+ */
7
+ const { execSync, spawn } = require('child_process');
8
+ const path = require('path');
9
+ const os = require('os');
10
+
11
+ const REPO = 'https://github.com/meridianmcp/Meridian';
12
+ const HOSTED = 'https://usemeridian.us/mcp/sse';
13
+
14
+ function hasPython() {
15
+ try { execSync('python --version', { stdio: 'ignore' }); return true; } catch {}
16
+ try { execSync('python3 --version', { stdio: 'ignore' }); return true; } catch {}
17
+ return false;
18
+ }
19
+
20
+ function hasPixi() {
21
+ try { execSync('pixi --version', { stdio: 'ignore' }); return true; } catch {}
22
+ return false;
23
+ }
24
+
25
+ function hasRepo() {
26
+ // Check if we're inside the Meridian repo already
27
+ try {
28
+ const here = process.cwd();
29
+ require('fs').accessSync(path.join(here, 'pixi.toml'));
30
+ return here;
31
+ } catch {}
32
+ // Check default install paths
33
+ const candidates = [
34
+ path.join(os.homedir(), 'Meridian'),
35
+ path.join(os.homedir(), 'Documents', 'Meridian'),
36
+ path.join(os.homedir(), 'Documents', 'Meridian', 'repository'),
37
+ ];
38
+ for (const c of candidates) {
39
+ try { require('fs').accessSync(path.join(c, 'pixi.toml')); return c; } catch {}
40
+ }
41
+ return null;
42
+ }
43
+
44
+ const repoPath = hasRepo();
45
+
46
+ if (repoPath && hasPixi()) {
47
+ // Happy path: run stdio MCP server
48
+ const proc = spawn('pixi', ['run', 'python', '-m', 'meridian', '--mcp'], {
49
+ cwd: repoPath,
50
+ stdio: 'inherit',
51
+ });
52
+ proc.on('exit', code => process.exit(code || 0));
53
+ } else {
54
+ // Fallback: print setup instructions
55
+ process.stderr.write(`
56
+ Meridian MCP — local setup not found.
57
+
58
+ Quick setup (30 seconds):
59
+ curl -fsSL https://pixi.sh/install.sh | bash
60
+ git clone ${REPO} && cd Meridian && pixi run start
61
+
62
+ Or use the hosted SSE endpoint (no install):
63
+ Name: meridian
64
+ URL: ${HOSTED}
65
+ Add to your MCP client config and you're done.
66
+
67
+ Docs: https://docs.usemeridian.us
68
+ `);
69
+ process.exit(1);
70
+ }
package/package.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@meridianmcp/mcp",
3
+ "version": "1.0.0",
4
+ "description": "Persistent memory, task coordination, and HITL queue for AI coding sessions. MCP server for Claude Code, Cursor, Windsurf, Codex CLI.",
5
+ "keywords": ["mcp", "claude", "cursor", "windsurf", "ai", "session", "coordination", "hitl"],
6
+ "homepage": "https://usemeridian.us",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/meridianmcp/Meridian.git"
10
+ },
11
+ "license": "FSL-1.1-MIT",
12
+ "bin": {
13
+ "meridian-mcp": "./bin/meridian-mcp.js"
14
+ },
15
+ "engines": { "node": ">=18" },
16
+ "files": ["bin/", "README.md"]
17
+ }