章节 01
导读 / 主楼:DocShark:为AI助手打造的可搜索文档知识库MCP服务器
DocShark是一个基于MCP协议构建的文档爬取与索引工具,能够将任意文档网站转换为本地可搜索的知识库,支持FTS5全文搜索和BM25排序,让AI助手轻松查询最新技术文档。
正文
DocShark是一个基于MCP协议构建的文档爬取与索引工具,能够将任意文档网站转换为本地可搜索的知识库,支持FTS5全文搜索和BM25排序,让AI助手轻松查询最新技术文档。
章节 01
DocShark是一个基于MCP协议构建的文档爬取与索引工具,能够将任意文档网站转换为本地可搜索的知识库,支持FTS5全文搜索和BM25排序,让AI助手轻松查询最新技术文档。
章节 02
随着大语言模型和AI编程助手的普及,开发者们越来越依赖Claude、Cursor、GitHub Copilot等工具来辅助编码。然而,这些AI助手面临一个共同的问题:它们的知识库有截止日期,无法实时获取最新的技术文档、API变更或框架更新。
当开发者询问"React 19的新特性是什么"或"这个库的最新API怎么用"时,AI助手往往只能基于训练数据中的旧知识进行回答,可能导致代码建议过时甚至错误。虽然一些工具支持联网搜索,但搜索结果的质量参差不齐,且无法针对特定文档网站进行深度索引。
章节 03
DocShark是一个开源的MCP(Model Context Protocol)服务器,专门设计用于解决AI助手的技术文档获取难题。它由开发者Michael Obele基于TMCP(TypeScript MCP)构建,能够将任意公开的技术文档网站爬取、索引并转换为本地可搜索的知识库。
与传统的文档浏览方式不同,DocShark采用SQLite数据库配合FTS5(Full-Text Search)虚拟表技术,实现毫秒级的全文搜索响应。同时,它使用BM25排序算法确保搜索结果的相关性,让AI助手能够快速定位到最相关的文档内容。
章节 04
DocShark的设计充分考虑了现代文档网站的复杂性和AI助手的实际需求,其核心功能包括:
智能爬取引擎
DocShark采用分层爬取策略,首先尝试通过sitemap.xml发现所有页面,如果不可用则回退到BFS(广度优先)链接爬取。对于使用React、Vue等前端框架构建的单页应用(SPA),DocShark能够自动检测空壳页面,并在安装puppeteer-core后无缝切换到浏览器渲染模式,实现零配置自动回退。
内容提取与清洗
借助Mozilla的Readability算法和Turndown库,DocShark能够从复杂的网页布局中提取主要内容,过滤掉导航栏、侧边栏、广告等干扰元素,并将HTML转换为干净的Markdown格式。这种处理方式既保留了文档的结构化信息,又便于AI助手理解和处理。
语义分块与上下文保留
DocShark不是简单地将整个页面存储为一大段文本,而是基于标题层级进行智能分块,每个块包含500-1200个token,并自动附加上下文标题信息。这种分块策略确保搜索命中时返回的片段具有完整的语义上下文,避免AI助手收到断章取义的内容。
高性能搜索与MCP集成
底层使用SQLite + FTS5构建的索引系统支持布尔查询、短语匹配和前缀搜索,BM25排序算法根据词频和文档长度计算相关性分数。DocShark提供四个标准MCP工具:manage_library(管理文档库)、search_docs(搜索文档)、list_libraries(列出库)和get_doc_page(获取页面),可与Claude Desktop、VS Code、Cursor等任何MCP兼容客户端无缝集成。
章节 05
DocShark支持多种使用方式,从命令行快速查询到深度集成到开发环境:
命令行使用(无需安装)
# 使用bunx直接运行,无需全局安装
bunx docshark add https://valibot.dev/guides/ --depth 2
bunx docshark search "schema validation"
全局安装与CLI
bun add -g docshark
docshark list
docshark update
VS Code集成
在.vscode/settings.json中添加MCP服务器配置:
{
"mcpServers": {
"docshark": {
"command": "bunx",
"args": ["-y", "docshark", "start", "--stdio"]
}
}
}
Claude Desktop配置
编辑Claude Desktop配置文件(macOS路径:~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"docshark": {
"command": "bunx",
"args": ["-y", "docshark", "start", "--stdio"]
}
}
}
章节 06
DocShark在设计上充分考虑了对目标网站的友好性。它自动检测并遵守robots.txt规则,实施速率限制以防止对文档服务器造成过大负载,使用合理的并发控制和请求间隔。这种设计不仅符合网络礼仪,也降低了被目标网站封禁IP的风险。
章节 07
目前DocShark的第一阶段核心引擎已完全实现并通过测试,包括自定义SQLite数据库、Web爬取引擎、Markdown处理器、语义分块器、异步任务管理器、HTTP API和完整的MCP工具集成。
开发团队正在积极完善与外部MCP客户端的集成体验,并规划了以下功能:
章节 08
DocShark的价值在多个场景中得以体现:
企业内部文档:许多公司使用私有或内部文档系统,DocShark可以将其索引为本地知识库,让AI助手理解内部API和开发规范。
新兴技术跟踪:对于快速迭代的技术栈(如AI/ML领域的各种框架),DocShark可以定期同步最新文档,确保AI助手的建议始终基于最新版本。
离线开发环境:在网络受限或需要离线工作的场景下,本地索引的文档库确保AI助手仍能访问完整的技术参考。
多版本文档管理:对于需要维护多版本项目的团队,DocShark可以同时索引不同版本的文档,让AI助手根据上下文提供版本兼容的建议。