@steno-ai/mcp 0.1.3 → 0.1.5
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 +72 -46
- package/dist/cli.js +830 -921
- package/dist/init.js +348 -0
- package/package.json +7 -6
- package/src/cli.ts +10 -46
- package/src/init.ts +368 -0
package/README.md
CHANGED
|
@@ -1,24 +1,65 @@
|
|
|
1
1
|
# @steno-ai/mcp
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Persistent long-term memory for Claude. One command to set up. Works with Claude Desktop, Claude Code, Cursor, and any MCP client.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Quick Start (2 minutes)
|
|
6
6
|
|
|
7
|
-
### 1.
|
|
7
|
+
### 1. Create a free Supabase project
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Go to [supabase.com](https://supabase.com), create a new project. Copy your:
|
|
10
|
+
- **Project URL** (looks like `https://abc123.supabase.co`)
|
|
11
|
+
- **Service Role Key** (in Settings > API > service_role key — NOT the anon key)
|
|
10
12
|
|
|
11
|
-
### 2.
|
|
13
|
+
### 2. Get an OpenAI key
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
Go to [platform.openai.com/api-keys](https://platform.openai.com/api-keys), create a key.
|
|
16
|
+
|
|
17
|
+
### 3. Run setup
|
|
14
18
|
|
|
15
19
|
```bash
|
|
16
|
-
|
|
17
|
-
cd steno-ai/packages/supabase-adapter/src/migrations
|
|
18
|
-
# Run each .sql file (001-025) in order via Supabase SQL Editor or CLI
|
|
20
|
+
npx steno-mcp-init
|
|
19
21
|
```
|
|
20
22
|
|
|
21
|
-
|
|
23
|
+
This will:
|
|
24
|
+
- Ask for your Supabase URL, Service Role Key, and OpenAI key
|
|
25
|
+
- Create all database tables automatically
|
|
26
|
+
- Write the Claude Desktop config for you
|
|
27
|
+
|
|
28
|
+
### 4. Restart Claude Desktop
|
|
29
|
+
|
|
30
|
+
Quit (Cmd+Q) and reopen. Then:
|
|
31
|
+
- Go to **Settings > General** → set **"Tools already loaded"**
|
|
32
|
+
- Start chatting — Claude now has persistent memory
|
|
33
|
+
|
|
34
|
+
That's it. Your data stays in YOUR Supabase project. Nothing is shared.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## What you get
|
|
39
|
+
|
|
40
|
+
| Tool | What it does |
|
|
41
|
+
|------|-------------|
|
|
42
|
+
| `steno_remember` | Stores facts, preferences, decisions, people, events |
|
|
43
|
+
| `steno_recall` | Searches memory with 6-signal fusion (vector + keyword + graph + temporal + recency + salience) |
|
|
44
|
+
| `steno_flush` | Forces extraction of buffered session messages |
|
|
45
|
+
| `steno_feedback` | Rates whether a recalled memory was useful |
|
|
46
|
+
| `steno_stats` | Shows memory statistics |
|
|
47
|
+
|
|
48
|
+
## How it works
|
|
49
|
+
|
|
50
|
+
**Storing memories:** Every message goes through LLM extraction → entity/edge creation → temporal grounding → contextual embedding → dedup → knowledge graph update.
|
|
51
|
+
|
|
52
|
+
**Recalling memories:** Every query runs through 6 parallel signals fused with configurable weights. Knowledge updates are tracked — newer facts supersede older ones.
|
|
53
|
+
|
|
54
|
+
**Features:**
|
|
55
|
+
- Knowledge graph with typed entities and relationships
|
|
56
|
+
- Temporal reasoning (eventDate + documentDate on every fact)
|
|
57
|
+
- Knowledge updates (newer facts automatically supersede older ones)
|
|
58
|
+
- Domain-scoped entity types (vehicle, startup, project — or define your own)
|
|
59
|
+
- Session buffering for cross-message context
|
|
60
|
+
- Source chunk preservation for full-context answers
|
|
61
|
+
|
|
62
|
+
## Manual Setup (if you prefer)
|
|
22
63
|
|
|
23
64
|
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
24
65
|
|
|
@@ -32,56 +73,41 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
|
32
73
|
"SUPABASE_URL": "https://YOUR-PROJECT.supabase.co",
|
|
33
74
|
"SUPABASE_SERVICE_ROLE_KEY": "eyJ...",
|
|
34
75
|
"OPENAI_API_KEY": "sk-...",
|
|
35
|
-
"PERPLEXITY_API_KEY": "pplx-... (optional)"
|
|
76
|
+
"PERPLEXITY_API_KEY": "pplx-... (optional, for cheaper embeddings)"
|
|
36
77
|
}
|
|
37
78
|
}
|
|
38
79
|
}
|
|
39
80
|
}
|
|
40
81
|
```
|
|
41
82
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
The MCP server will connect automatically. Claude gets 5 memory tools:
|
|
45
|
-
|
|
46
|
-
| Tool | Description |
|
|
47
|
-
|------|-------------|
|
|
48
|
-
| `steno_remember` | Store facts, preferences, decisions, people, events |
|
|
49
|
-
| `steno_recall` | Search memory with 6-signal fusion retrieval |
|
|
50
|
-
| `steno_flush` | Force extraction of buffered session messages |
|
|
51
|
-
| `steno_feedback` | Rate whether a recalled memory was useful |
|
|
52
|
-
| `steno_stats` | View memory statistics |
|
|
53
|
-
|
|
54
|
-
## How it works
|
|
55
|
-
|
|
56
|
-
Every `steno_remember` call runs through the full extraction pipeline:
|
|
57
|
-
- **LLM fact extraction** with temporal grounding (eventDate + documentDate)
|
|
58
|
-
- **Knowledge graph** building (entities, typed edges, domain-scoped schemas)
|
|
59
|
-
- **Dedup + knowledge updates** (newer facts supersede older ones)
|
|
60
|
-
- **Contextual embeddings** (facts embedded with conversation context)
|
|
61
|
-
- **Session buffering** (messages batched for cross-message context)
|
|
62
|
-
|
|
63
|
-
Every `steno_recall` query uses **6-signal fusion**:
|
|
64
|
-
- Vector similarity (0.30) — semantic search
|
|
65
|
-
- Temporal proximity (0.20) — date-aware retrieval
|
|
66
|
-
- Graph traversal (0.15) — entity relationships
|
|
67
|
-
- Keyword/FTS (0.15) — exact term matching
|
|
68
|
-
- Recency decay (0.10) — prefer recent memories
|
|
69
|
-
- Salience (0.10) — importance × access frequency
|
|
70
|
-
|
|
71
|
-
## Claude Code
|
|
72
|
-
|
|
73
|
-
Works the same way — add to your Claude Code MCP config or install as a plugin.
|
|
83
|
+
Then run the migrations manually — see [migrations folder](https://github.com/SankrityaT/steno-ai/tree/main/packages/supabase-adapter/src/migrations).
|
|
74
84
|
|
|
75
85
|
## Environment Variables
|
|
76
86
|
|
|
77
87
|
| Variable | Required | Description |
|
|
78
88
|
|----------|----------|-------------|
|
|
79
89
|
| `SUPABASE_URL` | Yes | Your Supabase project URL |
|
|
80
|
-
| `SUPABASE_SERVICE_ROLE_KEY` | Yes | Supabase service role key |
|
|
81
|
-
| `OPENAI_API_KEY` | Yes |
|
|
82
|
-
| `PERPLEXITY_API_KEY` | No |
|
|
90
|
+
| `SUPABASE_SERVICE_ROLE_KEY` | Yes | Supabase service role key (not anon key) |
|
|
91
|
+
| `OPENAI_API_KEY` | Yes | For LLM extraction and embeddings |
|
|
92
|
+
| `PERPLEXITY_API_KEY` | No | Cheaper embeddings ($0.03/1M tokens vs $0.13) |
|
|
83
93
|
| `STENO_SCOPE_ID` | No | Scope identifier (default: "default") |
|
|
84
94
|
|
|
95
|
+
## For Developers
|
|
96
|
+
|
|
97
|
+
Use the engine directly in your app:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
npm install @steno-ai/engine @steno-ai/supabase-adapter @steno-ai/openai-adapter
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
import { runExtractionPipeline, search } from '@steno-ai/engine';
|
|
105
|
+
import { SupabaseStorageAdapter } from '@steno-ai/supabase-adapter';
|
|
106
|
+
import { OpenAILLMAdapter } from '@steno-ai/openai-adapter';
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
See [@steno-ai/engine](https://www.npmjs.com/package/@steno-ai/engine) for full API docs.
|
|
110
|
+
|
|
85
111
|
## Part of [Steno](https://github.com/SankrityaT/steno-ai)
|
|
86
112
|
|
|
87
113
|
The memory layer for AI agents. 13 packages — engine, adapters, SDK, MCP server, and more.
|