tech-doc-mcp
Provides LLM-based document cleaning and embedding generation through OpenAI-compatible APIs for indexing and searching local technical documentation.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tech-doc-mcpsearch for Express.js middleware examples"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
tech-doc-mcp
本地技术文档 MCP 服务器 —— 为 AI Agent 提供最新框架文档的实时混合搜索能力。
解决 LLM 训练数据滞后导致的过时 API 调用问题:把框架官方文档爬取到本地,经 LLM 清洗、分块、建立向量索引(基于去代码正文),通过 MCP 协议暴露给 Claude Code 等 Agent,查询时返回最新、可溯源的文档片段。
特性
混合搜索 —— ChromaDB 语义检索为主干,关键词按 presence + 饱和做乘性加权重排(boost-only),兼顾语义相关与精确 API 名匹配。设计依据见
docs/search-fusion-redesign.md抗代码噪声 —— 向量基于去代码正文,关键词在含代码全文上按"是否出现"而非"出现几次"计分,免疫代码符号高频膨胀
面向 Agent 的极简工具 —— 只需 4 个 MCP 工具即可覆盖搜索/阅读/浏览
LLM 文档清洗 —— 自动把爬虫原始 HTML/Markdown 清洗为干净正文,3 并发 + 指数退避重试
多源多版本共存 —— 每个文档源独立 Collection,新旧版本并存,搜索取最新版本
OpenAI 兼容 —— LLM 与 Embedding 均走 OpenAI 兼容接口,可自由替换服务商
Related MCP server: QMD - Query Markdown
架构
文档处理管线:
docs/{source}/raw/*.md ← 爬虫原始输出
│ cleaner.py (LLM 清洗)
▼
docs/{source}/clean/*.md ← 干净 Markdown
│ loader → chunker → embedding → ChromaDB
▼
data/chroma/ ← 向量索引 + 全文存储
搜索链路 (Agent 视角):
search_docs(query, source, keywords, limit)
├─ query → ChromaDB 语义搜索 → top-N 候选(主干)
├─ keywords → 候选内 presence + 饱和计分(boost-only)
└─ 乘性融合 sem·(1+λ·kw) → 按 path 去重 → top-K 返回安装
需要 Python 3.12+ 和 uv。
git clone git@github.com:cy-wwyy/tech_doc_mcp.git
cd tech_doc_mcp
uv sync配置
复制模板并填入你的 API Key(支持 ${ENV_VAR} 占位符):
cp config.yaml.example config.yaml # LLM 与 Embedding 的 api_base/model/dimensions
cp .env.example .env # 填入 LLM_API_KEY / EMBEDDING_API_KEYllm—— 文档清洗用(如 DeepSeek、任意 OpenAI 兼容接口)embedding—— 向量化用,dimensions需与所选模型匹配
使用
本项目有两个完全独立的阶段,角色和目标不同——别混淆:
阶段 | 谁来做 | 目标 |
① 构建文档库 | 维护者(开发阶段) | 爬取 → 清洗 → 索引 → 启动服务,产出可搜索的文档库 |
② 检索文档 | 最终用户(使用阶段) | Claude Code 连上已配好的 MCP,日常对话中实时查最新文档 |
阶段 ① 只在新增/更新文档源时做一次;做完之后,所有使用者都停留在阶段 ②。
阶段一 · 构建文档库(维护者)
把某个框架官网变成本地可搜索的索引。两种方式二选一:
方式 A:对话驱动(推荐) —— 配好 skill 后全程自然语言,无需记命令。
一次性配置 skill(把仓库里的 skills/add-docs 挂到 Claude Code 技能目录):
mkdir -p .claude/skills
# 软链接(推荐,仓库更新后自动同步);或用 cp -r 复制
ln -s ../../skills/add-docs .claude/skills/add-docs之后对话即可:
你说 | Agent 做的事 |
| 分析站点结构 → 生成爬虫脚本 → 爬取到 |
“清洗 fastapi 文档” | 调用 |
“把 fastapi 索引一下” | 执行 |
“启动文档服务” | 拉起 MCP Server,供阶段 ② 检索 |
方式 B:手动 CLI —— 逐条执行等价命令:
# 1. 爬取文档源 → docs/{source}/raw/(脚本由 skills/add-docs 工作流生成)
uv run python scripts/crawlers/<script>.py
# 2. LLM 清洗 raw/ → clean/
uv run python -m tech_doc_mcp.processor.cleaner <source_name>
# 3. 索引 clean/ → 分块 → embedding → ChromaDB
uv run tech-doc-mcp index <source> --version 0.1.0
# 4. 启动 MCP Server(默认 streamable-http://127.0.0.1:8000)
uv run tech-doc-mcp serve阶段二 · 检索文档(最终用户)
前提:阶段 ① 已产出索引,且 MCP Server 正在 serve。
把本地 MCP Server 加入 Claude Code 的 MCP 配置后,日常编码对话中 Agent 会自动调用以下工具查最新文档,使用者无感、无需记任何命令:
工具 | 用途 |
| 列出已索引的文档源(name / version / chunks) |
| 混合搜索,返回 rank / path / score / text |
| 读取完整页面(最多 8000 字符) |
| 浏览目录结构 |
技术栈
FastMCP · ChromaDB · OpenAI SDK · BeautifulSoup / markdownify · httpx · Typer
项目文档
skills/add-docs/SKILL.md—— 文档爬取工作流:站点分析 → 页面过滤 → 生成爬虫脚本ROADMAP.md—— 迭代路线图:已完成项 + 待处理项docs/DEVLOG.md—— 开发日志
说明
源文档(
docs/*/raw、docs/*/clean)与索引数据(data/)不纳入版本库,可按上述流程重新生成。项目处于
0.1.0早期阶段,搜索质量验证体系、Web 管理界面、多源搜索等仍在规划中,详见 ROADMAP。
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/cy-wwyy/tech_doc_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server