indra_db_mcp 0.1.1 → 0.1.3
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 +31 -14
- package/package.json +1 -5
- package/src/index.ts +45 -6
package/README.md
CHANGED
|
@@ -25,35 +25,52 @@ It's git for thoughts. Version-controlled thinking. A knowledge graph that grows
|
|
|
25
25
|
- [Bun](https://bun.sh/) runtime (v1.0+)
|
|
26
26
|
- [Rust/Cargo](https://rustup.rs/) (for auto-installing indra_db CLI)
|
|
27
27
|
|
|
28
|
-
###
|
|
28
|
+
### Usage with MCP Clients
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
# Clone and install
|
|
32
|
-
git clone https://github.com/your-username/indra_db_mcp
|
|
33
|
-
cd indra_db_mcp
|
|
34
|
-
bun install
|
|
30
|
+
The simplest way to use this server is via `bunx`:
|
|
35
31
|
|
|
36
|
-
|
|
32
|
+
```json
|
|
33
|
+
{
|
|
34
|
+
"mcpServers": {
|
|
35
|
+
"indra": {
|
|
36
|
+
"command": ["bunx", "-y", "indra_db_mcp"],
|
|
37
|
+
"type": "local"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
37
41
|
```
|
|
38
42
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
Add to your `claude_desktop_config.json`:
|
|
43
|
+
Or with a custom database path:
|
|
42
44
|
|
|
43
45
|
```json
|
|
44
46
|
{
|
|
45
47
|
"mcpServers": {
|
|
46
48
|
"indra": {
|
|
47
|
-
"command": "
|
|
48
|
-
"
|
|
49
|
-
"env": {
|
|
49
|
+
"command": ["bunx", "-y", "indra_db_mcp"],
|
|
50
|
+
"environment": {
|
|
50
51
|
"INDRA_DB_PATH": "~/.indra"
|
|
51
|
-
}
|
|
52
|
+
},
|
|
53
|
+
"type": "local"
|
|
52
54
|
}
|
|
53
55
|
}
|
|
54
56
|
}
|
|
55
57
|
```
|
|
56
58
|
|
|
59
|
+
### Manual Installation
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Install globally
|
|
63
|
+
bun add -g indra_db_mcp
|
|
64
|
+
|
|
65
|
+
# Or clone and run locally
|
|
66
|
+
git clone https://github.com/moonstripe/indra_db_mcp
|
|
67
|
+
cd indra_db_mcp
|
|
68
|
+
bun install
|
|
69
|
+
bun start
|
|
70
|
+
|
|
71
|
+
# The indra CLI will auto-install on first run via cargo
|
|
72
|
+
```
|
|
73
|
+
|
|
57
74
|
### Environment Variables
|
|
58
75
|
|
|
59
76
|
| Variable | Description | Default |
|
package/package.json
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "indra_db_mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "MCP server for indra_db - a content-addressed graph database for versioned thoughts",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"main": "src/index.ts",
|
|
7
6
|
"bin": {
|
|
8
7
|
"indra-mcp": "./src/index.ts"
|
|
9
8
|
},
|
|
@@ -42,9 +41,6 @@
|
|
|
42
41
|
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
43
42
|
"zod": "^4.3.6"
|
|
44
43
|
},
|
|
45
|
-
"engines": {
|
|
46
|
-
"bun": ">=1.0.0"
|
|
47
|
-
},
|
|
48
44
|
"files": [
|
|
49
45
|
"src",
|
|
50
46
|
"README.md"
|
package/src/index.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
1
2
|
/**
|
|
2
3
|
* indra_db MCP Server
|
|
3
4
|
*
|
|
@@ -84,7 +85,15 @@ The thought will be embedded for semantic search, allowing you to find it later
|
|
|
84
85
|
by meaning rather than exact words. Each thought becomes a node that can be
|
|
85
86
|
connected to others, forming a web of understanding.
|
|
86
87
|
|
|
87
|
-
This is how you think out loud - make your reasoning visible and traceable
|
|
88
|
+
This is how you think out loud - make your reasoning visible and traceable.
|
|
89
|
+
|
|
90
|
+
PROACTIVE TRIGGERS - Use this tool when you notice yourself:
|
|
91
|
+
- Making a key observation or having an "aha" moment
|
|
92
|
+
- Identifying an important pattern or insight
|
|
93
|
+
- Drawing a conclusion from analysis
|
|
94
|
+
- Forming a hypothesis or assumption
|
|
95
|
+
- Noting something surprising or unexpected
|
|
96
|
+
- Making a decision with rationale worth preserving`,
|
|
88
97
|
{
|
|
89
98
|
content: z.string().describe("The thought to capture - be specific and self-contained"),
|
|
90
99
|
id: z.string().optional().describe("Optional memorable identifier (e.g., 'key-insight-about-X'). Auto-generated if not provided."),
|
|
@@ -187,7 +196,12 @@ Use this to:
|
|
|
187
196
|
- Review the current state of understanding
|
|
188
197
|
- Plan what connections to make
|
|
189
198
|
|
|
190
|
-
Returns all thoughts with their IDs and content
|
|
199
|
+
Returns all thoughts with their IDs and content.
|
|
200
|
+
|
|
201
|
+
PROACTIVE TRIGGERS - Use this when:
|
|
202
|
+
- Starting a new session (see what context already exists)
|
|
203
|
+
- Feeling lost about what's been captured so far
|
|
204
|
+
- Looking for orphan thoughts that need connections`,
|
|
191
205
|
{},
|
|
192
206
|
async () => {
|
|
193
207
|
try {
|
|
@@ -219,7 +233,13 @@ Relationship types (use what fits, or create your own):
|
|
|
219
233
|
- "similar_to" → These thoughts express related ideas
|
|
220
234
|
- "relates_to" → General connection (when type is unclear)
|
|
221
235
|
|
|
222
|
-
The web of connections IS your understanding made visible
|
|
236
|
+
The web of connections IS your understanding made visible.
|
|
237
|
+
|
|
238
|
+
PROACTIVE TRIGGERS - Use this after creating a thought when you notice:
|
|
239
|
+
- The new thought builds on or extends a previous one (derives_from)
|
|
240
|
+
- The new thought provides evidence for a prior claim (supports)
|
|
241
|
+
- The new thought contradicts something you noted earlier (contradicts)
|
|
242
|
+
- Multiple thoughts form a logical sequence (precedes, causes)`,
|
|
223
243
|
{
|
|
224
244
|
from: z.string().describe("Source thought ID - the starting point of the relationship"),
|
|
225
245
|
to: z.string().describe("Target thought ID - what the source connects to"),
|
|
@@ -315,7 +335,14 @@ Use this to:
|
|
|
315
335
|
- Check if you've already captured something similar
|
|
316
336
|
- Surface related ideas you may have forgotten
|
|
317
337
|
|
|
318
|
-
Higher scores = more semantically similar
|
|
338
|
+
Higher scores = more semantically similar.
|
|
339
|
+
|
|
340
|
+
PROACTIVE TRIGGERS - Use this tool when you:
|
|
341
|
+
- Start working on a new task (search for related prior work)
|
|
342
|
+
- Need context on a topic you've explored before
|
|
343
|
+
- Want to avoid duplicating previous insights
|
|
344
|
+
- Are about to make a decision (check if you've reasoned about this)
|
|
345
|
+
- Feel like "I think I've thought about this before"`,
|
|
319
346
|
{
|
|
320
347
|
query: z.string().describe("What you're looking for - describe the meaning/concept"),
|
|
321
348
|
limit: z.number().min(1).max(100).default(10).describe("Maximum results to return"),
|
|
@@ -345,7 +372,13 @@ Good checkpoint messages describe WHY, not just what:
|
|
|
345
372
|
- "Refined hypothesis after finding contradicting evidence"
|
|
346
373
|
- "Branching to explore alternative approach"
|
|
347
374
|
|
|
348
|
-
Checkpoints let you see how understanding evolved over time
|
|
375
|
+
Checkpoints let you see how understanding evolved over time.
|
|
376
|
+
|
|
377
|
+
PROACTIVE TRIGGERS - Use this when:
|
|
378
|
+
- Completing a logical unit of thinking or analysis
|
|
379
|
+
- Finishing exploration of one approach before trying another
|
|
380
|
+
- Reaching a conclusion or decision point
|
|
381
|
+
- Before major changes to your mental model`,
|
|
349
382
|
{
|
|
350
383
|
message: z.string().describe("What this checkpoint represents - focus on the WHY"),
|
|
351
384
|
},
|
|
@@ -397,7 +430,13 @@ Use this when:
|
|
|
397
430
|
- Trying an alternative approach
|
|
398
431
|
- Saving current state before major changes
|
|
399
432
|
|
|
400
|
-
You can always come back to main, or merge insights later
|
|
433
|
+
You can always come back to main, or merge insights later.
|
|
434
|
+
|
|
435
|
+
PROACTIVE TRIGGERS - Use this when you notice yourself thinking:
|
|
436
|
+
- "What if we tried it a different way?"
|
|
437
|
+
- "Let me explore this alternative before committing"
|
|
438
|
+
- "I'm not sure this will work, but let's see"
|
|
439
|
+
- "There are two valid approaches here"`,
|
|
401
440
|
{
|
|
402
441
|
name: z.string().describe("Name for the new branch (e.g., 'explore-alternative', 'hypothesis-b')"),
|
|
403
442
|
},
|