@steno-ai/mcp 0.1.5 → 0.1.6

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/dist/init.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":""}
package/dist/init.js CHANGED
@@ -1,20 +1,26 @@
1
1
  #!/usr/bin/env node
2
- #\!/usr/bin/env node
3
-
4
- // packages/mcp-server/src/init.ts
5
- import { createClient } from "@supabase/supabase-js";
6
- import * as fs from "fs";
7
- import * as path from "path";
8
- import * as os from "os";
9
- import * as readline from "readline";
10
- var rl = readline.createInterface({ input: process.stdin, output: process.stdout });
11
- var ask = (q) => new Promise((r) => rl.question(q, r));
12
- var MIGRATIONS = [
13
- `CREATE EXTENSION IF NOT EXISTS "uuid-ossp";`,
14
- `CREATE EXTENSION IF NOT EXISTS "vector";`,
15
- `CREATE EXTENSION IF NOT EXISTS "pg_trgm";`,
16
- // Tenants
17
- `CREATE TABLE IF NOT EXISTS tenants (
2
+ /**
3
+ * steno-mcp init — interactive setup wizard
4
+ *
5
+ * 1. Asks for Supabase + OpenAI keys
6
+ * 2. Runs all migrations automatically
7
+ * 3. Writes Claude Desktop config
8
+ * 4. Tests the connection
9
+ */
10
+ import { createClient } from '@supabase/supabase-js';
11
+ import * as fs from 'fs';
12
+ import * as path from 'path';
13
+ import * as os from 'os';
14
+ import * as readline from 'readline';
15
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
16
+ const ask = (q) => new Promise(r => rl.question(q, r));
17
+ // All migrations in order
18
+ const MIGRATIONS = [
19
+ `CREATE EXTENSION IF NOT EXISTS "uuid-ossp";`,
20
+ `CREATE EXTENSION IF NOT EXISTS "vector";`,
21
+ `CREATE EXTENSION IF NOT EXISTS "pg_trgm";`,
22
+ // Tenants
23
+ `CREATE TABLE IF NOT EXISTS tenants (
18
24
  id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
19
25
  name TEXT NOT NULL,
20
26
  slug TEXT NOT NULL UNIQUE,
@@ -28,8 +34,8 @@ var MIGRATIONS = [
28
34
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
29
35
  updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
30
36
  );`,
31
- // API Keys
32
- `CREATE TABLE IF NOT EXISTS api_keys (
37
+ // API Keys
38
+ `CREATE TABLE IF NOT EXISTS api_keys (
33
39
  id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
34
40
  tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
35
41
  key_hash TEXT NOT NULL,
@@ -41,8 +47,8 @@ var MIGRATIONS = [
41
47
  active BOOLEAN NOT NULL DEFAULT true,
42
48
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
43
49
  );`,
44
- // Sessions
45
- `CREATE TABLE IF NOT EXISTS sessions (
50
+ // Sessions
51
+ `CREATE TABLE IF NOT EXISTS sessions (
46
52
  id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
47
53
  tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
48
54
  scope TEXT NOT NULL,
@@ -56,8 +62,8 @@ var MIGRATIONS = [
56
62
  metadata JSONB NOT NULL DEFAULT '{}',
57
63
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
58
64
  );`,
59
- // Extractions
60
- `CREATE TABLE IF NOT EXISTS extractions (
65
+ // Extractions
66
+ `CREATE TABLE IF NOT EXISTS extractions (
61
67
  id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
62
68
  tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
63
69
  status TEXT NOT NULL DEFAULT 'queued',
@@ -84,8 +90,8 @@ var MIGRATIONS = [
84
90
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
85
91
  completed_at TIMESTAMPTZ
86
92
  );`,
87
- // Facts
88
- `CREATE TABLE IF NOT EXISTS facts (
93
+ // Facts
94
+ `CREATE TABLE IF NOT EXISTS facts (
89
95
  id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
90
96
  tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
91
97
  scope TEXT NOT NULL CHECK (scope IN ('user','agent','session','hive')),
@@ -122,15 +128,15 @@ var MIGRATIONS = [
122
128
  source_chunk TEXT,
123
129
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
124
130
  );`,
125
- // Fact indexes
126
- `CREATE INDEX IF NOT EXISTS idx_facts_tenant_scope ON facts(tenant_id, scope, scope_id);
131
+ // Fact indexes
132
+ `CREATE INDEX IF NOT EXISTS idx_facts_tenant_scope ON facts(tenant_id, scope, scope_id);
127
133
  CREATE INDEX IF NOT EXISTS idx_facts_lineage ON facts(tenant_id, lineage_id);
128
134
  CREATE INDEX IF NOT EXISTS idx_facts_search_vector ON facts USING GIN(search_vector);
129
135
  CREATE INDEX IF NOT EXISTS idx_facts_event_date ON facts(event_date) WHERE event_date IS NOT NULL;`,
130
- // HNSW vector index
131
- `CREATE INDEX IF NOT EXISTS idx_facts_embedding_hnsw ON facts USING hnsw (embedding vector_cosine_ops) WITH (m = 16, ef_construction = 64);`,
132
- // Entities
133
- `CREATE TABLE IF NOT EXISTS entities (
136
+ // HNSW vector index
137
+ `CREATE INDEX IF NOT EXISTS idx_facts_embedding_hnsw ON facts USING hnsw (embedding vector_cosine_ops) WITH (m = 16, ef_construction = 64);`,
138
+ // Entities
139
+ `CREATE TABLE IF NOT EXISTS entities (
134
140
  id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
135
141
  tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
136
142
  name TEXT NOT NULL,
@@ -145,16 +151,16 @@ var MIGRATIONS = [
145
151
  updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
146
152
  );
147
153
  CREATE UNIQUE INDEX IF NOT EXISTS idx_entities_canonical ON entities(tenant_id, canonical_name, entity_type);`,
148
- // Fact-Entity junction
149
- `CREATE TABLE IF NOT EXISTS fact_entities (
154
+ // Fact-Entity junction
155
+ `CREATE TABLE IF NOT EXISTS fact_entities (
150
156
  fact_id UUID NOT NULL REFERENCES facts(id) ON DELETE CASCADE,
151
157
  entity_id UUID NOT NULL REFERENCES entities(id) ON DELETE CASCADE,
152
158
  role TEXT NOT NULL DEFAULT 'mentioned',
153
159
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
154
160
  PRIMARY KEY (fact_id, entity_id)
155
161
  );`,
156
- // Edges
157
- `CREATE TABLE IF NOT EXISTS edges (
162
+ // Edges
163
+ `CREATE TABLE IF NOT EXISTS edges (
158
164
  id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
159
165
  tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
160
166
  source_id UUID NOT NULL REFERENCES entities(id),
@@ -171,8 +177,8 @@ var MIGRATIONS = [
171
177
  );
172
178
  CREATE INDEX IF NOT EXISTS idx_edges_source ON edges(tenant_id, source_id);
173
179
  CREATE INDEX IF NOT EXISTS idx_edges_target ON edges(tenant_id, target_id);`,
174
- // Triggers
175
- `CREATE TABLE IF NOT EXISTS triggers (
180
+ // Triggers
181
+ `CREATE TABLE IF NOT EXISTS triggers (
176
182
  id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
177
183
  tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
178
184
  scope TEXT NOT NULL,
@@ -187,8 +193,8 @@ var MIGRATIONS = [
187
193
  last_fired_at TIMESTAMPTZ,
188
194
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
189
195
  );`,
190
- // Memory accesses
191
- `CREATE TABLE IF NOT EXISTS memory_accesses (
196
+ // Memory accesses
197
+ `CREATE TABLE IF NOT EXISTS memory_accesses (
192
198
  id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
193
199
  tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
194
200
  fact_id UUID NOT NULL REFERENCES facts(id),
@@ -203,8 +209,8 @@ var MIGRATIONS = [
203
209
  trigger_id UUID,
204
210
  accessed_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
205
211
  );`,
206
- // Usage records
207
- `CREATE TABLE IF NOT EXISTS usage_records (
212
+ // Usage records
213
+ `CREATE TABLE IF NOT EXISTS usage_records (
208
214
  id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
209
215
  tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
210
216
  period_start TIMESTAMPTZ NOT NULL,
@@ -216,8 +222,8 @@ var MIGRATIONS = [
216
222
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
217
223
  updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
218
224
  );`,
219
- // Webhooks
220
- `CREATE TABLE IF NOT EXISTS webhooks (
225
+ // Webhooks
226
+ `CREATE TABLE IF NOT EXISTS webhooks (
221
227
  id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
222
228
  tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
223
229
  url TEXT NOT NULL,
@@ -227,8 +233,8 @@ var MIGRATIONS = [
227
233
  active BOOLEAN NOT NULL DEFAULT true,
228
234
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
229
235
  );`,
230
- // Compound search RPC
231
- `CREATE OR REPLACE FUNCTION steno_search(
236
+ // Compound search RPC
237
+ `CREATE OR REPLACE FUNCTION steno_search(
232
238
  query_embedding TEXT, search_query TEXT, match_tenant_id UUID,
233
239
  match_scope TEXT, match_scope_id TEXT, match_count INT DEFAULT 20, min_similarity FLOAT DEFAULT 0.0
234
240
  ) RETURNS TABLE (
@@ -270,79 +276,89 @@ var MIGRATIONS = [
270
276
  AND f.search_vector @@ plainto_tsquery('english', search_query)
271
277
  ORDER BY ts_rank(f.search_vector, plainto_tsquery('english', search_query)) DESC LIMIT match_count);
272
278
  END; $$;`,
273
- // Default tenant
274
- `INSERT INTO tenants (id, name, slug, plan) VALUES ('00000000-0000-0000-0000-000000000001', 'Default', 'default', 'enterprise') ON CONFLICT DO NOTHING;`
279
+ // Default tenant
280
+ `INSERT INTO tenants (id, name, slug, plan) VALUES ('00000000-0000-0000-0000-000000000001', 'Default', 'default', 'enterprise') ON CONFLICT DO NOTHING;`,
275
281
  ];
276
282
  async function main() {
277
- console.log("\n \u{1F9E0} Steno Memory \u2014 Setup Wizard\n");
278
- const supabaseUrl = await ask(" Supabase URL: ");
279
- const supabaseKey = await ask(" Supabase Service Role Key: ");
280
- const openaiKey = await ask(" OpenAI API Key: ");
281
- const perplexityKey = await ask(" Perplexity API Key (optional, press Enter to skip): ");
282
- if (!supabaseUrl || !supabaseKey || !openaiKey) {
283
- console.error("\n \u274C Supabase URL, Service Role Key, and OpenAI Key are required.\n");
284
- process.exit(1);
285
- }
286
- console.log("\n Running database migrations...");
287
- const supabase = createClient(supabaseUrl, supabaseKey);
288
- let success = 0;
289
- let skipped = 0;
290
- for (let i = 0; i < MIGRATIONS.length; i++) {
291
- try {
292
- const { error } = await supabase.rpc("exec_sql", { query: MIGRATIONS[i] }).catch(() => ({ error: { message: "rpc not available" } }));
293
- if (error) {
294
- const res = await fetch(`${supabaseUrl}/rest/v1/rpc/exec_sql`, {
295
- method: "POST",
296
- headers: { "apikey": supabaseKey, "Authorization": `Bearer ${supabaseKey}`, "Content-Type": "application/json" },
297
- body: JSON.stringify({ query: MIGRATIONS[i] })
298
- });
299
- if (res.ok) {
300
- success++;
301
- } else {
302
- skipped++;
283
+ console.log('\n 🧠 Steno Memory Setup Wizard\n');
284
+ // 1. Get keys
285
+ const supabaseUrl = await ask(' Supabase URL: ');
286
+ const supabaseKey = await ask(' Supabase Service Role Key: ');
287
+ const openaiKey = await ask(' OpenAI API Key: ');
288
+ const perplexityKey = await ask(' Perplexity API Key (optional, press Enter to skip): ');
289
+ if (!supabaseUrl || !supabaseKey || !openaiKey) {
290
+ console.error('\n ❌ Supabase URL, Service Role Key, and OpenAI Key are required.\n');
291
+ process.exit(1);
292
+ }
293
+ // 2. Run migrations
294
+ console.log('\n Running database migrations...');
295
+ const supabase = createClient(supabaseUrl, supabaseKey);
296
+ let success = 0;
297
+ let skipped = 0;
298
+ for (let i = 0; i < MIGRATIONS.length; i++) {
299
+ try {
300
+ const { error } = await supabase.rpc('exec_sql', { query: MIGRATIONS[i] }).catch(() => ({ error: { message: 'rpc not available' } }));
301
+ if (error) {
302
+ // Try direct REST approach
303
+ const res = await fetch(`${supabaseUrl}/rest/v1/rpc/exec_sql`, {
304
+ method: 'POST',
305
+ headers: { 'apikey': supabaseKey, 'Authorization': `Bearer ${supabaseKey}`, 'Content-Type': 'application/json' },
306
+ body: JSON.stringify({ query: MIGRATIONS[i] }),
307
+ });
308
+ if (res.ok) {
309
+ success++;
310
+ }
311
+ else {
312
+ skipped++;
313
+ }
314
+ }
315
+ else {
316
+ success++;
317
+ }
318
+ }
319
+ catch {
320
+ skipped++;
303
321
  }
304
- } else {
305
- success++;
306
- }
307
- } catch {
308
- skipped++;
309
322
  }
310
- }
311
- console.log(` \u2713 ${success} migrations applied, ${skipped} skipped (may already exist)`);
312
- const configDir = path.join(os.homedir(), "Library", "Application Support", "Claude");
313
- const configPath = path.join(configDir, "claude_desktop_config.json");
314
- let config = {};
315
- try {
316
- config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
317
- } catch {
318
- }
319
- if (!config.mcpServers) config.mcpServers = {};
320
- config.mcpServers["steno-memory"] = {
321
- command: "npx",
322
- args: ["-y", "@steno-ai/mcp"],
323
- env: {
324
- SUPABASE_URL: supabaseUrl,
325
- SUPABASE_SERVICE_ROLE_KEY: supabaseKey,
326
- OPENAI_API_KEY: openaiKey,
327
- ...perplexityKey ? { PERPLEXITY_API_KEY: perplexityKey } : {}
323
+ console.log(` ✓ ${success} migrations applied, ${skipped} skipped (may already exist)`);
324
+ // 3. Write Claude Desktop config
325
+ const configDir = path.join(os.homedir(), 'Library', 'Application Support', 'Claude');
326
+ const configPath = path.join(configDir, 'claude_desktop_config.json');
327
+ let config = {};
328
+ try {
329
+ config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
328
330
  }
329
- };
330
- fs.mkdirSync(configDir, { recursive: true });
331
- fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
332
- console.log(` \u2713 Claude Desktop config written to ${configPath}`);
333
- console.log(`
334
- \u2705 Setup complete!
331
+ catch { /* new config */ }
332
+ if (!config.mcpServers)
333
+ config.mcpServers = {};
334
+ config.mcpServers['steno-memory'] = {
335
+ command: 'npx',
336
+ args: ['-y', '@steno-ai/mcp'],
337
+ env: {
338
+ SUPABASE_URL: supabaseUrl,
339
+ SUPABASE_SERVICE_ROLE_KEY: supabaseKey,
340
+ OPENAI_API_KEY: openaiKey,
341
+ ...(perplexityKey ? { PERPLEXITY_API_KEY: perplexityKey } : {}),
342
+ },
343
+ };
344
+ fs.mkdirSync(configDir, { recursive: true });
345
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
346
+ console.log(` ✓ Claude Desktop config written to ${configPath}`);
347
+ // 4. Done
348
+ console.log(`
349
+ ✅ Setup complete!
335
350
 
336
351
  Next steps:
337
352
  1. Restart Claude Desktop (Cmd+Q, reopen)
338
353
  2. Go to Settings > General > set "Tools already loaded"
339
- 3. Start chatting \u2014 Claude will remember everything
354
+ 3. Start chatting Claude will remember everything
340
355
 
341
356
  Your data stays in YOUR Supabase. Nothing is shared.
342
357
  `);
343
- rl.close();
358
+ rl.close();
344
359
  }
345
360
  main().catch((err) => {
346
- console.error("Setup failed:", err.message);
347
- process.exit(1);
361
+ console.error('Setup failed:', err.message);
362
+ process.exit(1);
348
363
  });
364
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steno-ai/mcp",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "MCP server for Claude Code, Claude Desktop, and other MCP clients",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -10,6 +10,7 @@
10
10
  },
11
11
  "type": "module",
12
12
  "bin": {
13
+ "mcp": "./dist/cli.js",
13
14
  "steno-mcp": "./dist/cli.js",
14
15
  "steno-mcp-init": "./dist/init.js"
15
16
  },
@@ -21,7 +22,11 @@
21
22
  }
22
23
  },
23
24
  "types": "./dist/index.d.ts",
24
- "files": ["dist", "src", "README.md"],
25
+ "files": [
26
+ "dist",
27
+ "src",
28
+ "README.md"
29
+ ],
25
30
  "scripts": {
26
31
  "test": "vitest run",
27
32
  "build": "tsc",