@splicr/mcp-server 0.1.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.
Files changed (53) hide show
  1. package/dist/auth.d.ts +18 -0
  2. package/dist/auth.d.ts.map +1 -0
  3. package/dist/auth.js +115 -0
  4. package/dist/auth.js.map +1 -0
  5. package/dist/cli.d.ts +11 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +80 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/config.d.ts +10 -0
  10. package/dist/config.d.ts.map +1 -0
  11. package/dist/config.js +34 -0
  12. package/dist/config.js.map +1 -0
  13. package/dist/index.d.ts +3 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +93 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/lib/auto-register.d.ts +7 -0
  18. package/dist/lib/auto-register.d.ts.map +1 -0
  19. package/dist/lib/auto-register.js +204 -0
  20. package/dist/lib/auto-register.js.map +1 -0
  21. package/dist/lib/project-detector.d.ts +12 -0
  22. package/dist/lib/project-detector.d.ts.map +1 -0
  23. package/dist/lib/project-detector.js +68 -0
  24. package/dist/lib/project-detector.js.map +1 -0
  25. package/dist/lib/supabase.d.ts +14 -0
  26. package/dist/lib/supabase.d.ts.map +1 -0
  27. package/dist/lib/supabase.js +50 -0
  28. package/dist/lib/supabase.js.map +1 -0
  29. package/dist/login-cli.d.ts +3 -0
  30. package/dist/login-cli.d.ts.map +1 -0
  31. package/dist/login-cli.js +7 -0
  32. package/dist/login-cli.js.map +1 -0
  33. package/dist/tools/get-project-context.d.ts +20 -0
  34. package/dist/tools/get-project-context.d.ts.map +1 -0
  35. package/dist/tools/get-project-context.js +59 -0
  36. package/dist/tools/get-project-context.js.map +1 -0
  37. package/dist/tools/get-recent-insights.d.ts +19 -0
  38. package/dist/tools/get-recent-insights.d.ts.map +1 -0
  39. package/dist/tools/get-recent-insights.js +55 -0
  40. package/dist/tools/get-recent-insights.js.map +1 -0
  41. package/dist/tools/retry-failed.d.ts +10 -0
  42. package/dist/tools/retry-failed.d.ts.map +1 -0
  43. package/dist/tools/retry-failed.js +53 -0
  44. package/dist/tools/retry-failed.js.map +1 -0
  45. package/dist/tools/save-from-agent.d.ts +31 -0
  46. package/dist/tools/save-from-agent.d.ts.map +1 -0
  47. package/dist/tools/save-from-agent.js +84 -0
  48. package/dist/tools/save-from-agent.js.map +1 -0
  49. package/dist/tools/search-knowledge.d.ts +24 -0
  50. package/dist/tools/search-knowledge.d.ts.map +1 -0
  51. package/dist/tools/search-knowledge.js +160 -0
  52. package/dist/tools/search-knowledge.js.map +1 -0
  53. package/package.json +29 -0
@@ -0,0 +1,160 @@
1
+ import { getSupabase, geminiApiKey } from '../lib/supabase.js';
2
+ import { detectProject } from '../lib/project-detector.js';
3
+ export const searchKnowledgeSchema = {
4
+ name: 'search_knowledge',
5
+ description: `Search the user's personal knowledge base powered by Splicr. The user saves articles, tweets, code snippets, and insights from across the web — use this tool to find relevant context when answering their questions.
6
+
7
+ IMPORTANT: You MUST call this tool BEFORE answering whenever:
8
+ - The user asks about a technology, tool, pattern, concept, or opinion ("what do you think about X", "how does X work", "should I use X")
9
+ - The user is making a technical decision or comparing approaches
10
+ - The user references something they read, saved, or shared before
11
+ - The topic could plausibly have saved context (articles, threads, bookmarks)
12
+
13
+ Always search Splicr first, then supplement with your own knowledge. The user's saved context should ground your answer — do not skip this tool and rely solely on your training data.
14
+
15
+ The search is semantic — describe what you're looking for in natural language.`,
16
+ inputSchema: {
17
+ type: 'object',
18
+ properties: {
19
+ query: { type: 'string', description: 'Natural language search query — describe what context would be helpful' },
20
+ project: { type: 'string', description: 'Scope to a specific project name, or "auto" to detect from cwd. Omit to search all projects.' },
21
+ limit: { type: 'number', description: 'Max results (default: 5)' },
22
+ },
23
+ required: ['query'],
24
+ },
25
+ };
26
+ async function generateEmbedding(text) {
27
+ if (!geminiApiKey) {
28
+ throw new Error('GEMINI_API_KEY is not configured. Set it in ~/.splicr/config.json or environment.');
29
+ }
30
+ for (let attempt = 0; attempt < 2; attempt++) {
31
+ try {
32
+ const url = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:embedContent';
33
+ const response = await fetch(url, {
34
+ method: 'POST',
35
+ headers: {
36
+ 'Content-Type': 'application/json',
37
+ 'x-goog-api-key': geminiApiKey,
38
+ },
39
+ signal: AbortSignal.timeout(10000),
40
+ body: JSON.stringify({
41
+ model: 'models/gemini-embedding-001',
42
+ content: { parts: [{ text }] },
43
+ outputDimensionality: 768,
44
+ }),
45
+ });
46
+ if (!response.ok) {
47
+ const errText = await response.text();
48
+ if (attempt === 0 && (response.status === 429 || response.status >= 500)) {
49
+ await new Promise(r => setTimeout(r, 1000));
50
+ continue;
51
+ }
52
+ throw new Error(`Gemini embedding failed (${response.status}): ${errText}`);
53
+ }
54
+ const result = await response.json();
55
+ return result.embedding.values;
56
+ }
57
+ catch (err) {
58
+ if (attempt === 0) {
59
+ await new Promise(r => setTimeout(r, 1000));
60
+ continue;
61
+ }
62
+ throw err;
63
+ }
64
+ }
65
+ throw new Error('Gemini embedding failed after retries');
66
+ }
67
+ function formatAge(dateStr) {
68
+ const date = new Date(dateStr);
69
+ if (isNaN(date.getTime()))
70
+ return 'unknown';
71
+ const days = Math.floor((Date.now() - date.getTime()) / 86400000);
72
+ if (days < 0)
73
+ return 'just now';
74
+ if (days === 0)
75
+ return 'today';
76
+ if (days === 1)
77
+ return 'yesterday';
78
+ if (days < 7)
79
+ return `${days}d ago`;
80
+ if (days < 30)
81
+ return `${Math.floor(days / 7)}w ago`;
82
+ if (days < 365)
83
+ return `${Math.floor(days / 30)}mo ago`;
84
+ return `${Math.floor(days / 365)}y ago`;
85
+ }
86
+ export async function handleSearchKnowledge(args) {
87
+ const { supabase, userId } = await getSupabase();
88
+ const query = String(args.query || '').trim();
89
+ if (!query)
90
+ return 'Please provide a search query.';
91
+ if (query.length > 1000)
92
+ return 'Query too long (max 1000 chars).';
93
+ const limit = Math.min(Math.max(1, Number(args.limit) || 5), 50);
94
+ const projectArg = args.project;
95
+ // Resolve project
96
+ let projectId;
97
+ if (projectArg === 'auto') {
98
+ const detected = await detectProject(process.cwd());
99
+ projectId = detected?.id;
100
+ }
101
+ else if (projectArg) {
102
+ const { data, error: lookupError } = await supabase
103
+ .from('projects')
104
+ .select('id')
105
+ .eq('user_id', userId)
106
+ .ilike('name', projectArg)
107
+ .limit(1);
108
+ if (lookupError) {
109
+ return `Error looking up project: ${lookupError.message}`;
110
+ }
111
+ projectId = data?.[0]?.id;
112
+ if (!projectId) {
113
+ return `Project "${projectArg}" not found. Check the name and try again.`;
114
+ }
115
+ }
116
+ // Generate embedding for query
117
+ const queryEmbedding = await generateEmbedding(query);
118
+ // Hybrid search: vector + full-text + RRF + boost signals
119
+ const { data, error } = await supabase.rpc('hybrid_search_captures', {
120
+ query_text: query,
121
+ query_embedding: queryEmbedding,
122
+ match_user_id: userId,
123
+ match_project_id: projectId || null,
124
+ match_limit: limit,
125
+ match_threshold: 0.2,
126
+ });
127
+ if (error) {
128
+ // Fallback to legacy vector-only search if hybrid isn't available yet
129
+ const { data: fallbackData, error: fallbackError } = await supabase.rpc('search_captures', {
130
+ query_embedding: queryEmbedding,
131
+ match_user_id: userId,
132
+ match_project_id: projectId || null,
133
+ match_limit: limit,
134
+ match_threshold: 0.3,
135
+ });
136
+ if (fallbackError)
137
+ return `Error searching: ${fallbackError.message}`;
138
+ if (!fallbackData || fallbackData.length === 0)
139
+ return 'No relevant knowledge found in Splicr.';
140
+ const results = fallbackData.map((r, i) => {
141
+ const age = formatAge(r.created_at);
142
+ const score = r.similarity ? `${(r.similarity * 100).toFixed(0)}%` : 'n/a';
143
+ return `${i + 1}. **${r.title || 'Untitled'}**\n` +
144
+ ` ${r.insight}\n` +
145
+ ` source: ${r.source_type || 'unknown'} | saved: ${age} | match: ${score} | tags: ${r.tags?.join(', ') || 'none'}${r.source_url ? `\n url: ${r.source_url}` : ''}`;
146
+ }).join('\n\n');
147
+ return `*From Splicr — ${fallbackData.length} result(s):*\n\n${results}`;
148
+ }
149
+ if (!data || data.length === 0)
150
+ return 'No relevant knowledge found in Splicr.';
151
+ const results = data.map((r, i) => {
152
+ const age = formatAge(r.created_at);
153
+ const score = r.rrf_score ? `${(r.rrf_score * 100).toFixed(0)}%` : 'n/a';
154
+ return `${i + 1}. **${r.title || 'Untitled'}**\n` +
155
+ ` ${r.insight}\n` +
156
+ ` source: ${r.source_type || 'unknown'} | saved: ${age} | match: ${score} | tags: ${r.tags?.join(', ') || 'none'}${r.source_url ? `\n url: ${r.source_url}` : ''}`;
157
+ }).join('\n\n');
158
+ return `*From Splicr — ${data.length} result(s):*\n\n${results}`;
159
+ }
160
+ //# sourceMappingURL=search-knowledge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-knowledge.js","sourceRoot":"","sources":["../../src/tools/search-knowledge.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@splicr/mcp-server",
3
+ "version": "0.1.0",
4
+ "description": "Splicr MCP server — route what you read to what you're building",
5
+ "type": "module",
6
+ "bin": "./dist/cli.js",
7
+ "files": ["dist"],
8
+ "keywords": ["mcp", "splicr", "knowledge-base", "claude-code", "ai-agent"],
9
+ "repository": { "type": "git", "url": "https://github.com/c0ncepT23/Splicr.git", "directory": "packages/mcp-server" },
10
+ "license": "MIT",
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "dev": "tsx watch src/index.ts",
14
+ "start": "node dist/index.js",
15
+ "typecheck": "tsc --noEmit"
16
+ },
17
+ "dependencies": {
18
+ "@google/generative-ai": "^0.24.1",
19
+ "@modelcontextprotocol/sdk": "^1.0.0",
20
+ "@supabase/supabase-js": "^2.45.0",
21
+ "openai": "^4.55.0",
22
+ "zod": "^3.23.0"
23
+ },
24
+ "devDependencies": {
25
+ "@types/node": "^20.14.0",
26
+ "tsx": "^4.16.0",
27
+ "typescript": "^5.5.0"
28
+ }
29
+ }