文档索引与搜索服务

一个基于Rust实现的文档索引和搜索MCP服务器,支持智能搜索和文档网站爬取。

  • by Eslzzyl
  • Rust
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 Eslzzyl/docs-mcp-rs

使用说明

英语 | 中文

该项目采用了大量的vibe编码,尚未准备好投入生产使用。可能会发生重大变化。使用风险自负。


docs mcp rs

用Rust实现的文档索引和搜索MCP(模型上下文协议)服务器。它可以抓取、索引文档网站,并通过MCP协议为AI助手提供智能搜索功能。

特性

  • 混合搜索 -结合矢量搜索和全文搜索(FTS5)以获得更准确的结果
  • 智能刮擦 -支持无头浏览器渲染,以抓取JavaScript渲染的文档网站
  • 多版本管理 -支持对同一库的多个版本进行独立索引和管理
  • MCP协议 -支持HTTP和stdio传输模式,可由Claude和Cursor等AI工具直接调用
  • 网络界面 -内置Web UI,支持中文和英文,便于管理和搜索
  • 高性能 -在Rust中实现,内存占用低,速度快
  • 多个嵌入模型 -支持具有可配置自定义API端点的OpenAI和Google嵌入模型

安装

从源代码构建

git clone https://github.com/Eslzzyl/docs-mcp-rs.git
cd docs-mcp-rs
cargo build --release

编译后的二进制文件位于 target/release/docs-mcp-rs.

快速开始

1.配置环境变量

复制示例配置文件:

cp .env.example .env

编辑 .env 文件以配置API密钥:

# OpenAI API configuration
OPENAI_API_KEY=sk-xxxxxxx
OPENAI_API_BASE=https://api.openai.com/v1

# Embedding model (format: provider:model)
DOCS_MCP_EMBEDDING_MODEL=openai:text-embedding-3-small

2.启动服务器

HTTP模式(默认):

docs-mcp-rs serve

服务器将在以下时间启动 http://localhost:26301.参观 http://localhost:26301 打开Web UI。

stdio模式(用于MCP客户端集成):

docs-mcp-rs serve --stdio

3.索引文件

使用CLI抓取文档:

# Index React documentation
docs-mcp-rs scrape react https://react.dev --version 18

# Index Vue documentation with max pages limit
docs-mcp-rs scrape vue https://vuejs.org/guide --version 3 --max-pages 500

4.搜索文档

# Search indexed documentation
docs-mcp-rs search react "how to use hooks"

# Search in a specific version
docs-mcp-rs search vue "computed properties" --version 3

命令行命令

serve -启动MCP服务器

docs-mcp-rs serve [OPTIONS]

Options:
  -p, --port <PORT>  HTTP server port [default: 26301]
      --stdio        Run in stdio mode

scrape -报废和索引文件

docs-mcp-rs scrape <LIBRARY> <URL> [OPTIONS]

Arguments:
  <LIBRARY>  Library name
  <URL>      Starting URL

Options:
  -v, --version <VERSION>      Version number
  -p, --max-pages <MAX_PAGES>  Maximum pages to scrape [default: 1000]
  -d, --max-depth <MAX_DEPTH>  Maximum crawl depth [default: 3]
  -c, --concurrency <NUM>      Concurrency number [default: 5]

search -搜索文档

docs-mcp-rs search <LIBRARY> <QUERY> [OPTIONS]

Arguments:
  <LIBRARY>  Library name
  <QUERY>    Search query

Options:
  -v, --version <VERSION>  Version number
  -l, --limit <LIMIT>      Result limit [default: 5]

list -列出索引库

docs-mcp-rs list

remove -删除索引

docs-mcp-rs remove <LIBRARY> [OPTIONS]

Arguments:
  <LIBRARY>  Library name

Options:
  -v, --version <VERSION>  Version number (removes entire library if not specified)

MCP工具

此服务器为AI助手提供以下MCP工具:

工具名称 描述
scrape_docs 报废和索引文档网站
search_docs 搜索索引文档
list_libraries 列出所有索引库
remove_library 删除索引库

环境变量

变量 描述 默认值
OPENAI_API_KEY OpenAI API密钥 -
OPENAI_API_BASE OpenAI API基础URL https://api.openai.com/v1
GOOGLE_API_KEY Google API密钥 -
GOOGLE_API_BASE Google API基础URL -
DOCS_MCP_EMBEDDING_MODEL 嵌入模型(provider:model 格式) openai:text-embedding-3-small
DOCS_MCP_EMBEDDING_DELAY_MS 嵌入请求之间的延迟(毫秒) 150
DOCS_MCP_EMBEDDING_MAX_RPM 每分钟最大请求数 1800
DOCS_MCP_EMBEDDING_MAX_TPM 每分钟最大代币数 800000
DOCS_MCP_EMBEDDING_MAX_RETRIES 429个错误的最大重试次数 3
DOCS_MCP_EMBEDDING_RETRY_BASE_DELAY_MS 基本重试延迟(毫秒) 1000

技术架构

  • Web框架: Axum
  • 数据库:SQLite+SQLite-vec(向量扩展)
  • MCP协议:rmcp
  • 嵌入API:异步openai,reqwest
  • HTML解析:刮刀,fast_html2md
  • 浏览器自动化:无头_彩色

项目结构

docs-mcp-rs/
├── src/
│   ├── cli/          # Command-line argument parsing
│   ├── core/         # Core configuration and types
│   ├── embed/        # Embedding model integration
│   ├── events/       # Event bus
│   ├── mcp/          # MCP server implementation
│   ├── pipeline/     # Scraping pipeline management
│   ├── scraper/      # Web scraping
│   ├── splitter/     # Document chunking
│   ├── store/        # Data storage
│   └── web/          # Web interface
├── migrations/       # Database migrations
├── public/           # Static assets
└── data/             # Data directory

相关项目

许可证

MIT许可证