@devilsdev/rag-mcp-服务器
一个 MCP 磁共振 用于文档的服务器。 Claude或其他MCP客户端可以搜索这些文件
npx @devilsdev/rag-mcp-server ./docs
它在启动时会索引文件夹, 并配有离线的 TF- IDF 嵌入器和一个内存取器 @devilsdev/ rag- pipeline- utils。它不需要 API 键、 数据库和网络。 助手是语言模型,所以服务器从不呼叫一个.
要求节点.js 22或后.
连接客户端
服务器在stdio上说出MCP,所以由客户端启动. 使用您的文件夹的绝对路径 .
克劳德代码 :
claude mcp add docs -- npx -y @devilsdev/rag-mcp-server /absolute/path/to/docs
Claude 桌面、光标和其他客户端 使用一个 mcpServers 配置( 对于 Claude 桌面: 设置 —— 开发者 —— 编辑配置, 然后重新启动) :
{
"mcpServers": {
"docs": {
"command": "npx",
"args": ["-y", "@devilsdev/rag-mcp-server", "/absolute/path/to/docs"]
}
}
}
然后问一些你的文件回答, 比如"雇员有多少假期?".
工具
search_documents
| 投入 | 类型 | 说明 |
|---|---|---|
query | 需要的字符串 | 用自然语言寻找什么(最多1万个字符,或 --max-question-chars(中文(简体) ) |
topK | 整数, 1–20 | 要返回的通道( 默认 4 或 --top-k(中文(简体) ) |
回返 { passages: [{ id, source, score, text }] },最好先作为结构化内容和JSON文本. source 是相对于文件夹的文件,并且 id 实值 <source>#<chunk number>。与查询没有条件的通道被忽略.
check_answer
| 投入 | 类型 | 说明 |
|---|---|---|
answer | 需要的字符串 | 检查的答案( 最多50,000个字符) |
question | 字符串 | 它回答的问题; 当 sources 省略(最多为一万个字符) |
sources | 字符串数组或 { id, text } | 最多为100个,每个最多为20万个字符;省略搜索索引文档 |
topK | 整数, 1–20 | 返回时的通道 sources 删除 |
运行库的 checkAnswer 返回时 { grounded, groundedness, unsupported, citations, sources }:是否支持每个句子,支持句子的比例(0至1),不支持句子,支持每个句子的来源的ID,以及被检查的来源. 检查是名词化的,不做模型调用,所以正确的释法可以不支持地回来;把它当作再看一看的旗帜,而不是判决.
两个工具都是只读的. Passage 文本是您文件中的内容,工具描述告诉客户端将其作为数据,而不是指令. 文件仍然可以包含用于操纵助手的文字,所以索引文件夹是您信任的.
文件
标记下 (M).md, (中文(简体) ), .markdown), HTML (英语:.html, (中文(简体) ), .htm,仅可见文本), CSV (.csv,每行一行)和文本(.txt)文件,在文件夹及其子文件夹中,处理库装入器处理它们的方式;散文被分为句子块,最多可有500个字符. 其他档案, node_modules 财务报告和审定财务报表 .git 被跳过。 索引生活在内存中,每一次服务器启动后都会被重建,因此在修改文档后重新启动客户端的服务器.
选项
rag-mcp-server <folder> [--top-k <n>] [--embedder local] [--max-answer-chars <n>]
[--max-source-chars <n>] [--max-question-chars <n>] [--max-sources <n>]
[--max-clause-pairs <n>] [--max-sentence-source-chars <n>] [--check-timeout-ms <n>]
[--max-concurrent-checks <n>]
| 选项 | 默认 | 含义 |
|---|---|---|
--top-k <n> | 4 | 客户不通过时每通电话都通过 topK |
--embedder <name> | local | 嵌入器; local (TF-IDF,下线)是唯一一个 |
--max-answer-chars <n> | 50000 | 最长 answer check_answer 接受( env ) RAG_MCP_MAX_ANSWER_CHARS(中文(简体) ) |
--max-source-chars <n> | 200000 | 最长的源道 check_answer 接受( env ) RAG_MCP_MAX_SOURCE_CHARS(中文(简体) ) |
--max-question-chars <n> | 10000 | 最长 question 或者说 query (单位:千美元) RAG_MCP_MAX_QUESTION_CHARS(中文(简体) ) |
--max-sources <n> | 100 | 多数 sources 百分比 check_answer 呼叫( env) RAG_MCP_MAX_SOURCES(中文(简体) ) |
--max-clause-pairs <n> | 2000000 | 大多数回答单词×源条款 check_answer 比较(env) RAG_MCP_MAX_CLAUSE_PAIRS(中文(简体) ) |
--max-sentence-source-chars <n> | 3000000 | 大多数回答句子×源字符 check_answer 比较(env) RAG_MCP_MAX_SENTENCE_SOURCE_CHARS(中文(简体) ) |
--check-timeout-ms <n> | 10000 | 最长a check_answer 检查在停止前可能运行 (env) RAG_MCP_CHECK_TIMEOUT_MS(中文(简体) ) |
--max-concurrent-checks <n> | 2 | 多数 check_answer 检查一次;最多8次等待(env) RAG_MCP_MAX_CONCURRENT_CHECKS(中文(简体) ) |
一个超过限制的工具调用被拒绝,错误地命名了升起的旗帜. 一面旗帜胜过其环境变量;每面必须至少为一整数. 当你用代码构建服务器时, createServer(index, { maxAnswerChars, maxSourceChars, maxQuestionChars, maxSources, maxClausePairs, maxSentenceSourceChars, checkTimeoutMs, maxConcurrentChecks }) 相同的限制. maxClausePairs 财务报告和审定财务报表 maxSentenceSourceChars 拒绝需要很长时间才能检查的输入。 每张支票都用一条工线运行,最多512 MB的堆积,一旦通过就会停止 checkTimeoutMs; 服务器同时继续接听其他电话. 最多 maxConcurrentChecks 检查一次; 最多8次等待, 花在等待的时间不算向 checkTimeoutMs。超出这个范围的一个电话被拒绝,“太多的检查/回答电话等待;很快再试一次。”
服务器日志到 stderr 的所有内容; stdout 带有协议 .
构建你自己
对于其他嵌入器(OpenAI, Ollama),一个持久的索引或矢量数据库,从 MCP 服务器实例,它从库中以大约100行建立同一种服务器.
联合国 https://devilsdev.github.io/rag-pipeline-utils/ 页面存档备份,存于互联网档案馆