mcpField
M
mcp-local-rag

mcp-local-rag

本地服务
github.com/damoqiongqiu开发工具1314 周前更新

关于 mcp-local-rag

mcp-local-rag 是面向 AI 编码工具的本地代码与文档检索 MCP 服务,结合 AST 分块、语义搜索和关键词加权定位内容。索引与搜索在本机运行,并提供代码定义和引用导航。

主要功能

  1. 01AST 代码与语义文档分块
  2. 02语义搜索与关键词加权
  3. 03符号定义和引用查找
  4. 04本地索引与离线搜索
  5. 05文件导入、管理和重建索引

适用场景

  1. 01在代码库中定位函数或 API
  2. 02搜索文档中的主题与术语
  3. 03查找符号定义及其引用
  4. 04通过命令行导入并查询文件

MCP 相关

提供 15 种 MCP 工具,涵盖文件导入、混合搜索、索引管理、代码导航和系统操作,供 AI 编码客户端调用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"damoqiongqiu-mcp-local-rag": {
"command": "npx",
"args": [
"-y",
"@damoqiongqiu/mcp-local-rag"
],
"env": {
"BASE_DIR": "<BASE_DIR>",
"BASE_DIRS": "<BASE_DIRS>",
"DB_PATH": "<DB_PATH>",
"CACHE_DIR": "<CACHE_DIR>",
"MODEL_NAME": "<MODEL_NAME>",
"MAX_FILE_SIZE": "<MAX_FILE_SIZE>",
"RAG_MAX_DISTANCE": "<RAG_MAX_DISTANCE>",
"RAG_GROUPING": "<RAG_GROUPING>",
"RAG_MAX_FILES": "<RAG_MAX_FILES>",
"CHUNK_MIN_LENGTH": "<CHUNK_MIN_LENGTH>",
"RAG_DEVICE": "<RAG_DEVICE>",
"RAG_DTYPE": "<RAG_DTYPE>",
"RAG_HYBRID_WEIGHT": "<RAG_HYBRID_WEIGHT>",
"RAG_WATCH": "<RAG_WATCH>",
"HF_ENDPOINT": "<HF_ENDPOINT>",
"HF_AUTO_MIRROR": "<HF_AUTO_MIRROR>",
"HTTPS_PROXY": "<HTTPS_PROXY>",
"HTTP_PROXY": "<HTTP_PROXY>"
}
}
}
}
启动命令npx -y @damoqiongqiu/mcp-local-rag
需要配置的环境变量
BASE_DIRBase directory for document storage (defaults to current working directory). Ignored when BASE_DIRS is set.
BASE_DIRSJSON array of base directories (e.g. '["/a","/b"]'). Takes precedence over BASE_DIR.
DB_PATHPath to LanceDB database directory (defaults to ./lancedb/)
CACHE_DIRDirectory where Transformers.js models are cached (defaults to ./models/)
MODEL_NAMEEmbedding model name (defaults to Xenova/all-MiniLM-L6-v2)
MAX_FILE_SIZEMaximum file size in bytes (defaults to 104857600 / 100MB)
RAG_MAX_DISTANCEMaximum 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)
RAG_GROUPINGGrouping 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
RAG_MAX_FILESMaximum 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.
CHUNK_MIN_LENGTHMinimum chunk length in characters (1-10000, defaults to 50). Chunks shorter than this threshold are filtered out during ingestion.
RAG_DEVICEExecution 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.
RAG_DTYPEEmbedding 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.
RAG_HYBRID_WEIGHTKeyword 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.
RAG_WATCHEnable automatic file watcher to detect changes and re-index modified files (true/1 to enable). Useful during active development.
HF_ENDPOINTExplicit 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.
HF_AUTO_MIRROREnable 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.
HTTPS_PROXYHTTPS proxy URL for downloading embedding models (e.g. http://proxy:8080). Required only if behind a corporate proxy.
HTTP_PROXYHTTP proxy URL for downloading embedding models. Fallback if HTTPS_PROXY is not set.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@damoqiongqiu/mcp-local-rag0.21.0

工具

16

收录的工具列表 · 更新于 2 周前

参数类型必填说明
limitnumber否最大结果数(默认 10,范围 1–20)。较低值更重视精确率,较高值更重视召回率。
querystring是搜索查询。保留用户的具体用词(用于关键词匹配);查询含糊时补充上下文(用于语义匹配)。
scopeany否可选的绝对路径前缀(单个字符串或列表,按并集处理),用于将结果限制为 filePath 等于该前缀或位于其下的文件。"/docs/api" 匹配 "/docs/api/auth.md",但不匹配 "/docs/apiv2"。必须是绝对路径(服务器操作系统格式);相对前缀不会匹配任何内容——可从先前查询返回的 filePath 推导前缀,或省略 scope。
instancestring否要搜索的实例名称。使用 "*" 搜索所有实例。配置了多个实例时必填。
searchModeenum否搜索模式预设。对于标识符和符号,使用 "exact"(hybridWeight=0.8);对于均衡的代码理解,使用 "code"(0.5);对于广泛的语义搜索,使用 "doc"(0.3)。此设置会覆盖各实例的 hybridWeight 默认值。exact | code | doc
fromTimestampstring否可选的 ISO 8601 时间戳——仅返回在此时间或之后摄取的片段。示例:"2026-07-01T00:00:00Z"。
untilTimestampstring否可选的 ISO 8601 时间戳——仅返回在此时间或之前摄取的片段。示例:"2026-07-10T23:59:59Z"。
highlightContextnumber否返回的片段中,每个查询词匹配项周围的上下文字符数(默认值 0 = 不高亮)。大于 0 时,结果会包含带高亮片段的 "matchContext" 数组。

详细介绍

MCP Local RAG — 深入表层之下进行搜索。

MCP Local RAG

GitHub stars npm version License: MIT TypeScript MCP Registry

🍴 从 shinpr/mcp-local-rag 分叉而来 — 原作者为 Shinsuke Kagawa

面向 AI 编码助手的本地代码智能引擎。通过 AST 级语义分块和关键词加权,精准定位函数、类和 API — 完全私密,无需任何配置。

📖 中文文档


目录

  1. 功能
  2. 快速开始
  3. 核心概念
  4. MCP 工具参考
  5. CLI
  6. 网络与模型
  7. 搜索调优
  8. 性能调优
  9. 配置参考
  10. 故障排查
  11. 开发

1. 功能

  • 智能双策略分块 — 通过 tree-sitter 进行 AST 级代码分块(在函数/类/方法边界处拆分,并注入作用域链和导入信息)。文档采用语义分块(按含义拆分,而非按字符数)。
  • 语义搜索 + 关键词加权 — 先进行向量搜索,再通过关键词匹配提高精确词项的权重。useEffect、错误代码、类名等的排名会更高,而不只是依靠语义猜测。
  • 15 个 MCP 工具 — 在一个服务中整合摄取、搜索、管理、代码智能和系统操作。
  • AST 代码智能 — find_definition 和 find_references 可实现 IDE 级代码导航,依托摄取时捕获的 tree-sitter 元数据。
  • 三级镜像自动回退 — huggingface.co → hf-mirror.com → modelscope.cn,中国大陆用户无需配置。
  • 完全在本地运行 — 无需 API 密钥,无需云服务,数据不会离开你的设备。首次下载模型后即可离线使用。
  • 零门槛设置 — 一条 npx 命令即可。无需管理 Docker、Python 或服务。

2. 快速开始

将 BASE_DIR 设置为你要搜索的文件夹(多个根目录请使用 BASE_DIRS — 参见配置)。

2.1 配置 AI 编码工具

Cursor — ~/.cursor/mcp.json:

{
  "mcpServers": {
    "local-rag": {
      "command": "npx",
      "args": ["-y", "@damoqiongqiu/mcp-local-rag"],
      "env": { "BASE_DIR": "/path/to/your/project" }
    }
  }
}

Claude Code:

claude mcp add local-rag --scope user --env BASE_DIR=/path/to/your/project -- npx -y @damoqiongqiu/mcp-local-rag

Codex — ~/.codex/config.toml:

[mcp_servers.local-rag]
command = "npx"
args = ["-y", "@damoqiongqiu/mcp-local-rag"]

[mcp_servers.local-rag.env]
BASE_DIR = "/path/to/your/project"

WorkBuddy — 设置 → 自定义连接器 → 添加:

{
  "mcpServers": {
    "local-rag": {
      "command": "npx",
      "args": ["-y", "@damoqiongqiu/mcp-local-rag"],
      "env": { "BASE_DIR": "/path/to/your/project" }
    }
  }
}

⚠️ WorkBuddy:添加后,必须在自定义连接器列表中点击“信任”,否则服务会被静默阻止。

2.2 CLI 快速入门

无需 MCP — 直接在终端中运行:

npx @damoqiongqiu/mcp-local-rag ingest ./src/
npx @damoqiongqiu/mcp-local-rag query "auth middleware"
npx @damoqiongqiu/mcp-local-rag status

就这样。无需 Docker、Python 或服务配置。

2.3 首次项目索引
You: "Index the src directory of this project"
Assistant: Successfully ingested 156 files (2,847 chunks created)

You: "Where's the middleware that handles API rate limiting?"
Assistant: src/middleware/rateLimiter.ts — useRateLimiter(), lines 42–89

You: "How is the database connection pool configured?"
Assistant: src/config/database.ts — createPool() default max: 20, idle: 5

3. 核心概念

3.1 双策略分块

分块策略按文件类型选择:

  • 代码文件(50 多种语言)— CodeChunker 通过 tree-sitter AST 解析源代码,并在结构边界(函数、类、方法)处分块。每个分块的 contextualizedText 都包含其作用域链和导入上下文,以实现精准的语义搜索。
  • 文档(PDF/DOCX/TXT/MD/HTML)— SemanticChunker 将内容拆分为句子,再按嵌入相似度分组,以找到自然的主题边界。Markdown 代码块会保持完整 — 绝不会在代码块中间拆分。
3.2 混合搜索

搜索 = 语义相似度 + 关键词加权(RAG_HYBRID_WEIGHT,默认值为 0.6):

  1. 查询向量化 → 语义搜索找到最相关的分块
  2. 应用质量筛选(距离阈值、分组)
  3. 关键词匹配提高精确术语的排名

像 useEffect 这样的精确标识符不会被语义近似结果淹没。

3.3 安全边界

只有位于 BASE_DIR / BASE_DIRS 下的文件才能用于导入、列出、删除或读取邻近内容。解析到根目录之外的符号链接会被拒绝。也会阻止具有相同前缀的同级路径(例如,根目录为 /foo/bar 时的 /foo/barista)— 防止路径遍历攻击。


4. MCP 工具参考

15 个工具分为 5 类。

4.1 导入工具
#工具用途示例
1ingest_file单个文件(PDF/DOCX/TXT/MD/代码)"Ingest ./docs/api-spec.pdf"
2ingest_data内存中的文本/HTML"Fetch this page and ingest the HTML"
3ingest_directory批量导入目录"Ingest everything under ./src"

ingest_file 支持 50 多种代码语言。PDF 支持可选的视觉模式 — 本地 VLM 会为包含图表的页面生成说明文字,让视觉内容也可供搜索。提供两种配置:

配置模型缓存适用场景
fast(默认)SmolVLM-256M~250 MB轻量视觉索引
qualityQwen2.5-VL-3B-ONNX~2.9 GB含有图片内文字的图表
# CLI
npx @damoqiongqiu/mcp-local-rag ingest ./spec.pdf --visual --visual-quality quality
# MCP
"Ingest ./spec.pdf with visual: true, visualQuality: 'quality'"

ingest_data 依次执行 Readability → Markdown → 索引。非常适合导入 AI 助手获取的网页内容。重新导入会自动替换旧版本。

ingest_directory 递归扫描、遵循 .gitignore,并通过 MCP 通知实时显示进度。

4.2 搜索工具
#工具用途关键参数
4query_documents混合搜索(语义 + 关键词)query、limit、scope、highlightContext、fromTimestamp
5read_chunk_neighbors扩展搜索结果周围的上下文filePath、chunkIndex、before、after

query_documents — scope 接受单个路径前缀或列表,将结果限制在相应子树中。highlightContext 返回匹配词周围的片段。fromTimestamp / untilTimestamp 支持按时间范围筛选。

read_chunk_neighbors — 默认读取前后各 2 个分块(类似 grep -C 2),每侧最多 50 个。响应会将目标分块标记为 isTarget: true。

4.3 管理工具
#工具用途
6list_files列出文件及其摄取状态(ingested: true/false)
7delete_file按文件路径或源 URL 删除
8status索引统计信息:文档、分块、内存、搜索模式

list_files 支持使用 scope 过滤,其前缀匹配规则与搜索相同。在大型目录中,scope 可通过跳过范围外的子树来加快扫描速度。

4.4 代码智能
#工具用途输入
9find_definition定位符号定义(文件、行范围、作用域)完整符号名称
10find_references查找所有引用(导入 + 文本提及)符号名称

这两个工具依赖摄取时由 tree-sitter 提取的 AST 元数据(导入、实体、作用域链)。仅适用于使用 CodeChunker 摄取的代码文件——在 v0.18.7 之前摄取的文件缺少此元数据,需要运行 reindex_all 重新构建。

find_references 使用两阶段策略:(1)在 codeMeta.imports 中精确匹配 →(2)使用 FTS 全文搜索符号名称。结果按(filePath、chunkIndex)去重,导入引用排在前面。

4.5 系统工具
#工具用途
11config运行时热读/写配置——无需重启
12dedup_check使用 SHA256 + Jaccard 相似度检测重复文件
13export_index将整个索引导出为 JSON(用于备份或迁移)
14reindex_all完整重新分块 + 重新嵌入(更换模型后使用)
15reindex_stale仅重新摄取磁盘上已修改的文件(增量同步)

config 可热切换 hybridWeight、modelName、cacheDir、baseDir/baseDirs 等。切换模型时会自动释放旧的 Embedder 并初始化新的 Embedder——注意:更换模型会改变嵌入空间,需要运行 reindex_all。

dedup_check 在单体代码库中特别有用——spot ↔ futures 镜像代码通常会被标记为相似度 1.0。


5. 命令行

5.1 基本命令
# Ingest
npx @damoqiongqiu/mcp-local-rag ingest ./src/

# Search (with scope)
npx @damoqiongqiu/mcp-local-rag query "auth middleware"
npx @damoqiongqiu/mcp-local-rag query "auth" --scope /docs/api

# Context expansion
npx @damoqiongqiu/mcp-local-rag read-neighbors --file-path /abs/path.md --chunk-index 5

# Management
npx @damoqiongqiu/mcp-local-rag list --scope /docs/api
npx @damoqiongqiu/mcp-local-rag status
npx @damoqiongqiu/mcp-local-rag delete ./docs/old.pdf
npx @damoqiongqiu/mcp-local-rag delete --source "https://..."

query、read-neighbors、list、status、delete 会将 JSON 输出到 stdout(可通过管道传给 jq)。ingest 会将进度输出到 stderr。

全局选项(--db-path、--cache-dir、--model-name)应放在子命令之前:

npx @damoqiongqiu/mcp-local-rag --help

⚠️ CLI 不会读取你的 MCP 客户端配置(mcp.json 等)。请通过标志或环境变量进行配置。

5.2 CLI 配置

标志——全局选项放在前面,子命令选项放在后面:

npx @damoqiongqiu/mcp-local-rag --db-path ./my-db query "auth" --base-dir ./docs

--base-dir 可在 ingest 和 list 中重复使用:

npx @damoqiongqiu/mcp-local-rag ingest --base-dir ./docs --base-dir ./specs ./docs/readme.md

环境变量:

export DB_PATH=./my-db
export BASE_DIR=./docs
npx @damoqiongqiu/mcp-local-rag query "auth"

对于多个根目录,请使用 BASE_DIRS(JSON 数组):

export BASE_DIRS='["/Users/me/work","/Users/me/specs"]'

优先级:CLI 标志 > 环境变量 > 默认值。


6. 网络与模型

6.1 镜像自动检测

中国大陆无法访问 huggingface.co。内置三级镜像链,并支持自动回退:

huggingface.co → hf-mirror.com → modelscope.cn

启动时会对每个镜像进行 HEAD 探测(超时 3 秒)。系统会选择第一个可访问且 API 完整的镜像:

  • 使用代理时(HTTPS_PROXY)→ 直连 huggingface.co
  • 未使用代理时 → 自动切换到 hf-mirror.com
  • hf-mirror API 不可用时 → 回退到 modelscope.cn

无需手动设置 HF_ENDPOINT。 如需手动控制:

环境变量效果
HF_AUTO_MIRROR=false禁用自动检测,仅使用 huggingface.co
HF_ENDPOINT=<url>强制使用指定镜像,跳过自动检测

v0.18.5+ 使用 setGlobalDispatcher(ProxyAgent)——所有 Node.js 22 网络请求都会通过代理。

6.2 模型选择

6 种嵌入模型,通过 model-registry 解析别名:

模型别名大小维度
Xenova/all-MiniLM-L6-v2(默认)mini~90 MB384
Xenova/all-MiniLM-L12-v2—~120 MB384
Xenova/bge-small-en-v1.5bge-small~130 MB384
Xenova/all-mpnet-base-v2mpnet~420 MB768
Xenova/bge-base-en-v1.5—~420 MB768
Xenova/multi-qa-mpnet-base-dot-v1multi-qa~420 MB768

建议:代码仓库 → 默认模型 + 较高的关键词权重;多语言内容 → 可考虑 embeddinggemma-300m;科学论文 → 可考虑 allenai-specter。

RAG_DTYPE 控制 ONNX 精度(fp32 / fp16 / q8)。默认值为 fp32;内存受限时使用 q8。⚠️ 更换模型或 dtype 需要删除 DB_PATH 并重新建立索引。

6.3 文件监视

设置 RAG_WATCH=true——服务会在 baseDirs 上启动递归 fs.watch(防抖 500ms):

  • 创建/修改文件 → 自动执行 ingest_file
  • 删除文件 → 自动执行 delete_file

适用于内容会频繁变更的项目。


7. 搜索调优

变量默认值说明
RAG_HYBRID_WEIGHT0.6关键词权重:0 = 仅语义搜索,1 = 仅关键词搜索
RAG_GROUPING未设置similar = 仅返回排名最高的分组,related = 返回排名前 2 的分组
RAG_MAX_DISTANCE未设置过滤相关性较低的结果(例如,0.5)
RAG_MAX_FILES未设置结果仅限排名前 N 的文件

面向代码的调优(推荐默认设置):

{ "RAG_HYBRID_WEIGHT": "0.7", "RAG_GROUPING": "similar" }

面向文档的调优:

{ "RAG_HYBRID_WEIGHT": "0.4", "RAG_GROUPING": "related" }

关键词权重在语义过滤之后应用——提升精确度,同时避免引入噪声。


8. 性能调优

除了搜索准确度,推理性能也可配置。所有优化项均通过环境变量设置,无需修改代码。

8.1 量化精度(RAG_DTYPE)

控制 ONNX 模型的推理精度。对于 all-MiniLM-L6-v2,有以下三种级别:

值模型大小速度内存精度损失适用场景
fp32(默认)~90 MB基准~80 MB无首次使用,追求最高准确度
fp16~45 MB快 20-30%~45 MB可忽略日常使用的推荐选择
q8~45 MB快 30-50%~45 MB较小内存有限、大型项目
"env": { "RAG_DTYPE": "fp16", "BASE_DIR": "..." }

⚠️ 更改 dtype 需要重建索引——嵌入空间彼此不兼容。

验证是否生效: 重启后,通过 MCP 调用 status 并检查 dtype 字段。它应与你的设置一致(例如,"fp16")。

如果失败: 启动时会抛出 EmbeddingError,并列出支持的 dtype。常见原因:模型未提供 q8 版本——请改用 fp16。

8.2 执行设备(RAG_DEVICE)

控制使用哪个 ONNX Runtime 后端:

值后端备注
cpu(默认)CPU最稳定,无需额外依赖
webgpuGPU(WebGPU)⚠️ 实验性:M1/M2 Mac 使用 Metal,NVIDIA 使用 Vulkan
"env": { "RAG_DEVICE": "webgpu", "RAG_DTYPE": "fp16", "BASE_DIR": "..." }

⚠️ 更换设备会改变嵌入空间——需要重建索引。可与 RAG_DTYPE 组合使用——fp16 + webgpu 可同时缩小模型并提升 GPU 速度。

验证是否生效: MCP 启动日志应显示 Loading model on device "webgpu"。status 应显示 device: "webgpu"。

如果失败:

  • 启动时出现 Unsupported device → 你的环境中无法使用 WebGPU,请恢复为 "cpu"
  • 成功启动但推理时崩溃 → 可能是 ONNX WebGPU 后端错误,请恢复为 "cpu"
  • 只需删除 RAG_DEVICE 行即可回退——其他配置不受影响
8.3 最小分块长度(CHUNK_MIN_LENGTH)

摄取时过滤掉短于此值的分块。默认值 50 几乎会保留所有内容;200 会过滤掉 30-40% 的噪声片段。

"env": { "CHUNK_MIN_LENGTH": "200", "BASE_DIR": "..." }

⚠️ 这是个粗糙的过滤手段——较短但重要的代码(例如配置常量)也可能被丢弃。需要重建索引。最佳范围:100-200。

8.4 推荐配置
场景配置
日常开发RAG_DTYPE=fp16
大型项目 + M1/M2 MacRAG_DTYPE=fp16, RAG_DEVICE=webgpu
内存受限RAG_DTYPE=q8

所有更改都需要执行 reindex_all(MCP)或重新运行 ingest(CLI)。如果出现问题,删除出错的环境变量行即可恢复默认值。


9. 配置参考

MCP 服务:仅使用环境变量(通过 MCP 客户端的 env 块)。 CLI:环境变量 + 对应的标志(标志优先)。

环境变量CLI 标志默认值描述
BASE_DIR--base-dir(可重复)cwd文档根目录(安全边界)
BASE_DIRS—未设置根目录的 JSON 数组,会覆盖 BASE_DIR
DB_PATH--db-path./lancedb/向量数据库路径
CACHE_DIR--cache-dir./models/模型缓存——建议使用绝对路径
MODEL_NAME--model-nameall-MiniLM-L6-v2HuggingFace 模型 ID
MAX_FILE_SIZE--max-file-size100 MB最大文件大小(字节)
CHUNK_MIN_LENGTH--chunk-min-length50最小分块长度(1–10000 个字符)
RAG_DEVICE—cpuONNX 执行设备
RAG_DTYPE—fp32量化(fp32/fp16/q8)
HTTPS_PROXY—未设置模型下载代理。v0.18.5+ 全局生效
HF_ENDPOINT—huggingface.co手动指定镜像
HF_AUTO_MIRROR—true自动检测开关
RAG_WATCH—未设置文件监视(true/1)

根目录解析顺序:CLI --base-dir > BASE_DIRS > BASE_DIR > cwd。BASE_DIRS 和 BASE_DIR 不会合并。BASE_DIRS 仅支持 JSON 数组语法——有意拒绝分隔符语法。


10. 故障排除

模型下载失败

症状:fetch failed,status 显示 searchMode: fts 而不是 hybrid。

解决方案:

  1. 网络受限(中国大陆等)——使用代理:

    "env": { "HTTPS_PROXY": "http://127.0.0.1:7890" }
    

    在 MCP 客户端配置中设置,而不是在终端中设置。v0.18.5+ 通过 setGlobalDispatcher 全局生效。

  2. 自动镜像回退(v0.18.2+,默认)——三级探测。通常无需任何配置即可正常工作。

  3. 手动覆盖——设置 HF_ENDPOINT=https://modelscope.cn,或将模型手动下载到 CACHE_DIR。

  4. npx 缓存了旧版本——清理并重启:

    rm -rf ~/.npm/_npx/
    
MCP 客户端看不到工具
  1. 检查配置文件语法
  2. WorkBuddy 用户:确认已点击“Trust”按钮
  3. 完全重启客户端(macOS 上按 Cmd+Q)
  4. 直接测试:npx @damoqiongqiu/mcp-local-rag 应能无错误运行
重建索引

切换模型后或数据库损坏时:

  1. 停止 MCP 服务
  2. 删除 DB_PATH 目录(默认 ./lancedb/)——安全,不会影响源文件
  3. 重启 MCP → 自动创建全新数据库
  4. 批量重新摄取:
    npx @damoqiongqiu/mcp-local-rag ingest ./src/
    
常见问题
  • 隐私? 是。模型下载后,任何内容都不会离开你的设备。
  • 离线使用? 可以,模型缓存后即可离线使用。
  • 支持哪些格式? 50 多种代码语言 + PDF/DOCX/TXT/MD/HTML。不支持 Excel、PPT 或图像。
  • GPU 加速? 可通过 RAG_DEVICE 选择启用。支持情况取决于你的系统、Node.js 版本和 ONNX 后端。
  • 备份? 复制 DB_PATH 目录即可。

11. 开发

git clone https://github.com/damoqiongqiu/mcp-local-rag.git
cd mcp-local-rag
pnpm install
pnpm test              # All tests
pnpm run type-check    # TypeScript check
pnpm run check:fix     # Lint + format
pnpm run check:all     # Full CI pipeline
src/
  index.ts      # Entry point
  server/       # MCP tool handlers
  cli/          # CLI subcommands
  parser/       # PDF/DOCX/TXT/MD/code parsing
  chunker/      # SemanticChunker + CodeChunker
  embedder/     # Transformers.js embeddings
  vectordb/     # LanceDB operations
  utils/        # Shared utilities (security, scan, scope)
  __tests__/    # Test suites

许可证

MIT 许可证。可免费用于个人和商业用途。

致谢

基于 Model Context Protocol(Anthropic)、LanceDB 和 Transformers.js 构建。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。