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.
Files changed (3) hide show
  1. package/README.md +31 -14
  2. package/package.json +1 -5
  3. 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
- ### Installation
28
+ ### Usage with MCP Clients
29
29
 
30
- ```bash
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
- # The indra CLI will auto-install on first run via cargo
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
- ### Configure with Claude Desktop
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": "bun",
48
- "args": ["run", "/path/to/indra_db_mcp/src/index.ts"],
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.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
  },