{"name":"io.github.damoqiongqiu/mcp-local-rag","slug":"damoqiongqiu-mcp-local-rag","title":null,"description":"Semantic code & doc search with keyword boost. AST code nav, auto HF mirror, local, privacy-first.","url":"https://mcp.market/server/damoqiongqiu-mcp-local-rag","rating":null,"grade":"A","score":88,"certified":false,"status":"active","category":"seo","tags":["seo","ai","search"],"presence":{"score":29,"stars":13,"forks":0,"downloads_week":43,"last_push_at":"2026-07-23T15:20:07.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/damoqiongqiu/mcp-local-rag","website":null,"version":"0.21.0","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@damoqiongqiu/mcp-local-rag","version":"0.21.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Base directory for document storage (defaults to current working directory). Ignored when BASE_DIRS is set.","format":"string","name":"BASE_DIR"},{"description":"JSON array of base directories (e.g. '[\"/a\",\"/b\"]'). Takes precedence over BASE_DIR.","format":"string","name":"BASE_DIRS"},{"description":"Path to LanceDB database directory (defaults to ./lancedb/)","format":"string","name":"DB_PATH"},{"description":"Directory where Transformers.js models are cached (defaults to ./models/)","format":"string","name":"CACHE_DIR"},{"description":"Embedding model name (defaults to Xenova/all-MiniLM-L6-v2)","format":"string","name":"MODEL_NAME"},{"description":"Maximum file size in bytes (defaults to 104857600 / 100MB)","format":"string","name":"MAX_FILE_SIZE"},{"description":"Maximum distance threshold for filtering search results. Results with distance greater than this value will be excluded. Lower values mean stricter filtering (e.g., 0.5 for high relevance only)","format":"string","name":"RAG_MAX_DISTANCE"},{"description":"Grouping mode for quality filtering. 'similar' returns only the most similar group (stops at first distance jump). 'related' includes related groups (stops at second distance jump). Unset means no grouping filter","format":"string","name":"RAG_GROUPING"},{"description":"Maximum number of files to keep in search results. Results are filtered to include only chunks from the top N best-scoring files. For example, 1 returns only the single best-matching file's chunks. Unset means no file filtering.","format":"string","name":"RAG_MAX_FILES"},{"description":"Minimum chunk length in characters (1-10000, defaults to 50). Chunks shorter than this threshold are filtered out during ingestion.","format":"string","name":"CHUNK_MIN_LENGTH"},{"description":"Execution device for the embedder (defaults to cpu). Passed straight to ONNX Runtime; see the Transformers.js device source for the supported backend names. If the requested device fails to initialize, the server throws an error.","format":"string","name":"RAG_DEVICE"},{"description":"Embedding quantization dtype for the embedder (defaults to fp32). Opt-in and pass-through; accepts any dtype the chosen model provides (fp32, fp16, q8, int8, ...). If the model has no variant for the requested dtype, the server throws an error. Changing this changes the embedding space — re-ingest existing data.","format":"string","name":"RAG_DTYPE"},{"description":"Keyword boost factor for hybrid search (0.0-1.0, defaults to 0.6). 0 means semantic similarity only; higher values increase the keyword-match contribution to the final score.","format":"string","name":"RAG_HYBRID_WEIGHT"},{"description":"Enable automatic file watcher to detect changes and re-index modified files (true/1 to enable). Useful during active development.","format":"string","name":"RAG_WATCH"},{"description":"Explicit HuggingFace endpoint URL to use for model downloads. When set, auto-mirror detection is skipped and this URL is used directly. Useful when you have a full-featured mirror.","format":"string","name":"HF_ENDPOINT"},{"description":"Enable automatic mirror detection for HuggingFace downloads (defaults to true). Set to \"false\" or \"0\" to disable and use huggingface.co directly. The mirror chain is: huggingface.co → hf-mirror.com → modelscope.cn.","format":"string","name":"HF_AUTO_MIRROR"},{"description":"HTTPS proxy URL for downloading embedding models (e.g. http://proxy:8080). Required only if behind a corporate proxy.","format":"string","name":"HTTPS_PROXY"},{"description":"HTTP proxy URL for downloading embedding models. Fallback if HTTPS_PROXY is not set.","format":"string","name":"HTTP_PROXY"}]}],"tools":[{"name":"config","description":"Read or update runtime configuration. Without arguments, returns current config (hybridWeight, maxDistance, maxFiles, grouping). With arguments, updates the specified keys and returns the new config. Changes take effect immediately — no restart required.","write_action":false,"price_micros":0,"input_schema":null},{"name":"dedup_check","description":"Detect near-duplicate documents in the index by computing content hashes for every chunk. Returns file pairs with high chunk overlap, sorted by similarity. Use to identify accidentally duplicated or re-ingested content.","write_action":false,"price_micros":0,"input_schema":null},{"name":"delete_file","description":"Delete a previously ingested file or data from the vector database. Use filePath for files ingested via ingest_file, or source for data ingested via ingest_data. Either filePath or source must be provided. Returns deleted (operation succeeded), removedChunks, and existed (whether anything was actually present).","write_action":true,"price_micros":0,"input_schema":null},{"name":"export_index","description":"Export the current index to a JSON file for backup or migration. Returns the export file path and stats (document count, chunk count, file size). The exported file can be re-imported with a future import_index tool.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_definition","description":"Find where a symbol (function, class, variable, etc.) is defined in code files. Searches AST-level entity metadata extracted during code chunking. Returns { totalMatches, matches: [{ filePath, chunkIndex, entityName, entityType, lineRange?, scope? }] }. Only works for code files that were ingested with AST-level chunking (CodeChunker).","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_references","description":"Find all references to a symbol across ingested code files using a two-phase strategy: (1) import metadata scan for exact import name matches, (2) FTS text search for in-code mentions. Results merge with import references first, deduplicated by (filePath, chunkIndex). Returns { totalMatches, matches: [{ filePath, chunkIndex, referenceType, context?, importSource?, isDefault?, isNamespace? }] }. On","write_action":false,"price_micros":0,"input_schema":null},{"name":"health_check","description":"Diagnose server health and configuration. Checks embedder (model loaded?), LanceDB (readable?), BASE_DIRs (reachable on disk?), and cache directory (writable?). Returns structured pass/fail results with a human-readable summary and per-check fix suggestions for any failures.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ingest_data","description":"Ingest in-memory content as a string (use ingest_file for files on disk). The source identifier enables re-ingestion to update existing content. Returns { filePath, chunkCount, timestamp, fileTitle }.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ingest_directory","description":"Batch ingest all supported files in a directory. Recursively scans for code and document files under the given path, ingesting each one with AST-level (code) / semantic chunking. Returns per-file status plus totals. Use this for initial bulk ingestion or after deleting the database.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ingest_file","description":"Ingest a document file (PDF, DOCX, TXT, MD) into the vector database. Path must be absolute; re-ingesting the same path replaces its existing data. Returns { filePath, chunkCount, timestamp, fileTitle }.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_files","description":"List supported files (PDF, DOCX, TXT, MD) under the configured base directories and whether each is ingested. Returns { baseDirs, files, sources }; sources lists ingested items reported apart from the file scan, chiefly ingest_data content (web pages, clipboard, etc.).","write_action":false,"price_micros":0,"input_schema":null},{"name":"query_documents","description":"Search ingested documents with hybrid keyword + semantic matching. Returns results sorted by relevance, each with filePath, chunkIndex, text, fileTitle, score (0 = best, higher = worse), and source (for ingest_data items).","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_chunk_neighbors","description":"Read the chunks immediately before and after a query_documents result, in the same document, for more surrounding context. Pass chunkIndex from the result plus exactly one of filePath (ingest_file) or source (ingest_data). Returns the target chunk (isTarget: true) and its neighbors, ascending by chunkIndex; an out-of-range chunkIndex returns []. Defaults: before=2, after=2 (max 50 each).","write_action":false,"price_micros":0,"input_schema":null},{"name":"reindex_all","description":"Re-ingest ALL indexed files from scratch. Delete existing chunks, then re-ingest every previously-indexed file. Use after changing the embedding model, chunker parameters, or when the index is corrupted. This is a slow, destructive operation — prefer reindex_stale for routine updates.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reindex_stale","description":"Re-ingest all files whose disk contents have changed since the last ingestion (detected via mtime comparison). Returns the count of stale files that were re-ingested. Use when you know files have been modified but the index is out of date.","write_action":false,"price_micros":0,"input_schema":null},{"name":"status","description":"Get index status: { documentCount, chunkCount, memoryUsage (MB), uptime (s), ftsIndexEnabled, searchMode, instances }. When multiple instances are configured, pass instance name for per-instance status.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":88,"grade":"A","scanned_at":"2026-09-25T12:09:10.884Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-25T12:09:10.804Z","components":{"code":{"score":25,"max":25,"notes":["133 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":12,"max":15,"notes":["last push 64 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@damoqiongqiu/mcp-local-rag","version":"0.21.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":13,"publishedAt":"2026-07-23T15:20:50.960Z","repositoryUrl":"git+https://github.com/damoqiongqiu/mcp-local-rag.git","weeklyDownloads":43}],"repo":{"found":true,"owner":"damoqiongqiu","repo":"mcp-local-rag","archived":false,"pushedAt":"2026-07-23T15:20:07Z","stars":13,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/1829010?v=4","ownerCreatedAt":"2012-06-08T01:29:30Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/1829010?v=4&s=128","source":"github"},"presence":{"stars":13,"forks":0,"downloadsWeek":43,"license":"MIT","lastPushAt":"2026-07-23T15:20:07.000Z","score":29}}}},"grade_history":[],"reviews":[]}