{"_id":"@damoqiongqiu/mcp-local-rag","_rev":"25-1fb6e46b9e998996ee9ee88682bf375a","name":"@damoqiongqiu/mcp-local-rag","dist-tags":{"latest":"0.21.0"},"versions":{"0.16.0":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.16.0","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.16.0","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"c68f8d17a59c2cae0cbc970ac0485d9e84dc6351","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.16.0.tgz","fileCount":212,"integrity":"sha512-g5DJ1+HTD10AMK7Z/qrNduJQv+Uj6b1L9mT+92hL+6S7KHjCO7zcdHq6Yr/p5D9946CBR/ApaHCoCnQKy5wKcw==","signatures":[{"sig":"MEQCIGoHULjsqJXfPDRE9ornUlIn3Ba+I8HoFlVosoms8CQrAiAU6u4t/4Ei6wWhwggEUV56Q4ouk+doLWxGriQ+qWbkyQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":844310},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"82d4b55538a516969646f5249c61ae2b6916ebb9","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"11.7.0","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"25.2.1","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","mammoth":"^1.12.0","turndown":"7.2.4","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.22.4","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.16.0_1783742423312_0.14548400225075886","host":"s3://npm-registry-packages-npm-production"}},"0.16.2":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.16.2","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.16.2","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"2220a9e52308d8a47caf12e7190bc749ac6d542c","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.16.2.tgz","fileCount":214,"integrity":"sha512-X9Xrv+LyD6uyvRDlKfwLMAwXPsh8nh4BKbYu3F1dR+lQ8vxNgRGgU3qCoz6vfv2PiG4bJYpXuO9j2FiYpnleWA==","signatures":[{"sig":"MEUCIDZYc/PDbOqnr8jmdKa5KQl9Pgdx8mdRECWvpOxTGhXFAiEA9MkaEdb8aYTqzvK3oHIhT61CIwd8lsMeuir9q2/TN60=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":883498},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"7a115f7791e792b630afecc1e0731c260f4ff796","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"11.7.0","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"25.2.1","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","mammoth":"^1.12.0","turndown":"7.2.4","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.22.4","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.16.2_1783745403857_0.4079803018348187","host":"s3://npm-registry-packages-npm-production"}},"0.16.3":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.16.3","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.16.3","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"41c27da2db23a04e87bb54635698eed5216eb030","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.16.3.tgz","fileCount":214,"integrity":"sha512-YEAJ/KakhwmbAhzoATjIb2W8mMHHSYcpSrYIHNCaS3NmASd6Ntf4tszRmSGoMzPksI/wlXZjWh7TTlIX3AGQYg==","signatures":[{"sig":"MEQCIFcwSbGnw0D6Gpmdpxwp+FuxqvNlxijYEzErxLWfUI20AiAYGJsihxlQhECJ6D5agqNSBjveZhFoXLszSnodxpT+uA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":885806},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"d66611bef440e221d844299e10117e964740a0a2","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"11.7.0","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"25.2.1","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","mammoth":"^1.12.0","turndown":"7.2.4","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.22.4","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.16.3_1783746302995_0.6777151459106892","host":"s3://npm-registry-packages-npm-production"}},"0.16.4":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.16.4","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.16.4","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"a02e38d9a6f7add4ef8093c723f7ba22f9214d82","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.16.4.tgz","fileCount":214,"integrity":"sha512-5B3ZywBoo0xUIabM6f0/3ZG0Bg7FZIjxRxe00Qi7P7fxhvTffrBDWmJR0V06RXH9MO8fCjPWPvg2shX1qeb04A==","signatures":[{"sig":"MEYCIQC5CQVy+BECGy1KECc/B2DUcIEZ3f5+RmVzmnG2CsUgLgIhAL3bbZVWKOQbFqFV5dpbCDgYvc/TOu8o64Sy79SHY3o7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":890745},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"b8b4597c758765df6efb9469f991fd455a3d65a3","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"11.7.0","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"25.2.1","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","mammoth":"^1.12.0","turndown":"7.2.4","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.22.4","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.16.4_1783747656285_0.19085197383964037","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.17.0","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.17.0","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"cbdc3c5fab61235c26ed832b3e5f49776dbe3349","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.17.0.tgz","fileCount":214,"integrity":"sha512-lTFM9OPrGXy3rb+Eq9JHtlcWCR0nShaNjU5IfHH41DVcD0Hu9Zb1hfpO/E4a0E/Mv+77PVDp5XubsHdHPgtPzA==","signatures":[{"sig":"MEUCIQCI2f2qS9q63gCm4evzR04jm1rTNL18xfv9AcQ4dyunqgIgdzXNoEV83ObZ95zqK48N6uHUqsw/QcdptXR3cv5MU7E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":911411},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"c92becfa6c8c84a24781f6a93e0a123cb6220cf3","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"11.7.0","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"25.2.1","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","mammoth":"^1.12.0","turndown":"7.2.4","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.22.4","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.17.0_1783751024526_0.23615385882141604","host":"s3://npm-registry-packages-npm-production"}},"0.17.1":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.17.1","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.17.1","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"55511596975397736379b3a0e3a9ff0d0dc20038","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.17.1.tgz","fileCount":214,"integrity":"sha512-IdpI7rj0fILvNqhsQlZECiiMvGVtsPTySjSuxULEXCqUujtkkZprlmWdeMOjoYFpSBbo3wXfqqkCGP1hMxdaNw==","signatures":[{"sig":"MEQCIA8ecQdiB86HyAPmwHZH7eHjYzcuJkfZKzRJtDMRBAsxAiAyle5do0CvwRzlAPTYtYNQqpEQ8S0WxJ8JxM2PkMoSog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":913446},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"71d75d27bb62306a8101e89a25fa0e755e6e3321","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"11.7.0","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"25.2.1","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","mammoth":"^1.12.0","turndown":"7.2.4","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.22.4","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.17.1_1783752091996_0.8709914040854034","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.18.0","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.18.0","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"52b83525165eb88b44938939586881fdcfe27da6","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.18.0.tgz","fileCount":218,"integrity":"sha512-nRKsilHSTLCSDcneV/4nhljZQXGx2knG8VU/lAsk15pX9u1ALbb+pHGTTvClIBaekFnTVNgTkXfyDw3/9Wrczg==","signatures":[{"sig":"MEUCIQCUObxtqn9vkD8SZfuMbHJBn4KZobKs/DnhxEKattK73gIgXuWWN3R7qU0gZMgubk/fvxbjRkK95qH3Cybfbi45kCI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":977921},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"fec12eb8b3e454f8415fd8bae079efa294571f9f","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"11.7.0","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"25.2.1","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","ignore":"^7.0.5","mammoth":"^1.12.0","chokidar":"^5.0.0","turndown":"7.2.4","minimatch":"^10.2.5","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.22.4","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.18.0_1783757814036_0.05049551159092136","host":"s3://npm-registry-packages-npm-production"}},"0.18.1":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.18.1","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.18.1","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"be1c8f630ca1869f4e64b98b7cf8aa533a1cc605","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.18.1.tgz","fileCount":222,"integrity":"sha512-Qk+ZOgxN9duAa5VbGI76QyDyJji5CbMQIs5Abej2vVaPPcwOvt/ZVa1V8yJCw/VIRCnB/y6ZQ+L5nVIYLoL/Mw==","signatures":[{"sig":"MEUCIQC+ebKLMLbrVDLqLrqy4lqng06OKVyGzGhOYGYEvP+FkgIgEfn3dFSaMpO6bBnIV5wXh5ZJ5bGPmwh6s2f40UyV8M8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":993054},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"47edea7417113d3cd2c8344633deb34584a2ca55","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"11.7.0","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"25.2.1","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","ignore":"^7.0.5","mammoth":"^1.12.0","chokidar":"^5.0.0","turndown":"7.2.4","minimatch":"^10.2.5","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.22.4","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.18.1_1783763142326_0.786925849151398","host":"s3://npm-registry-packages-npm-production"}},"0.18.2":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.18.2","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.18.2","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"d144520047ab363de7544ecdb12f0918bf54d2f7","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.18.2.tgz","fileCount":226,"integrity":"sha512-z26lv7g/Pyk6aM/3f0JqnSxlYCb6qa0lyZ1L7ourJS2tOhQksmFTr3TFj+72bEZjFP5+r/+tk2c9+An1nMz2XA==","signatures":[{"sig":"MEUCIQDkqDjEeakVzEmuOb6TPTFyavIRBRBNTWUgQKHzTp3QzAIgF3YsaWu5WrNaFzYNSzDc/V4AsYY9dcR1oLZLsIZ1ce4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1007395},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"a32eb7262bbd02aa4489b298fde336944aaf071c","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"11.7.0","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"25.2.1","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","ignore":"^7.0.5","mammoth":"^1.12.0","chokidar":"^5.0.0","turndown":"7.2.4","minimatch":"^10.2.5","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.22.4","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.18.2_1783764165626_0.30533889001708925","host":"s3://npm-registry-packages-npm-production"}},"0.18.4":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.18.4","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.18.4","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"03029213b9bb519ed90b7f4cb69c5dafae6e2642","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.18.4.tgz","fileCount":226,"integrity":"sha512-T9YOYy/6YXFaRmKQEoyq9+gsGbHwjdm45GA4eZRRuGK+GEm8MJwWn8QoVpVNksclU6iniS4WadAvCQr3FzZRSw==","signatures":[{"sig":"MEUCIBywHZp3WofZHYZQfi+Z1EqyIqh3XC/9fVAygsZhGr/2AiEAgiRzCgSJrrOutF61tPHItrhN61Yqc7u5i+t1SPznMW0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1023969},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"c89dd391f7cbb4832d7f638b1f12dfe44a2a49b9","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"11.7.0","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"25.2.1","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","ignore":"^7.0.5","mammoth":"^1.12.0","chokidar":"^5.0.0","turndown":"7.2.4","minimatch":"^10.2.5","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.22.4","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.18.4_1783766694745_0.8899518257877068","host":"s3://npm-registry-packages-npm-production"}},"0.18.5":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.18.5","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.18.5","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"10fbac5953cddcc596eca05a2f6a4242a6f1044a","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.18.5.tgz","fileCount":226,"integrity":"sha512-N9xY4ncvTv7QZVrG06LYe/Ho7CZEwsUGhxPnw9tROgCNB/IyGj6F6iPOpJSMFxOjpGhTIGOkgn6wEUqSz4m5NQ==","signatures":[{"sig":"MEUCIGALaSZOiJPf66y0gVr/Vw+Wvg4sQVTZ1Ulhwt49MQvEAiEA2rpN6sZykBqGEeKvgSYeHgqt4R6CLTagMmGXAMiSo+I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1024445},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"49360bd29548e8785e1c587aa9a966116519cf3b","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"11.7.0","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"25.2.1","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","ignore":"^7.0.5","mammoth":"^1.12.0","chokidar":"^5.0.0","turndown":"7.2.4","minimatch":"^10.2.5","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.22.4","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.18.5_1783768345150_0.6842178488626536","host":"s3://npm-registry-packages-npm-production"}},"0.18.6":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.18.6","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.18.6","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"0114a57f8f457a32654b3cad4c14f955c0f27c36","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.18.6.tgz","fileCount":226,"integrity":"sha512-jquNGt7fgY01Zt/vgLovsOK2lqQeJxwGTdmYQo2x+Rts5XJ9EyNI+2D+HO1V6yueAwlHRrMwgaNvnx/J8wfELw==","signatures":[{"sig":"MEUCIQCoR1BL+EcASQ/Mozye/fI4Hvu0kmJWbFt0d0BxpIqeCAIgWSpCHjlvYfqPiWw44cl5KxIzLgAiroJGQdc5mSCXCDI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1025716},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"3b51d31f65bafae5fe518d0d1efdd391b611abc6","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"11.7.0","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"25.2.1","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","ignore":"^7.0.5","mammoth":"^1.12.0","chokidar":"^5.0.0","turndown":"7.2.4","minimatch":"^10.2.5","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.22.4","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.18.6_1783768648485_0.2139088826168314","host":"s3://npm-registry-packages-npm-production"}},"0.18.8":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.18.8","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.18.8","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"db660d0e12b50837e8c062b8245df5433c03caf3","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.18.8.tgz","fileCount":226,"integrity":"sha512-we5KHB2+/ROfIN7qgFRacfH3J8I3S4ubRuF0dbGleLl4CvSMEIZRuH1xOtUSxaJT4mWYmyZ4Czw9OZdaOIirJw==","signatures":[{"sig":"MEYCIQDEtW4E4lhLMsIJYyuyQ2g2UXN1DXM5FwXAB3P2MGnzYwIhAPEPma7hfdjOE529v1ex3UqvT/iosPvmgNGwiqPTDEgf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1072666},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"15f36a58d801e9867e3e364d9860881a09a3ec7f","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"11.7.0","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"25.2.1","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","ignore":"^7.0.5","undici":"^7.0.0","mammoth":"^1.12.0","chokidar":"^5.0.0","turndown":"7.2.4","minimatch":"^10.2.5","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.23.0","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.18.8_1783858405756_0.5453223360703499","host":"s3://npm-registry-packages-npm-production"}},"0.18.9":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.18.9","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.18.9","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"68db9bed1f58291cda5c285a62bf65bcc40fdcf0","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.18.9.tgz","fileCount":226,"integrity":"sha512-tr8m5gMlWP91qfKW6eJJj/ipDMfZ6jxAX2bxZip3M2c6X3MQwd20dF6ai6w7T+Am/ityFMPUlYvuJew1CbG+jw==","signatures":[{"sig":"MEUCIQC7ITTwhwtPg7vXY4KN3q0Qj+v533x6X43sBkGsHK5gYQIgBSLynBAEy30XEJld25NMlWjctu1KwQo3SmUIxkqQIx0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1037961},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"86290392d856b8a85a81121b39b10423ed960f76","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"11.7.0","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"25.2.1","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","ignore":"^7.0.5","undici":"^7.0.0","mammoth":"^1.12.0","chokidar":"^5.0.0","turndown":"7.2.4","minimatch":"^10.2.5","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.23.0","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.18.9_1783861670715_0.7173057078714555","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.19.0","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":"Shinsuke Kagawa","license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.19.0","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"30f6f93aee69f8bab44ebe71e8a587fe3bbdc5b6","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.19.0.tgz","fileCount":242,"integrity":"sha512-xhZWeLzzNmPC7Srrk0NM1KL4wLk2Hti1QUvuZB0ZA1QQmoOP1bth4HQHFlV6sEFMSZn7ZSAnKciDYd9eTNTUpg==","signatures":[{"sig":"MEUCIQDJXL4d+VjjQLKnYfvWf1cmPp7V/Hpyc3mNYOvlJIthkwIgA91j46poC6P2PZuVKZBSCgvYsBfdeH0dtS/CoveIZ6A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1109529},"main":"dist/index.js","type":"module","engines":{"node":">=22"},"mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"25.2.1","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","ignore":"^7.0.5","undici":"^7.0.0","mammoth":"^1.12.0","chokidar":"^5.0.0","turndown":"7.2.4","minimatch":"^10.2.5","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.19.0_1784612074201_0.910351229109307","host":"s3://npm-registry-packages-npm-production"}},"0.19.1":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.19.1","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":"Shinsuke Kagawa","license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.19.1","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"6bce614f89533efa9570564dba1591fddce51b0e","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.19.1.tgz","fileCount":242,"integrity":"sha512-qRIMYcTqtBK7NL19lffjCRxI691nYNxtb4s9gTn+ALO1W8+JzetFre4LUvuKaEiQNYlN9QTZa8NWI/RftyTYnw==","signatures":[{"sig":"MEUCIHxq2Pz3RFJ6CqI8ra/l/xiyCDiRpCmOyeciqWoHpzvmAiEAr0e9zg8aDVxByBsyZ1Vc1hfd4O/cDauSVC+zfgcJaKs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1109635},"main":"dist/index.js","type":"module","engines":{"node":">=22"},"mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"25.2.1","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","ignore":"^7.0.5","undici":"^7.0.0","mammoth":"^1.12.0","chokidar":"^5.0.0","turndown":"7.2.4","minimatch":"^10.2.5","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.19.1_1784613362801_0.9813987564506772","host":"s3://npm-registry-packages-npm-production"}},"0.19.2":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.19.2","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":"Shinsuke Kagawa","license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.19.2","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"d8cd46e2fb1b0e20e148b3aef5d2a98ff5101ddb","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.19.2.tgz","fileCount":242,"integrity":"sha512-qcRSUUEt1nhmqWf8Xjp2Tt/tByNhJj10piSTinEkm1pwfXK8Z40R+SEuzcKYAZ+zUewAsiZkCX8Ov1CsarnYWQ==","signatures":[{"sig":"MEQCIFSg9AyS4YKLVT0lWvmMRwmWLNUq44dXa3w3BaguHurNAiA2qwcVkXcDEWrhoJHRHySWeC47Ci/lFD2cm7F8jbo3SA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1109635},"main":"dist/index.js","type":"module","engines":{"node":">=22"},"mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"25.2.1","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","ignore":"^7.0.5","undici":"^7.0.0","mammoth":"^1.12.0","chokidar":"^5.0.0","turndown":"7.2.4","minimatch":"^10.2.5","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.19.2_1784613781777_0.27362200318166074","host":"s3://npm-registry-packages-npm-production"}},"0.19.3":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.19.3","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.19.3","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"98ef7a654967b4039444f3202b21738f0cea6be6","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.19.3.tgz","fileCount":242,"integrity":"sha512-hkKs54URLODhR04/b8SO6LzQMqpx2gev7HcGioCtMvEWfJKj64oLCVVfNeaHH84N8FjVBm6pfPETMZvC6LZLyg==","signatures":[{"sig":"MEUCIQDW1FhPHRaSodt71VKwy5kuRf2FcM+gMtUmqbn5geJOzwIgRdBsn3dgZD53DE9mM0WactQyxmoL0vTBdkt8NzXTzE4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1113281},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"a5ed3c1c235da55bb641cec4c9279bbbbc8904d2","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"10.9.7","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"22.22.2","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","ignore":"^7.0.5","undici":"^7.0.0","mammoth":"^1.12.0","chokidar":"^5.0.0","turndown":"7.2.4","minimatch":"^10.2.5","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.23.0","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.19.3_1784691276984_0.821488579603207","host":"s3://npm-registry-packages-npm-production"}},"0.19.4":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.19.4","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.19.4","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"d19e5a06e4c7526ca06bae71226e713c7b2dd67e","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.19.4.tgz","fileCount":242,"integrity":"sha512-vmNAUaTRKOTUlyEdANZJHY9NJ9gfALvaRnCXf1cpTJQawFQIxGoepGIb140AT5C5fexfc9GYymgwyI7Pux3iUg==","signatures":[{"sig":"MEUCIDc88bl1qTSQtT6sKmQPGTbA2g0rMbysCiiRw/Sj3SacAiEAsvqAixBDA7BpyJinB5H7ELZbu9DbkvwNoBwNs9JG9W8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1113319},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"752ec5157bad297a11bd48b20b54bf0cdbc67326","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"10.9.7","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"22.22.2","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","ignore":"^7.0.5","undici":"^7.0.0","mammoth":"^1.12.0","chokidar":"^5.0.0","turndown":"7.2.4","minimatch":"^10.2.5","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.23.0","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.19.4_1784693967357_0.8273572054396356","host":"s3://npm-registry-packages-npm-production"}},"0.19.5":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.19.5","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.19.5","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"64fc5d4c274a4a1a8c87a544fff1f7943ecc31bf","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.19.5.tgz","fileCount":242,"integrity":"sha512-yb3DNPoqKhWUCfRJ87nNP3XSwePGxW1CDaMlIleqzuz5txQoRg6v08YY1R4opiWChFzE1eBOuPAB6Yaxrd6iWg==","signatures":[{"sig":"MEQCIA4CsxOSsbMSDZxMFD845mK1NU8isBDodq9vnKr6q5sSAiAp22dIbbd5C6Temy9ody4eGvMyecpEAqGOb+y5FQuwtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1113318},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"8fcfb8d26689eb3b33a57a697bd83fc533842d1d","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"10.9.7","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"22.22.2","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","ignore":"^7.0.5","undici":"^7.0.0","mammoth":"^1.12.0","chokidar":"^5.0.0","turndown":"7.2.4","minimatch":"^10.2.5","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.23.0","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6","@vitest/coverage-v8":"^4.1.9"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.19.5_1784694577727_0.1249219795331118","host":"s3://npm-registry-packages-npm-production"}},"0.19.6":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.19.6","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.19.6","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"8ab812eec7735d55ac38b89593ad08d20b915753","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.19.6.tgz","fileCount":242,"integrity":"sha512-gKqxpVkrENKu1MvbIcvvTpnvyHoI7am+tKG77AnBrSaB3XVyWYbu00yVK9Edr1tYLDBR33saJOokQW73UmDbaw==","signatures":[{"sig":"MEYCIQC0AA3rovOAkfcWocDgY+2p3uq3WfsWQsqtFtyzTiG2KgIhANLaVdK3VmYrNeZt0qNcB4Vc7PSFb6RS7cxBRf8AVPQT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1113318},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"be75e86734e9c49cadef5a72490c423b0839ff3b","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"10.9.7","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"22.22.2","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","ignore":"^7.0.5","undici":"^7.0.0","mammoth":"^1.12.0","chokidar":"^5.0.0","turndown":"7.2.4","minimatch":"^10.2.5","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.23.0","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6","@vitest/coverage-v8":"^4.1.9"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.19.6_1784695196762_0.736895674125253","host":"s3://npm-registry-packages-npm-production"}},"0.19.7":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.19.7","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.19.7","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"8e63de33b32185d3a927266de56c3cb007f03c36","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.19.7.tgz","fileCount":242,"integrity":"sha512-GOGK+EsiJ5fNLIf0BHHBR+aVRAdJGJLEYaYe2dMKlAPaCvv0L04li8fVdc/3OAzbLM8zLJoCWAMVhqIfwEnTxA==","signatures":[{"sig":"MEUCIQCevWfXO3s3LJEmdtiHz63QkvS3bKkHGqXmXenAwUpYHAIgTCUGhyx6RHxg0XWeXjpVckS6v2f7PY75T5juS49mqZE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1113318},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"e5a3160ea4cb84ef06a9e08c5f117daa5a27e952","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"10.9.7","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"22.22.2","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","ignore":"^7.0.5","undici":"^7.0.0","mammoth":"^1.12.0","chokidar":"^5.0.0","turndown":"7.2.4","minimatch":"^10.2.5","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.23.0","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6","@vitest/coverage-v8":"^4.1.9"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.19.7_1784695552170_0.7115341132929682","host":"s3://npm-registry-packages-npm-production"}},"0.19.8":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.19.8","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.19.8","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"ea191a07b59f2914a6be3c4234571aa54960c195","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.19.8.tgz","fileCount":242,"integrity":"sha512-tcapnAj0NLlQLIzCn63KqJUSEoqn3Mjra30eB1DrbKjhexlPBC2sh+rUDtEHOrNko5LPMcoOo941O6HgoVdXFA==","signatures":[{"sig":"MEUCIQD2Hru9cyI0FY6dqBgAGnVi4b8qo4g9sLTulQHfFAyuoQIgPSGWe9EsJ9JpifTHBVMqQaLxwUA8jF0/WmvSrvJ0PtY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1113318},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"ead4b938d3bc1c1076dcb13a0c4aec90c52de65a","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"10.9.7","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"22.22.2","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","ignore":"^7.0.5","undici":"^7.0.0","mammoth":"^1.12.0","chokidar":"^5.0.0","turndown":"7.2.4","minimatch":"^10.2.5","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.23.0","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6","@vitest/coverage-v8":"^4.1.9"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.19.8_1784695991935_0.28909735128587877","host":"s3://npm-registry-packages-npm-production"}},"0.19.9":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.19.9","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","_id":"@damoqiongqiu/mcp-local-rag@0.19.9","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"bin":{"mcp-local-rag":"dist/index.js"},"dist":{"shasum":"3c71ba4d5c21229d4cf429ee7893eb42e5f9d7f6","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.19.9.tgz","fileCount":242,"integrity":"sha512-bUNzyzVR0mLSUkBBhSKhp1kDLsug8ggSczGORzagTlhWFrmw978Mlqnoh9TV21CC+7TcTzllHyMAvJuDcQkgdw==","signatures":[{"sig":"MEUCIQC1Kb8a0PIHjcCoH1LhKqvadfuMZq+Ty43xHsWNTSkAxAIgIef7fYbRIS22HJdZN3uwz7/djcWHT/3OQCo2MCnJfUs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1113318},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"e74db9c296b605166aee7f87a90b38d98ed53ad0","mcpName":"io.github.damoqiongqiu/mcp-local-rag","scripts":{"dev":"tsx src/index.ts","lint":"biome lint src","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","build":"tsc","check":"biome check src","start":"node dist/index.js","watch":"tsx watch src/index.ts","format":"biome format --write src","prepare":"husky","lint:fix":"biome lint --write src","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","check:fix":"biome check --write src","test:safe":"pnpm test && pnpm run cleanup:processes","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","test:watch":"vitest","type-check":"tsc --noEmit","test:webgpu":"pnpm run test:webgpu:main-path","check:unused":"knip --include exports","format:check":"biome format src","type-check:test":"tsc -p tsconfig.test.json","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts"},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"repository":{"url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","type":"git"},"_npmVersion":"10.9.7","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"_nodeVersion":"22.22.2","dependencies":{"jsdom":"^29.1.1","mupdf":"^1.28.0","ignore":"^7.0.5","undici":"^7.0.0","mammoth":"^1.12.0","chokidar":"^5.0.0","turndown":"7.2.4","minimatch":"^10.2.5","code-chunk":"^0.1.14","@lancedb/lancedb":"^0.31.0","@mozilla/readability":"0.6.0","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.9.0","devDependencies":{"tsx":"^4.23.0","dpdm":"^4.2.0","knip":"^6.23.0","husky":"^9.1.7","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","lint-staged":"^17.0.8","@types/jsdom":"^28.0.3","@biomejs/biome":"^2.5.1","@types/turndown":"5.0.6","@vitest/coverage-v8":"^4.1.9"},"_npmOperationalInternal":{"tmp":"tmp/mcp-local-rag_0.19.9_1784696345982_0.8841038112964628","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"@damoqiongqiu/mcp-local-rag","version":"0.21.0","description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","type":"module","main":"dist/index.js","bin":{"mcp-local-rag":"dist/index.js"},"keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"author":{"name":"Shinsuke Kagawa"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git"},"scripts":{"build":"tsc","start":"node dist/index.js","dev":"tsx src/index.ts","watch":"tsx watch src/index.ts","type-check":"tsc --noEmit","type-check:test":"tsc -p tsconfig.test.json","test":"node scripts/run-vitest-with-device.mjs cpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","test:webgpu":"pnpm run test:webgpu:main-path","test:webgpu:main-path":"node scripts/run-vitest-with-device.mjs webgpu run src/server/__tests__/rag-server.embedding.integration.test.ts src/server/__tests__/rag-server.ingest.integration.test.ts src/server/__tests__/rag-server.search.integration.test.ts src/__tests__/cli/ingest-cross-path-equivalence.test.ts","test:webgpu:full":"node scripts/run-vitest-with-device.mjs webgpu run --exclude 'src/__tests__/e2e/visual-ingest-e2e.test.ts'","test:watch":"vitest","test:e2e":"RUN_E2E=1 vitest run src/__tests__/e2e/visual-ingest-e2e.test.ts","format":"biome format --write src","format:check":"biome format src","lint":"biome lint src","lint:fix":"biome lint --write src","check":"biome check src","check:fix":"biome check --write src","check:unused":"knip --include exports","check:deps":"dpdm --no-tree --no-warning --exit-code circular:1 -T --tsconfig ./tsconfig.json --exclude \"(node_modules|__tests__|\\.test\\.ts$|\\.spec\\.ts$)\" \"src/**/*.ts\"","check:all":"pnpm run check && pnpm run lint && pnpm run format:check && pnpm run check:unused && pnpm run check:deps && pnpm run build && pnpm run type-check:test && pnpm run test","cleanup:processes":"bash ./scripts/cleanup-test-processes.sh","test:safe":"pnpm test && pnpm run cleanup:processes","prepare":"husky"},"dependencies":{"@huggingface/transformers":"^4.2.0","@lancedb/lancedb":"^0.31.0","@modelcontextprotocol/sdk":"^1.29.0","@mozilla/readability":"0.6.0","chokidar":"^5.0.0","code-chunk":"^0.1.14","ignore":"^7.0.5","jsdom":"^29.1.1","mammoth":"^1.12.0","minimatch":"^10.2.5","mupdf":"^1.28.0","turndown":"7.2.4","undici":"^7.28.0"},"devDependencies":{"@biomejs/biome":"^2.5.1","@types/jsdom":"^28.0.3","@types/node":"^26.0.1","@types/turndown":"5.0.6","@vitest/coverage-v8":"^4.1.9","dpdm":"^4.2.0","husky":"^9.1.7","knip":"^6.23.0","lint-staged":"^17.0.8","tsx":"^4.23.0","typescript":"^6.0.3","vitest":"^4.1.9"},"packageManager":"pnpm@11.9.0","engines":{"node":">=22"},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --write --no-errors-on-unmatched","biome format --write --no-errors-on-unmatched"]},"mcpName":"io.github.damoqiongqiu/mcp-local-rag","publishConfig":{"access":"public"},"_id":"@damoqiongqiu/mcp-local-rag@0.21.0","gitHead":"3e94e45f842ed9a9119fcd90469f02b78c951a7b","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-yEicWizredsbqhWzFQ6sS9HlMAl3fl83ZbH5gxCpHLG2Nyem/AoL22B2Aj/kuF9q1h5jmbh26lNyv3bAkKzRpg==","shasum":"901c052da631e911008c8cd4e962fdaec32f8d59","tarball":"https://registry.npmjs.org/@damoqiongqiu/mcp-local-rag/-/mcp-local-rag-0.21.0.tgz","fileCount":278,"unpackedSize":1145775,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDq+LP9XNSSYJ3Xx2Dw1TUQnPzGaDg4386guufGqJX0ZgIhAPsyYwJ815Bu5TT0yv8LgssttPe1YRRVVU7J7g6oqXLY"}]},"_npmUser":{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"},"directories":{},"maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-local-rag_0.21.0_1784820050798_0.4541047336097779"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-11T04:00:23.156Z","modified":"2026-07-23T15:20:51.095Z","0.16.0":"2026-07-11T04:00:23.445Z","0.16.2":"2026-07-11T04:50:04.000Z","0.16.3":"2026-07-11T05:05:03.241Z","0.16.4":"2026-07-11T05:27:36.450Z","0.17.0":"2026-07-11T06:23:44.667Z","0.17.1":"2026-07-11T06:41:32.347Z","0.18.0":"2026-07-11T08:16:54.208Z","0.18.1":"2026-07-11T09:45:42.521Z","0.18.2":"2026-07-11T10:02:45.777Z","0.18.4":"2026-07-11T10:44:54.945Z","0.18.5":"2026-07-11T11:12:25.330Z","0.18.6":"2026-07-11T11:17:28.722Z","0.18.8":"2026-07-12T12:13:25.932Z","0.18.9":"2026-07-12T13:07:50.869Z","0.19.0":"2026-07-21T05:34:34.349Z","0.19.1":"2026-07-21T05:56:02.956Z","0.19.2":"2026-07-21T06:03:01.932Z","0.19.3":"2026-07-22T03:34:37.224Z","0.19.4":"2026-07-22T04:19:27.576Z","0.19.5":"2026-07-22T04:29:37.898Z","0.19.6":"2026-07-22T04:39:56.991Z","0.19.7":"2026-07-22T04:45:52.330Z","0.19.8":"2026-07-22T04:53:12.071Z","0.19.9":"2026-07-22T04:59:06.154Z","0.21.0":"2026-07-23T15:20:50.960Z"},"bugs":{"url":"https://github.com/damoqiongqiu/mcp-local-rag/issues"},"author":{"name":"Shinsuke Kagawa"},"license":"MIT","homepage":"https://github.com/damoqiongqiu/mcp-local-rag#readme","keywords":["typescript","mcp","mcp-server","model-context-protocol","rag","vector-search","semantic-search","embeddings","lancedb","transformers","huggingface","local-ai","offline","privacy","code-search","code-intelligence","sourcegraph-alternative","developer-tools","claude-code","cursor","codex","skills"],"repository":{"type":"git","url":"git+https://github.com/damoqiongqiu/mcp-local-rag.git"},"description":"Code intelligence for AI coding assistants — AST-level semantic code search with keyword boost. Index your codebase, search by meaning, keep everything local.","maintainers":[{"name":"damoqiongqiu","email":"damoqiongqiu@126.com"}],"readme":"<p align=\"center\">\n  <img src=\"assets/banner.jpg\" alt=\"MCP Local RAG — Search below the surface.\" width=\"600\" />\n</p>\n\n# MCP Local RAG\n\n[![GitHub stars](https://img.shields.io/github/stars/damoqiongqiu/mcp-local-rag?style=social)](https://github.com/damoqiongqiu/mcp-local-rag)\n[![npm version](https://img.shields.io/npm/v/@damoqiongqiu/mcp-local-rag.svg)](https://www.npmjs.com/package/@damoqiongqiu/mcp-local-rag)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![TypeScript](https://img.shields.io/badge/TypeScript-6.0-blue.svg?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)\n[![MCP Registry](https://img.shields.io/badge/MCP-Registry-green.svg)](https://registry.modelcontextprotocol.io/)\n\n> 🍴 Forked from [shinpr/mcp-local-rag](https://github.com/shinpr/mcp-local-rag) — original work by [Shinsuke Kagawa](https://github.com/shinpr)\n>\n> Local code intelligence engine for AI coding assistants. AST-level semantic chunking + keyword boost for pinpointing functions, classes, and APIs — fully private, zero setup.\n\n📖 [中文文档](README_CN.md)\n\n---\n\n## Table of Contents\n\n1. [Features](#1-features)\n2. [Quick Start](#2-quick-start)\n   - 2.1 [Configure Your AI Coding Tool](#21-configure-your-ai-coding-tool)\n   - 2.2 [CLI Quick Start](#22-cli-quick-start)\n   - 2.3 [First-Time Project Indexing](#23-first-time-project-indexing)\n3. [Core Concepts](#3-core-concepts)\n   - 3.1 [Dual-Strategy Chunking](#31-dual-strategy-chunking)\n   - 3.2 [Hybrid Search](#32-hybrid-search)\n   - 3.3 [Security Boundary](#33-security-boundary)\n4. [MCP Tool Reference](#4-mcp-tool-reference)\n   - 4.1 [Ingest Tools](#41-ingest-tools)\n   - 4.2 [Search Tools](#42-search-tools)\n   - 4.3 [Management Tools](#43-management-tools)\n   - 4.4 [Code Intelligence](#44-code-intelligence)\n   - 4.5 [System Tools](#45-system-tools)\n5. [CLI](#5-cli)\n   - 5.1 [Basic Commands](#51-basic-commands)\n   - 5.2 [CLI Configuration](#52-cli-configuration)\n6. [Network & Models](#6-network--models)\n   - 6.1 [Mirror Auto-Detection](#61-mirror-auto-detection)\n   - 6.2 [Model Selection](#62-model-selection)\n   - 6.3 [File Watching](#63-file-watching)\n7. [Search Tuning](#7-search-tuning)\n8. [Performance Tuning](#8-performance-tuning)\n   - 8.1 [Quantization Precision](#81-quantization-precision-rag_dtype)\n   - 8.2 [Execution Device](#82-execution-device-rag_device)\n   - 8.3 [Minimum Chunk Length](#83-minimum-chunk-length-chunk_min_length)\n   - 8.4 [Recommended Configurations](#84-recommended-configurations)\n9. [Configuration Reference](#9-configuration-reference)\n10. [Troubleshooting](#10-troubleshooting)\n11. [Development](#11-development)\n\n---\n\n## 1. Features\n\n- **Smart dual-strategy chunking** — AST-level code chunking via tree-sitter (splits at function/class/method boundaries, injects scope chain + imports). Semantic chunking for documents (splits by meaning, not character count).\n- **Semantic search + keyword boost** — Vector search first, then keyword matching boosts exact terms. `useEffect`, error codes, class names rank higher — not just semantically guessed.\n- **15 MCP tools** — Ingest, search, manage, code intelligence, and system ops in one server.\n- **AST code intelligence** — `find_definition` and `find_references` for IDE-level code navigation, powered by tree-sitter metadata captured at ingest time.\n- **Three-tier mirror auto-fallback** — `huggingface.co → hf-mirror.com → modelscope.cn`, zero config for users in mainland China.\n- **Runs entirely locally** — No API keys, no cloud, no data leaving your machine. Works offline after the first model download.\n- **Zero-friction setup** — One `npx` command. No Docker, Python, or servers to manage.\n\n---\n\n## 2. Quick Start\n\nSet `BASE_DIR` to the folder you want to search (`BASE_DIRS` for multiple roots — see [Configuration](#8-configuration-reference)).\n\n### 2.1 Configure Your AI Coding Tool\n\n**Cursor** — `~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"local-rag\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@damoqiongqiu/mcp-local-rag\"],\n      \"env\": { \"BASE_DIR\": \"/path/to/your/project\" }\n    }\n  }\n}\n```\n\n**Claude Code**:\n\n```bash\nclaude mcp add local-rag --scope user --env BASE_DIR=/path/to/your/project -- npx -y @damoqiongqiu/mcp-local-rag\n```\n\n**Codex** — `~/.codex/config.toml`:\n\n```toml\n[mcp_servers.local-rag]\ncommand = \"npx\"\nargs = [\"-y\", \"@damoqiongqiu/mcp-local-rag\"]\n\n[mcp_servers.local-rag.env]\nBASE_DIR = \"/path/to/your/project\"\n```\n\n**WorkBuddy** — Settings → Custom Connectors → Add:\n\n```json\n{\n  \"mcpServers\": {\n    \"local-rag\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@damoqiongqiu/mcp-local-rag\"],\n      \"env\": { \"BASE_DIR\": \"/path/to/your/project\" }\n    }\n  }\n}\n```\n\n> ⚠️ WorkBuddy: you MUST click \"Trust\" in the Custom Connectors list after adding, otherwise the server is silently blocked.\n\n### 2.2 CLI Quick Start\n\nNo MCP needed — run directly from the terminal:\n\n```bash\nnpx @damoqiongqiu/mcp-local-rag ingest ./src/\nnpx @damoqiongqiu/mcp-local-rag query \"auth middleware\"\nnpx @damoqiongqiu/mcp-local-rag status\n```\n\nThat's it. No Docker, Python, or server setup.\n\n### 2.3 First-Time Project Indexing\n\n```\nYou: \"Index the src directory of this project\"\nAssistant: Successfully ingested 156 files (2,847 chunks created)\n\nYou: \"Where's the middleware that handles API rate limiting?\"\nAssistant: src/middleware/rateLimiter.ts — useRateLimiter(), lines 42–89\n\nYou: \"How is the database connection pool configured?\"\nAssistant: src/config/database.ts — createPool() default max: 20, idle: 5\n```\n\n---\n\n## 3. Core Concepts\n\n### 3.1 Dual-Strategy Chunking\n\nChunking strategy is chosen per file type:\n\n- **Code files** (50+ languages) — `CodeChunker` parses source via tree-sitter AST, splits at structural boundaries (functions, classes, methods). Each chunk's `contextualizedText` includes its scope chain and import context for precise semantic search.\n- **Documents** (PDF/DOCX/TXT/MD/HTML) — `SemanticChunker` splits into sentences, groups by embedding similarity to find natural topic boundaries. Markdown code blocks remain intact — never split mid-block.\n\n### 3.2 Hybrid Search\n\nSearch = semantic similarity + keyword boost (`RAG_HYBRID_WEIGHT`, default 0.6):\n\n1. Query vectorization → semantic search finds most relevant chunks\n2. Quality filters apply (distance threshold, grouping)\n3. Keyword matching boosts exact-term rankings\n\nExact identifiers like `useEffect` are never buried by semantic approximations.\n\n### 3.3 Security Boundary\n\nOnly files under `BASE_DIR` / `BASE_DIRS` are accessible for ingest, list, delete, or read-neighbor operations. Symlinks resolved outside roots are rejected. Sibling-prefix paths (e.g., `/foo/barista` when root is `/foo/bar`) are also blocked — prevents path traversal attacks.\n\n---\n\n## 4. MCP Tool Reference\n\n15 tools organized into 5 categories.\n\n### 4.1 Ingest Tools\n\n| # | Tool | Purpose | Example |\n|---|------|---------|---------|\n| 1 | `ingest_file` | Single file (PDF/DOCX/TXT/MD/code) | `\"Ingest ./docs/api-spec.pdf\"` |\n| 2 | `ingest_data` | In-memory text/HTML | `\"Fetch this page and ingest the HTML\"` |\n| 3 | `ingest_directory` | Bulk directory ingest | `\"Ingest everything under ./src\"` |\n\n**`ingest_file`** supports 50+ code languages. PDFs support an optional visual mode — a local VLM generates captions for figure pages, making visual content searchable. Two profiles available:\n\n| Profile | Model | Cache | Suited for |\n|---------|------|------|------------|\n| `fast` (default) | SmolVLM-256M | ~250 MB | Light visual indexing |\n| `quality` | Qwen2.5-VL-3B-ONNX | ~2.9 GB | Figures with in-image text |\n\n```bash\n# CLI\nnpx @damoqiongqiu/mcp-local-rag ingest ./spec.pdf --visual --visual-quality quality\n# MCP\n\"Ingest ./spec.pdf with visual: true, visualQuality: 'quality'\"\n```\n\n**`ingest_data`** runs Readability → Markdown → index. Perfect for web content fetched by your AI assistant. Re-ingesting replaces old versions automatically.\n\n**`ingest_directory`** scans recursively, respects `.gitignore`, shows real-time progress via MCP notifications.\n\n### 4.2 Search Tools\n\n| # | Tool | Purpose | Key Parameters |\n|---|------|---------|----------------|\n| 4 | `query_documents` | Hybrid search (semantic + keyword) | `query`, `limit`, `scope`, `highlightContext`, `fromTimestamp` |\n| 5 | `read_chunk_neighbors` | Expand context around results | `filePath`, `chunkIndex`, `before`, `after` |\n\n**`query_documents`** — `scope` accepts a single path prefix or list, restricting results to that subtree. `highlightContext` returns snippets around matched terms. `fromTimestamp` / `untilTimestamp` enable time-range filtering.\n\n**`read_chunk_neighbors`** — defaults to 2 chunks before and after (like `grep -C 2`), max 50 each. Response includes the target chunk marked `isTarget: true`.\n\n### 4.3 Management Tools\n\n| # | Tool | Purpose |\n|---|------|---------|\n| 6 | `list_files` | List files with ingestion status (`ingested: true/false`) |\n| 7 | `delete_file` | Delete by file path or source URL |\n| 8 | `status` | Index stats: docs, chunks, memory, search mode |\n\n`list_files` supports `scope` filtering with the same prefix-match semantics as search. In large directories, scope accelerates the scan by skipping out-of-scope subtrees.\n\n### 4.4 Code Intelligence\n\n| # | Tool | Purpose | Input |\n|---|------|---------|-------|\n| 9 | `find_definition` | Locate symbol definition (file, line range, scope) | Exact symbol name |\n| 10 | `find_references` | Find all references (import + text mention) | Symbol name |\n\nBoth tools depend on AST metadata (imports, entities, scope chains) extracted by tree-sitter at ingest time. **Only works for code files ingested with `CodeChunker`** — files ingested before v0.18.7 lack this metadata and require `reindex_all` to rebuild.\n\n**`find_references`** uses a two-phase strategy: (1) exact match in `codeMeta.imports` → (2) FTS full-text search for the symbol name. Results are deduplicated by (filePath, chunkIndex), with import references listed first.\n\n### 4.5 System Tools\n\n| # | Tool | Purpose |\n|---|------|---------|\n| 11 | `config` | Runtime hot read/write config — no restart needed |\n| 12 | `dedup_check` | SHA256 + Jaccard similarity to detect duplicate files |\n| 13 | `export_index` | Export entire index as JSON (backup or migration) |\n| 14 | `reindex_all` | Full re-chunk + re-embed (after model change) |\n| 15 | `reindex_stale` | Re-ingest only files modified on disk (incremental sync) |\n\n**`config`** hot-swaps `hybridWeight`, `modelName`, `cacheDir`, `baseDir`/`baseDirs`, etc. Switching models auto-disposes the old Embedder and initializes the new one — note: changing models alters the embedding space and requires `reindex_all`.\n\n**`dedup_check`** is especially useful in monorepos — `spot` ↔ `futures` mirror code is typically flagged with similarity 1.0.\n\n---\n\n## 5. CLI\n\n### 5.1 Basic Commands\n\n```bash\n# Ingest\nnpx @damoqiongqiu/mcp-local-rag ingest ./src/\n\n# Search (with scope)\nnpx @damoqiongqiu/mcp-local-rag query \"auth middleware\"\nnpx @damoqiongqiu/mcp-local-rag query \"auth\" --scope /docs/api\n\n# Context expansion\nnpx @damoqiongqiu/mcp-local-rag read-neighbors --file-path /abs/path.md --chunk-index 5\n\n# Management\nnpx @damoqiongqiu/mcp-local-rag list --scope /docs/api\nnpx @damoqiongqiu/mcp-local-rag status\nnpx @damoqiongqiu/mcp-local-rag delete ./docs/old.pdf\nnpx @damoqiongqiu/mcp-local-rag delete --source \"https://...\"\n```\n\n`query`, `read-neighbors`, `list`, `status`, `delete` emit JSON to stdout (pipe to `jq`). `ingest` emits progress to stderr.\n\nGlobal options (`--db-path`, `--cache-dir`, `--model-name`) go before the subcommand:\n\n```bash\nnpx @damoqiongqiu/mcp-local-rag --help\n```\n\n> ⚠️ The CLI does NOT read your MCP client config (`mcp.json`, etc.). Configure via flags or environment variables.\n\n### 5.2 CLI Configuration\n\n**Flags** — global options before, subcommand options after:\n\n```bash\nnpx @damoqiongqiu/mcp-local-rag --db-path ./my-db query \"auth\" --base-dir ./docs\n```\n\n`--base-dir` is repeatable on `ingest` and `list`:\n\n```bash\nnpx @damoqiongqiu/mcp-local-rag ingest --base-dir ./docs --base-dir ./specs ./docs/readme.md\n```\n\n**Environment variables**:\n\n```bash\nexport DB_PATH=./my-db\nexport BASE_DIR=./docs\nnpx @damoqiongqiu/mcp-local-rag query \"auth\"\n```\n\nFor multiple roots, use `BASE_DIRS` (JSON array):\n\n```bash\nexport BASE_DIRS='[\"/Users/me/work\",\"/Users/me/specs\"]'\n```\n\nPrecedence: CLI flags > environment variables > defaults.\n\n---\n\n## 6. Network & Models\n\n### 6.1 Mirror Auto-Detection\n\nhuggingface.co is inaccessible from mainland China. Built-in three-tier mirror chain with automatic fallback:\n\n```\nhuggingface.co → hf-mirror.com → modelscope.cn\n```\n\nAt startup, each mirror is HEAD-probed (3s timeout). The first reachable mirror with a complete API is selected:\n\n- **With proxy** (`HTTPS_PROXY`) → direct to huggingface.co\n- **No proxy** → auto-switch to hf-mirror.com\n- **hf-mirror API unavailable** → fallback to modelscope.cn\n\n**No manual `HF_ENDPOINT` required.** For manual control:\n\n| Env Var | Effect |\n|---------|--------|\n| `HF_AUTO_MIRROR=false` | Disable auto-detection, use huggingface.co only |\n| `HF_ENDPOINT=<url>` | Force a specific mirror, skip auto-detection |\n\n> v0.18.5+ uses `setGlobalDispatcher(ProxyAgent)` — all Node.js 22 network requests go through the proxy.\n\n### 6.2 Model Selection\n\n6 embedding models with alias resolution via model-registry:\n\n| Model | Alias | Size | Dims |\n|-------|-------|------|------|\n| `Xenova/all-MiniLM-L6-v2` (default) | `mini` | ~90 MB | 384 |\n| `Xenova/all-MiniLM-L12-v2` | — | ~120 MB | 384 |\n| `Xenova/bge-small-en-v1.5` | `bge-small` | ~130 MB | 384 |\n| `Xenova/all-mpnet-base-v2` | `mpnet` | ~420 MB | 768 |\n| `Xenova/bge-base-en-v1.5` | — | ~420 MB | 768 |\n| `Xenova/multi-qa-mpnet-base-dot-v1` | `multi-qa` | ~420 MB | 768 |\n\n**Guidance**: code repos → default model + high keyword boost; multilingual → consider `embeddinggemma-300m`; scientific papers → consider `allenai-specter`.\n\n**RAG_DTYPE** controls ONNX precision (`fp32` / `fp16` / `q8`). Default `fp32`; use `q8` when memory-constrained. ⚠️ Changing models or dtype requires deleting `DB_PATH` and re-indexing.\n\n### 6.3 File Watching\n\nSet `RAG_WATCH=true` — the server starts recursive `fs.watch` on baseDirs (500ms debounce):\n\n- File creation/modification → auto `ingest_file`\n- File deletion → auto `delete_file`\n\nIdeal for actively changing projects.\n\n---\n\n## 7. Search Tuning\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `RAG_HYBRID_WEIGHT` | `0.6` | Keyword boost: 0 = semantic only, 1 = keyword only |\n| `RAG_GROUPING` | unset | `similar` = top group only, `related` = top 2 groups |\n| `RAG_MAX_DISTANCE` | unset | Filter low-relevance results (e.g., `0.5`) |\n| `RAG_MAX_FILES` | unset | Limit results to top N files |\n\n**Code-focused tuning (recommended default):**\n\n```json\n{ \"RAG_HYBRID_WEIGHT\": \"0.7\", \"RAG_GROUPING\": \"similar\" }\n```\n\n**Document-focused tuning:**\n\n```json\n{ \"RAG_HYBRID_WEIGHT\": \"0.4\", \"RAG_GROUPING\": \"related\" }\n```\n\nKeyword boost is applied *after* semantic filtering — improves precision without introducing noise.\n\n---\n\n## 8. Performance Tuning\n\nBeyond search accuracy, inference performance is also configurable. All optimizations are environment variables — no code changes required.\n\n### 8.1 Quantization Precision (`RAG_DTYPE`)\n\nControls ONNX model inference precision. For `all-MiniLM-L6-v2`, three levels are available:\n\n| Value | Model Size | Speed | Memory | Precision Loss | Best For |\n|-------|-----------|-------|--------|---------------|----------|\n| `fp32` (default) | ~90 MB | baseline | ~80 MB | none | First use, maximum accuracy |\n| `fp16` | ~45 MB | 20-30% faster | ~45 MB | negligible | **Recommended** for daily use |\n| `q8` | ~45 MB | 30-50% faster | ~45 MB | minor | Low memory, large projects |\n\n```json\n\"env\": { \"RAG_DTYPE\": \"fp16\", \"BASE_DIR\": \"...\" }\n```\n\n⚠️ Changing dtype **requires index rebuild** — embedding spaces are incompatible.\n\n**Verify it works:** After restart, call `status` via MCP and check the `dtype` field. Should match your setting (e.g., `\"fp16\"`).\n\n**If it fails:** Startup throws `EmbeddingError` with a list of supported dtypes. Common cause: the model doesn't provide the `q8` variant — switch to `fp16`.\n\n### 8.2 Execution Device (`RAG_DEVICE`)\n\nControls which ONNX Runtime backend to use:\n\n| Value | Backend | Notes |\n|-------|---------|-------|\n| `cpu` (default) | CPU | Most stable, no extra dependencies |\n| `webgpu` | GPU (WebGPU) | ⚠️ Experimental: M1/M2 Mac uses Metal, NVIDIA uses Vulkan |\n\n```json\n\"env\": { \"RAG_DEVICE\": \"webgpu\", \"RAG_DTYPE\": \"fp16\", \"BASE_DIR\": \"...\" }\n```\n\n⚠️ Changing device changes the embedding space — requires index rebuild. **Stacks with `RAG_DTYPE`** — `fp16 + webgpu` gives both model-size reduction and GPU speedup.\n\n**Verify it works:** MCP startup log should show `Loading model on device \"webgpu\"`. `status` should show `device: \"webgpu\"`.\n\n**If it fails:**\n- `Unsupported device` at startup → WebGPU unavailable in your environment, revert to `\"cpu\"`\n- Starts successfully but inference crashes → likely an ONNX WebGPU backend bug, revert to `\"cpu\"`\n- Just delete the `RAG_DEVICE` line to fall back — other config is untouched\n\n### 8.3 Minimum Chunk Length (`CHUNK_MIN_LENGTH`)\n\nFilters out chunks shorter than this value during ingest. Default `50` keeps nearly everything; `200` drops 30-40% of noise fragments.\n\n```json\n\"env\": { \"CHUNK_MIN_LENGTH\": \"200\", \"BASE_DIR\": \"...\" }\n```\n\n⚠️ Blunt instrument — short but important code (e.g., config constants) may also be discarded. Requires index rebuild. Sweet spot: `100-200`.\n\n### 8.4 Recommended Configurations\n\n| Scenario | Config |\n|----------|--------|\n| Daily development | `RAG_DTYPE=fp16` |\n| Large project + M1/M2 Mac | `RAG_DTYPE=fp16, RAG_DEVICE=webgpu` |\n| Memory-constrained | `RAG_DTYPE=q8` |\n\nAll changes require `reindex_all` (MCP) or re-running `ingest` (CLI). If something breaks, delete the failing env line to revert to defaults.\n\n---\n\n## 9. Configuration Reference\n\nMCP server: environment variables only (via your MCP client's `env` block).\nCLI: environment variables + equivalent flags (flags take precedence).\n\n| Env Var | CLI Flag | Default | Description |\n|---------|----------|---------|-------------|\n| `BASE_DIR` | `--base-dir` (repeatable) | `cwd` | Document root (security boundary) |\n| `BASE_DIRS` | — | unset | JSON array of roots, overrides `BASE_DIR` |\n| `DB_PATH` | `--db-path` | `./lancedb/` | Vector database path |\n| `CACHE_DIR` | `--cache-dir` | `./models/` | Model cache — recommend absolute path |\n| `MODEL_NAME` | `--model-name` | `all-MiniLM-L6-v2` | HuggingFace model ID |\n| `MAX_FILE_SIZE` | `--max-file-size` | 100 MB | Max file size in bytes |\n| `CHUNK_MIN_LENGTH` | `--chunk-min-length` | `50` | Min chunk length (1–10000 chars) |\n| `RAG_DEVICE` | — | `cpu` | ONNX execution device |\n| `RAG_DTYPE` | — | `fp32` | Quantization (`fp32`/`fp16`/`q8`) |\n| `HTTPS_PROXY` | — | unset | Model download proxy. v0.18.5+ globally effective |\n| `HF_ENDPOINT` | — | `huggingface.co` | Manual mirror override |\n| `HF_AUTO_MIRROR` | — | `true` | Auto-detection toggle |\n| `RAG_WATCH` | — | unset | File watching (`true`/`1`) |\n\n**Root resolution order**: CLI `--base-dir` > `BASE_DIRS` > `BASE_DIR` > `cwd`. `BASE_DIRS` and `BASE_DIR` are never merged. Only JSON array syntax supported for `BASE_DIRS` — delimiter syntax is intentionally rejected.\n\n---\n\n## 10. Troubleshooting\n\n<details open>\n<summary><strong>Model download failed</strong></summary>\n\nSymptoms: `fetch failed`, `status` shows `searchMode: fts` instead of `hybrid`.\n\n**Solutions:**\n\n1. **Network restriction** (mainland China, etc.) — use proxy:\n   ```json\n   \"env\": { \"HTTPS_PROXY\": \"http://127.0.0.1:7890\" }\n   ```\n   Set in your MCP client config, not the terminal. v0.18.5+ globally effective via `setGlobalDispatcher`.\n\n2. **Auto-mirror fallback** (v0.18.2+, default) — three-tier probe. Usually works without any config.\n\n3. **Manual override** — `HF_ENDPOINT=https://modelscope.cn` or [download models manually](https://huggingface.co/Xenova/all-MiniLM-L6-v2) into `CACHE_DIR`.\n\n4. **npx cached old version** — clear and restart:\n   ```bash\n   rm -rf ~/.npm/_npx/\n   ```\n\n</details>\n\n<details>\n<summary><strong>MCP client doesn't see tools</strong></summary>\n\n1. Verify config file syntax\n2. WorkBuddy users: confirm \"Trust\" button clicked\n3. Restart client completely (Cmd+Q on macOS)\n4. Test directly: `npx @damoqiongqiu/mcp-local-rag` should run without errors\n\n</details>\n\n<details>\n<summary><strong>Rebuilding the index</strong></summary>\n\nAfter switching models or when the database is corrupted:\n\n1. Stop the MCP service\n2. Delete `DB_PATH` directory (default `./lancedb/`) — safe, doesn't affect source files\n3. Restart MCP → fresh database auto-created\n4. Bulk re-ingest:\n   ```bash\n   npx @damoqiongqiu/mcp-local-rag ingest ./src/\n   ```\n\n</details>\n\n<details>\n<summary><strong>FAQ</strong></summary>\n\n- **Private?** Yes. After model download, nothing leaves your machine.\n- **Offline?** Yes, once models are cached.\n- **Supported formats?** 50+ code languages + PDF/DOCX/TXT/MD/HTML. No Excel, PPT, or images.\n- **GPU acceleration?** Opt-in via `RAG_DEVICE`. Support depends on your system, Node.js version, and the ONNX backend.\n- **Backup?** Copy the `DB_PATH` directory.\n\n</details>\n\n---\n\n## 11. Development\n\n```bash\ngit clone https://github.com/damoqiongqiu/mcp-local-rag.git\ncd mcp-local-rag\npnpm install\n```\n\n```bash\npnpm test              # All tests\npnpm run type-check    # TypeScript check\npnpm run check:fix     # Lint + format\npnpm run check:all     # Full CI pipeline\n```\n\n```text\nsrc/\n  index.ts      # Entry point\n  server/       # MCP tool handlers\n  cli/          # CLI subcommands\n  parser/       # PDF/DOCX/TXT/MD/code parsing\n  chunker/      # SemanticChunker + CodeChunker\n  embedder/     # Transformers.js embeddings\n  vectordb/     # LanceDB operations\n  utils/        # Shared utilities (security, scan, scope)\n  __tests__/    # Test suites\n```\n\n---\n\n## License\n\nMIT License. Free for personal and commercial use.\n\n## Acknowledgments\n\nBuilt with [Model Context Protocol](https://modelcontextprotocol.io/) (Anthropic), [LanceDB](https://lancedb.com/), and [Transformers.js](https://huggingface.co/docs/transformers.js).\n","readmeFilename":"README.md"}