Token导航 LogoToken导航

MCP Server · 搜索检索

Devdocs Rag MCP

一个本地MCP服务器,提供基于RAG的文档语义搜索功能,支持HTML、Markdown和PDF文档的索引和搜索,适用于开发者在Claude Code会话中快速查询文档。

stdio官方级别未说明来源级核验工具 5
文档处理PythonClaude开发工具

快速开始

作者 / 组织
ahardy42
提供方
ahardy42
运行时
Python

工具数量

5

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

Devdocs Rag MCP 属于搜索检索类 MCP Server,公开资料标注 5 个工具,通过stdio 本地进程接入,适配 Claude,有可以直接复制的安装命令;接入前先确认权限范围。

分类

搜索检索

传输方式

stdio

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

安装命令

uv run python -c "from devdocs_rag.server import mcp; print('OK')"

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 5 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

devdocs rag mcp

一个本地MCP服务器,为Claude Code提供RAG驱动的文档搜索。将任何文档语料库索引到本地向量数据库中,然后在Claude Code会话中进行语义搜索——没有外部API,没有网络暴露。

将任何文档语料库(HTML、Markdown或PDF)编入本地向量数据库,并在Claude Code会话中进行语义搜索。

______________________________________________________________________

运作原理

Documentation (HTML, PDF, Markdown)
        |
        v
  Ingestion pipeline
  (parse → chunk → embed → store)
        |
        v
   ChromaDB (local)
        |
        v
  FastMCP RAG Server    Claude Code

服务器在stdio上作为Claude Code的子进程运行。当Claude需要文档时,它会调用其中一个MCP工具(search_docs, list_collections等),其使用Nomic Embed Text V2在本地嵌入查询,并从ChromaDB返回排名块。

______________________________________________________________________

需求

______________________________________________________________________

设置

git clone https://github.com/your-username/devdocs-rag-mcp.git
cd devdocs-rag-mcp
uv sync --extra dev

验证安装:

uv run python -c "from devdocs_rag.server import mcp; print('OK')"

______________________________________________________________________

命令

以下三个uv命令可用 uv sync:

命令目的
uv run crawl-docs抓取网站并将HTML保存到 data/raw//
uv run ingest-docs将本地文件摄取到命名的ChromaDB集合中
uv run devdocs-rag-server启动MCP服务器(由Claude Code使用)

爬行

# Crawl a site — defaults to the seed URL's domain as the allowed prefix
uv run crawl-docs my-docs https://example.com/docs

# Multiple seed URLs (comma-separated)
uv run crawl-docs react-docs https://react.dev/learn,https://react.dev/reference

# Restrict crawling to a URL subtree
uv run crawl-docs react-docs https://react.dev/learn --allowed-prefix https://react.dev/learn

# Tune crawl behaviour
uv run crawl-docs my-docs https://example.com/docs --limit 200 --depth 3 --delay 1.0

文件保存到 data/raw// 作为平面HTML文件。作为第一个参数传递的集合名称将成为目录名称,并用作建议的 --collection 下一步的价值。

摄入

# Ingest a directory of HTML/Markdown/PDF files into a named collection
uv run ingest-docs data/raw/my-docs/ --collection my_docs

# Let the pipeline infer doc_type from path segments (api_reference, guide, etc.)
uv run ingest-docs data/raw/my-docs/ --collection my_docs --infer-doc-type

# Tag every file with a single doc type
uv run ingest-docs data/raw/my-docs/api/ --collection my_docs --doc-type api_reference

# Drop and re-ingest from scratch
uv run ingest-docs data/raw/my-docs/ --collection my_docs --drop

摄取是幂等的——重新运行会替换相同文件的现有块。

______________________________________________________________________

运行服务器

通过MCP Inspector进行交互式开发和工具测试:

uv run fastmcp dev inspector src/devdocs_rag/server.py

______________________________________________________________________

连接到克劳德代码

编辑 .mcp.json 在项目根目录下为您的机器设置正确的绝对路径,然后向Claude Code注册:

claude mcp add devdocs-rag --scope local

或者将Claude Code指向 .mcp.json 直接以项目根目录打开此目录。Claude Code会自动接收它。

验证服务器是否已注册:

claude mcp list
claude mcp get devdocs-rag

连接后,Claude Code可以调用 search_docs, list_collections, collection_stats, get_doc_context,以及 ingest_docs 直接在会议期间。

______________________________________________________________________

配置

所有设置都通过前缀为的环境变量进行控制 DEVDOCS_.把它们放进去 .mcp.json 在...之下 env,或在运行脚本之前导出它们。

变量默认值描述
DEVDOCS_CHROMA_DB_PATH./data/chromaChromaDB存储文件的位置
DEVDOCS_EMBEDDING_MODELnomic-ai/nomic-embed-text-v2-moe拥抱脸部模型ID
DEVDOCS_EMBEDDING_BACKENDsentence-transformerssentence-transformers 或 ollama
DEVDOCS_CHUNK_SIZE800每个区块的目标令牌
DEVDOCS_CHUNK_OVERLAP100连续块之间的重叠
DEVDOCS_DEFAULT_N_RESULTS5默认搜索结果数
DEVDOCS_LOG_LEVELINFO日志级别(仅限stderr)

______________________________________________________________________

项目结构

devdocs-rag-mcp/
├── pyproject.toml                  # Dependencies and entry points
├── .mcp.json                       # MCP server registration for Claude Code
│
├── src/devdocs_rag/
│   ├── server.py                   # FastMCP server — all tool definitions
│   ├── config.py                   # Configuration (env vars + defaults)
│   ├── embedding.py                # EmbeddingModel wrapper
│   ├── store.py                    # DocStore — ChromaDB wrapper
│   ├── ingest/
│   │   ├── pipeline.py             # Orchestrates load → chunk → embed → store
│   │   ├── loaders.py              # Document loaders (HTML, PDF, Markdown)
│   │   ├── chunkers.py             # Two-pass hybrid chunking strategy
│   │   └── metadata.py             # Metadata enrichment
│   └── utils/
│       └── logging.py              # Stderr-only logging setup
│
├── scripts/
│   ├── ingest.py                   # CLI for ingestion (uv run ingest-docs)
│   └── crawl_docs.py               # General-purpose website crawler (uv run crawl-docs)
│
├── tests/                          # pytest test suite
├── data/chroma/                    # ChromaDB persistent storage (gitignored)
└── data/raw/                       # Raw documentation files (gitignored)

______________________________________________________________________

检查数据库

在终端中交互式浏览集合(使用箭头键导航, s 搜索):

uv run chroma browse samsung_tv --path data/chroma

或者直接从Python查询:

# Collection summary
uv run python -c "
from devdocs_rag.embedding import EmbeddingModel
from devdocs_rag.store import DocStore
store = DocStore(embedding_model=EmbeddingModel())
s = store.collection_stats('samsung_tv')
print('docs:', s.doc_count, '| types:', s.doc_types)
" 2>/dev/null

# Manual search
uv run python -c "
from devdocs_rag.embedding import EmbeddingModel
from devdocs_rag.store import DocStore
store = DocStore(embedding_model=EmbeddingModel())
for r in store.search('samsung_tv', 'remote control key events', n_results=3):
    print(f'score={r.relevance_score:.3f}', r.content[:200])
" 2>/dev/null

______________________________________________________________________

添加新文档集

每个文档集都有一个独立的名称 收集 在ChromaDB中。集合是孤立的——添加React Native文档对Samsung TV集合没有影响,Claude可以搜索其中之一或两者。

第一步——获取文档

您需要将文档作为本地文件(HTML、Markdown或PDF)。如何获得它们取决于来源:

选项A:使用内置爬虫

uv run crawl-docs react-native https://reactnative.dev/docs/getting-started

保存到 data/raw/react-native/.使用 --allowed-prefix 为了将爬行限制到子树, --limit 限制页数,以及 --depth 以控制递归深度。

选项B:克隆文档仓库

许多项目在GitHub仓库中以Markdown的形式发布文档:

git clone --depth=1 https://github.com/sveltejs/svelte.dev data/raw/svelte

第二步——摄入一个命名集合

# Ingest with per-file doc_type inference (recommended)
uv run ingest-docs data/raw/react-native/ --collection react_native --infer-doc-type

# Or apply a single doc_type to everything
uv run ingest-docs data/raw/svelte/documentation/ --collection svelte --doc-type guide

这 --infer-doc-type 标志将每个文件分类为 api_reference, guide, spec等。当源站点使用标准目录结构时非常有用。使用 --doc-type 当所有文件类型相同或路径不结构化时。

摄入是幂等的——重新运行会更新现有的块。

步骤3——验证集合

# Check what was indexed
uv run python -c "
from devdocs_rag.embedding import EmbeddingModel
from devdocs_rag.store import DocStore
store = DocStore(embedding_model=EmbeddingModel())
s = store.collection_stats('react_native')
print('docs:', s.doc_count, '| types:', s.doc_types)
" 2>/dev/null

# Test a search
uv run python -c "
from devdocs_rag.embedding import EmbeddingModel
from devdocs_rag.store import DocStore
store = DocStore(embedding_model=EmbeddingModel())
for r in store.search('react_native', 'how to use FlatList', n_results=3):
    print(f'score={r.relevance_score:.3f}', r.content[:200])
" 2>/dev/null

步骤4——在Claude代码中使用它

无需重新启动服务器。新的集合可以通过现有的MCP工具立即获得:

search_docs("how do I handle navigation?", collection="react_native")
list_collections()   ← confirms the new collection is present

您可以使用以下命令搜索特定收藏 collection 参数,或省略它以一次搜索所有索引集合。

______________________________________________________________________

运行测试

uv run pytest tests/

# RAG accuracy evaluation
uv run python evals/run_eval.py

______________________________________________________________________

堆栈

组件选择
MCP框架FastMCP
矢量存储ChromaDB
嵌入模型标称嵌入文本V2(305M参数,本地)
嵌入运行时句子转换器
文档解析非结构化+BeautifulSoup
分块LangChain文本拆分器
包管理器uv

工具与能力

工具数量

5

资源数量

0

提示词数量

0

能力标签

文档搜索Python本地部署RAG本地向量数据库开发工具语义搜索

支持客户端

Claude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

查资料带出处

把网页、论文和文档的检索结果连同链接一起带回对话。

站内知识检索

在自己的文档库里做语义搜索,比关键词更贴题。

事实核对

交叉多个来源确认一条信息,减少模型凭记忆作答。

选择建议

值得选的地方

  • 只提供 5 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在搜索检索场景里让模型直接调用外部能力的人。
  • 已经在用 Claude 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Devdocs Rag MCP

MCP World · 本页

5stdio有1 个2026-05-17
Baidu Netdisk

MCP World

未标注未说明未标注1 个2026-05-17
Sequentialthinking

MCP.so

1SSE有2 个2026-05-17
Brave Search 433812ff

MCP World

2未说明未标注1 个2026-05-17
mindsdb (430e18)

MCP World

0未说明有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Devdocs Rag MCP 怎么安装?

公开资料给出的安装命令是 uv run python -c "from devdocs_rag.server import mcp; print('OK')",运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

Devdocs Rag MCP 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

Devdocs Rag MCP 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Devdocs Rag MCP 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

Devdocs Rag MCP 支持哪些客户端?

公开资料标注支持 Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP