mcp-local-rag 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 CHANGED
@@ -40,8 +40,8 @@ claude mcp add local-rag --scope user --env BASE_DIR=/path/to/your/documents --
40
40
 
41
41
  Restart your tool, then start using:
42
42
  ```
43
- "@mcp Ingest api-spec.pdf"
44
- "@mcp What does this document say about authentication?"
43
+ "Ingest api-spec.pdf"
44
+ "What does this document say about authentication?"
45
45
  ```
46
46
 
47
47
  That's it. No installation, no Docker, no complex setup.
@@ -80,23 +80,24 @@ All of this uses:
80
80
 
81
81
  The result: query responses typically under 3 seconds on a standard laptop, even with thousands of document chunks indexed.
82
82
 
83
- ## Prerequisites
83
+ ## First Run
84
84
 
85
- You need Node.js 20 or higher. Check your version:
85
+ On first launch, the embedding model downloads automatically from HuggingFace:
86
+ - **Download size**: ~90MB (model files)
87
+ - **Disk usage after caching**: ~120MB (includes ONNX runtime cache)
88
+ - **Time**: 1-2 minutes on a decent connection
86
89
 
87
- ```bash
88
- node --version
89
- ```
90
+ You'll see progress in the console. The model caches in `CACHE_DIR` (default: `./models/`) for offline use.
90
91
 
91
- If you need to install or update Node.js, visit [nodejs.org](https://nodejs.org/).
92
+ **Offline Mode**: After first run, works completely offline—no internet required.
92
93
 
93
- That's all. When you configure the MCP server with `npx -y mcp-local-rag`, it automatically downloads and runs the package. No manual installation needed.
94
+ ## Security
94
95
 
95
- ### First Run
96
+ **Path Restriction**: This server only accesses files within your `BASE_DIR`. Any attempt to access files outside this directory (e.g., via `../` path traversal) will be rejected.
96
97
 
97
- On first launch, the embedding model downloads automatically from HuggingFace (about 90MB). This happens once—after that, it runs from your local cache.
98
+ **Local Only**: All processing happens on your machine. No network requests are made after the initial model download.
98
99
 
99
- The download takes 1-2 minutes on a decent connection. You'll see progress in the console.
100
+ **Model Verification**: The embedding model downloads from HuggingFace's official repository (`Xenova/all-MiniLM-L6-v2`). Verify integrity by checking the [official model card](https://huggingface.co/Xenova/all-MiniLM-L6-v2).
100
101
 
101
102
  ## Configuration
102
103
 
@@ -168,30 +169,31 @@ claude mcp add local-rag --scope user \
168
169
 
169
170
  ### Environment Variables
170
171
 
171
- **BASE_DIR** - Where your documents live. The server only accesses files in this directory (and subdirectories), preventing accidental access to system files. Defaults to your current working directory.
172
-
173
- **DB_PATH** - Where to store the vector database. Defaults to `./lancedb/` in your working directory. This directory can grow large if you index many documents.
174
-
175
- **CACHE_DIR** - Where Transformers.js caches the embedding model. Defaults to `./models/`. After the first download, the model stays here for offline use.
176
-
177
- **MODEL_NAME** - Which embedding model to use. Defaults to `Xenova/all-MiniLM-L6-v2`. Advanced users can try other models from HuggingFace, but they must be compatible with Transformers.js.
178
-
179
- **MAX_FILE_SIZE** - Maximum file size in bytes. Defaults to 104857600 (100MB). Larger files are rejected to prevent memory issues.
180
-
181
- **CHUNK_SIZE** - How many characters per chunk. Defaults to 512. Larger chunks give more context but slower processing.
182
-
183
- **CHUNK_OVERLAP** - How many characters overlap between chunks. Defaults to 100. This helps preserve context across chunk boundaries.
172
+ | Variable | Default | Description | Valid Range |
173
+ |----------|---------|-------------|-------------|
174
+ | `BASE_DIR` | Current directory | Document root directory. Server only accesses files within this path (prevents accidental system file access). | Any valid path |
175
+ | `DB_PATH` | `./lancedb/` | Vector database storage location. Can grow large with many documents. | Any valid path |
176
+ | `CACHE_DIR` | `./models/` | Model cache directory. After first download, model stays here for offline use. | Any valid path |
177
+ | `MODEL_NAME` | `Xenova/all-MiniLM-L6-v2` | HuggingFace model identifier. Must be Transformers.js compatible. See [available models](https://huggingface.co/models?library=transformers.js&pipeline_tag=feature-extraction&sort=trending). **Note:** Changing models requires re-ingesting all documents as embeddings from different models are incompatible. | HF model ID |
178
+ | `MAX_FILE_SIZE` | `104857600` (100MB) | Maximum file size in bytes. Larger files rejected to prevent memory issues. | 1MB - 500MB |
179
+ | `CHUNK_SIZE` | `512` | Characters per chunk. Larger = more context but slower processing. | 128 - 2048 |
180
+ | `CHUNK_OVERLAP` | `100` | Overlap between chunks. Preserves context across boundaries. | 0 - (CHUNK_SIZE/2) |
184
181
 
185
182
  ## Usage
186
183
 
187
- Once configured, restart your MCP client. The server appears as available tools that your AI assistant can use.
184
+ **After configuration**, restart your MCP client:
185
+ - **Cursor**: Fully quit and relaunch (Cmd+Q on Mac, not just closing windows)
186
+ - **Codex**: Restart the IDE/extension
187
+ - **Claude Code**: No restart needed—changes apply immediately
188
+
189
+ The server will appear as available tools that your AI assistant can use.
188
190
 
189
191
  ### Ingesting Documents
190
192
 
191
- **In Cursor**, use the MCP prefix to invoke tools:
193
+ **In Cursor**, the Composer Agent automatically uses MCP tools when needed:
192
194
 
193
195
  ```
194
- "@mcp Ingest the document at /Users/me/docs/api-spec.pdf"
196
+ "Ingest the document at /Users/me/docs/api-spec.pdf"
195
197
  ```
196
198
 
197
199
  **In Codex CLI**, the assistant automatically uses configured MCP tools when needed:
@@ -206,11 +208,7 @@ codex "Ingest the document at /Users/me/docs/api-spec.pdf into the RAG system"
206
208
  "Ingest the document at /Users/me/docs/api-spec.pdf"
207
209
  ```
208
210
 
209
- The tool uses relative paths from your BASE_DIR. So if BASE_DIR is `/Users/me/docs`, you can just say:
210
-
211
- ```
212
- "@mcp Ingest api-spec.pdf"
213
- ```
211
+ **Path Requirements**: The server requires **absolute paths** to files. Your AI assistant will typically convert natural language requests into absolute paths automatically. The `BASE_DIR` setting restricts access to only files within that directory tree for security, but you must still provide the full path.
214
212
 
215
213
  The server:
216
214
  1. Validates the file exists and is under 100MB
@@ -226,9 +224,9 @@ This takes roughly 5-10 seconds per MB on a standard laptop. You'll see a confir
226
224
  Ask questions in natural language:
227
225
 
228
226
  ```
229
- "@mcp What does the API documentation say about authentication?"
230
- "@mcp Find information about rate limiting"
231
- "@mcp Search for error handling best practices"
227
+ "What does the API documentation say about authentication?"
228
+ "Find information about rate limiting"
229
+ "Search for error handling best practices"
232
230
  ```
233
231
 
234
232
  The server:
@@ -241,7 +239,7 @@ Results include the text content, which file it came from, and a relevance score
241
239
  You can request more results:
242
240
 
243
241
  ```
244
- "@mcp Search for database optimization tips, return 10 results"
242
+ "Search for database optimization tips, return 10 results"
245
243
  ```
246
244
 
247
245
  The limit parameter accepts 1-20 results.
@@ -251,7 +249,7 @@ The limit parameter accepts 1-20 results.
251
249
  See what's indexed:
252
250
 
253
251
  ```
254
- "@mcp List all ingested files"
252
+ "List all ingested files"
255
253
  ```
256
254
 
257
255
  This shows each file's path, how many chunks it produced, and when it was ingested.
@@ -259,7 +257,7 @@ This shows each file's path, how many chunks it produced, and when it was ingest
259
257
  Check system status:
260
258
 
261
259
  ```
262
- "@mcp Show the RAG server status"
260
+ "Show the RAG server status"
263
261
  ```
264
262
 
265
263
  This reports total documents, total chunks, current memory usage, and uptime.
@@ -269,7 +267,7 @@ This reports total documents, total chunks, current memory usage, and uptime.
269
267
  If you update a document, ingest it again:
270
268
 
271
269
  ```
272
- "@mcp Re-ingest api-spec.pdf with the latest changes"
270
+ "Re-ingest api-spec.pdf with the latest changes"
273
271
  ```
274
272
 
275
273
  The server automatically deletes old chunks for that file before adding new ones. No duplicates, no stale data.
@@ -341,24 +339,41 @@ Each module has clear boundaries:
341
339
 
342
340
  ## Performance
343
341
 
344
- Measured on a MacBook Pro M1 (16GB RAM):
342
+ **Test Environment**: MacBook Pro M1 (16GB RAM), tested with v0.1.3 on Node.js 22 (January 2025)
345
343
 
346
- **Query response time:** Average 1.2 seconds for 10,000 indexed chunks (5 results). Well under the 3-second target for p90.
344
+ **Query Performance**:
345
+ - Average: 1.2 seconds for 10,000 indexed chunks (5 results)
346
+ - Target: p90 < 3 seconds ✓
347
347
 
348
- **Ingestion speed:** 10MB PDF processes in about 45 seconds. Breakdown:
349
- - PDF parsing: ~8 seconds
350
- - Text chunking: ~2 seconds
351
- - Embedding generation: ~30 seconds
352
- - Database insertion: ~5 seconds
348
+ **Ingestion Speed** (10MB PDF):
349
+ - Total: ~45 seconds
350
+ - PDF parsing: ~8 seconds (17%)
351
+ - Text chunking: ~2 seconds (4%)
352
+ - Embedding generation: ~30 seconds (67%)
353
+ - Database insertion: ~5 seconds (11%)
353
354
 
354
- **Memory usage:** Peak ~800MB when ingesting a 50MB file. Stays under 1GB as designed.
355
+ **Memory Usage**:
356
+ - Baseline: ~200MB idle
357
+ - Peak: ~800MB when ingesting 50MB file
358
+ - Target: < 1GB ✓
355
359
 
356
- **Concurrent queries:** Handles 5 parallel queries without degradation. LanceDB's async API allows non-blocking operations.
360
+ **Concurrent Queries**: Handles 5 parallel queries without degradation. LanceDB's async API allows non-blocking operations.
357
361
 
358
- Your results will vary based on hardware, especially CPU speed (since embeddings run on CPU, not GPU).
362
+ **Note**: Your results will vary based on hardware, especially CPU speed (embeddings run on CPU, not GPU).
359
363
 
360
364
  ## Troubleshooting
361
365
 
366
+ ### "No results found" when searching
367
+
368
+ **Cause**: Documents must be ingested before searching.
369
+
370
+ **Solution**:
371
+ 1. First ingest documents: `"Ingest /path/to/document.pdf"`
372
+ 2. Verify ingestion: `"List all ingested files"`
373
+ 3. Then search: `"Search for [your query]"`
374
+
375
+ **Common mistake**: Trying to search immediately after configuration without ingesting any documents.
376
+
362
377
  ### "Model download failed"
363
378
 
364
379
  The embedding model downloads from HuggingFace on first run. If you're behind a proxy or firewall, you might need to configure network settings.
@@ -445,7 +460,20 @@ Cloud services (OpenAI, Pinecone, etc.) typically offer better accuracy and scal
445
460
 
446
461
  **What file formats are supported?**
447
462
 
448
- PDF, DOCX, TXT, and Markdown. For other formats, convert them first or open an issue requesting support.
463
+ Currently supported:
464
+ - **PDF**: `.pdf` (uses pdf-parse)
465
+ - **Microsoft Word**: `.docx` (uses mammoth, not `.doc`)
466
+ - **Plain Text**: `.txt`
467
+ - **Markdown**: `.md`, `.markdown`
468
+
469
+ **Not yet supported**:
470
+ - Excel/CSV (`.xlsx`, `.csv`)
471
+ - PowerPoint (`.pptx`)
472
+ - Images with OCR (`.jpg`, `.png`)
473
+ - HTML (`.html`)
474
+ - Old Word documents (`.doc`)
475
+
476
+ Want support for another format? [Open an issue](https://github.com/shinpr/mcp-local-rag/issues/new) with your use case.
449
477
 
450
478
  **Can I customize the embedding model?**
451
479
 
@@ -476,8 +504,6 @@ Contributions are welcome. Before submitting a PR:
476
504
  3. Add tests for new features
477
505
  4. Update documentation if you change behavior
478
506
 
479
- This project follows the [Conventional Commits](https://www.conventionalcommits.org/) standard for commit messages.
480
-
481
507
  ## License
482
508
 
483
509
  MIT License - see LICENSE file for details.
@@ -2,7 +2,7 @@
2
2
  // Embedder implementation with Transformers.js
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.Embedder = exports.EmbeddingError = void 0;
5
- const transformers_1 = require("@xenova/transformers");
5
+ const transformers_1 = require("@huggingface/transformers");
6
6
  // ============================================
7
7
  // Error Classes
8
8
  // ============================================
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embedder/index.ts"],"names":[],"mappings":";AAAA,+CAA+C;;;AAE/C,uDAAoD;AAkBpD,+CAA+C;AAC/C,gBAAgB;AAChB,+CAA+C;AAE/C;;GAEG;AACH,MAAa,cAAe,SAAQ,KAAK;IACvC,YACE,OAAe,EACC,KAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAA;QAFE,UAAK,GAAL,KAAK,CAAQ;QAG7B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAA;IAC9B,CAAC;CACF;AARD,wCAQC;AAED,+CAA+C;AAC/C,iBAAiB;AACjB,+CAA+C;AAE/C;;;;;;;GAOG;AACH,MAAa,QAAQ;IAInB,YAAY,MAAsB;QAH1B,UAAK,GAAgD,IAAI,CAAA;QAI/D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC;YACH,+CAA+C;YAC/C,kBAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAA;YAEnC,OAAO,CAAC,GAAG,CAAC,yCAAyC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAA;YAC7E,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,CAAA;YACpE,IAAI,CAAC,KAAK,GAAG,MAAM,IAAA,uBAAQ,EAAC,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YACxE,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAA;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,cAAc,CACtB,kCAAmC,KAAe,CAAC,OAAO,EAAE,EAC5D,KAAc,CACf,CAAA;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,cAAc,CAAC,uDAAuD,CAAC,CAAA;QACnF,CAAC;QAED,IAAI,CAAC;YACH,sCAAsC;YACtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC/B,CAAC;YAED,uEAAuE;YACvE,8FAA8F;YAC9F,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;YACpD,MAAM,SAAS,GAAG,IAAI,CAAC,KAGa,CAAA;YACpC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YAE7C,qCAAqC;YACrC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACzC,OAAO,SAAS,CAAA;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,cAAc,CACtB,iCAAkC,KAAe,CAAC,OAAO,EAAE,EAC3D,KAAc,CACf,CAAA;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,KAAe;QAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,cAAc,CAAC,uDAAuD,CAAC,CAAA;QACnF,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,CAAA;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAe,EAAE,CAAA;YAEjC,6CAA6C;YAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;gBACvD,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAChF,UAAU,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAA;YACrC,CAAC;YAED,OAAO,UAAU,CAAA;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,cAAc,CACtB,wCAAyC,KAAe,CAAC,OAAO,EAAE,EAClE,KAAc,CACf,CAAA;QACH,CAAC;IACH,CAAC;CACF;AAlGD,4BAkGC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embedder/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-local-rag",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Local RAG MCP Server - Easy-to-setup document search with minimal configuration",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -33,7 +33,6 @@
33
33
  "watch": "tsx watch src/index.ts",
34
34
  "type-check": "tsc --noEmit",
35
35
  "test": "vitest run",
36
- "test:ui": "vitest --ui",
37
36
  "test:coverage": "vitest run --coverage",
38
37
  "test:coverage:summary": "node scripts/show-coverage.js",
39
38
  "test:coverage:clean": "rm -rf coverage .vitest-cache",
@@ -55,10 +54,10 @@
55
54
  "prepare": "husky"
56
55
  },
57
56
  "dependencies": {
57
+ "@huggingface/transformers": "^3.7.6",
58
58
  "@lancedb/lancedb": "^0.22.2",
59
59
  "@langchain/textsplitters": "^1.0.0",
60
60
  "@modelcontextprotocol/sdk": "^1.20.2",
61
- "@xenova/transformers": "^2.17.2",
62
61
  "langchain": "^1.0.2",
63
62
  "mammoth": "^1.11.0",
64
63
  "pdf-parse": "^2.4.5"
@@ -67,7 +66,6 @@
67
66
  "@biomejs/biome": "^1.9.4",
68
67
  "@types/node": "^20.0.0",
69
68
  "@vitest/coverage-v8": "^3.2.4",
70
- "@vitest/ui": "^3.2.4",
71
69
  "c8": "^10.1.3",
72
70
  "husky": "^9.1.7",
73
71
  "jsdom": "^25.0.0",
@@ -81,7 +79,7 @@
81
79
  "vitest": "^3.2.4"
82
80
  },
83
81
  "engines": {
84
- "node": "20"
82
+ "node": ">=20"
85
83
  },
86
84
  "lint-staged": {
87
85
  "src/**/*.{ts,tsx}": [