rust-docs-mcp-server
rust-docs-mcp-server:为 AI 编码助手提供最新的 Rust crate 文档,提高代码准确性。

rust-docs-mcp-server 解决方案概述
rust-docs-mcp-server
是一款专为 Rust 开发者设计的 MCP 服务器,旨在为 AI 编码助手提供特定 Rust crate 的最新知识。它通过提供一个名为 query_rust_docs
的工具,让 AI 模型能够查询指定 crate 的最新文档,从而显著提高 AI 生成代码的准确性和相关性。该服务器针对单个 Rust crate 实例运行,支持指定 crate 的 features,并利用 OpenAI 的 embedding 模型进行语义搜索,快速找到最相关的文档片段。随后,它使用 LLM 对检索到的文档进行总结,生成简洁的答案。通过缓存机制,rust-docs-mcp-server
大幅提升了后续启动速度。它通过标准输入/输出 (stdio) 与 MCP 客户端通信,为开发者提供了一个强大的工具,减少手动更正,加速开发流程。
rust-docs-mcp-server 核心能力
语义化 Rust 文档查询
rust-docs-mcp-server 的核心功能是允许 AI 编码助手通过语义搜索查询特定 Rust crate 的最新文档。该服务器为指定的 Rust crate 获取文档,使用 OpenAI 的 text-embedding-3-small
模型为文档内容生成嵌入向量,并提供一个 MCP 工具 (query_rust_docs
),该工具可以根据文档上下文回答关于该 crate 的问题。当 AI 编码助手需要使用某个 crate 的 API 时,它可以向该工具提出具体问题,并获得直接来自最新文档的答案。这显著提高了 AI 生成代码的准确性和相关性,减少了手动更正的需求,并加速了开发过程。例如,开发者在使用 reqwest
crate 时,可以通过提问 "How do I make a simple GET request with reqwest?" 来获取最新的代码示例和用法说明。
缓存加速文档访问
为了提高效率,rust-docs-mcp-server 实现了缓存机制。首次使用某个 crate 或其特定版本/feature 组合时,服务器会下载文档并生成嵌入向量,并将这些数据存储在用户的 XDG 数据目录中(通常是 ~/.local/share/rustdocs-mcp-server/
)。后续的启动将直接从缓存加载数据,从而显著缩短启动时间。缓存的键包括 crate 名称、版本要求和 feature 的哈希值,确保不同 feature 组合的文档被分别缓存。如果缓存文件丢失、损坏或无法解码,服务器会自动重新生成文档和嵌入向量。这种缓存机制避免了重复下载和处理文档,降低了 OpenAI API 的使用成本,并为开发者提供了更流畅的体验。例如,在开发过程中频繁切换不同的 crate 版本或 feature 时,缓存可以显著减少等待时间。
简化 AI 助手集成
rust-docs-mcp-server 通过 MCP 协议与 AI 编码助手集成,提供了一个标准化的接口,使得 AI 助手可以轻松地访问 Rust crate 的文档。服务器通过标准输入/输出 (stdio) 运行,并暴露一个 query_rust_docs
工具,该工具接受一个包含问题的 JSON 对象作为输入,并返回一个包含答案的文本响应。此外,服务器还提供了一个 crate://<crate_name>
资源,用于标识服务器配置的 Rust crate。这种标准化的集成方式简化了 AI 编码助手的配置和使用,使得开发者可以专注于代码编写,而无需关心底层文档获取和处理的细节。例如,开发者可以在 Roo Code 或 Claude Desktop 等 AI 编码助手中配置 rust-docs-mcp-server,从而在编写 Rust 代码时获得实时的文档支持。
技术实现:Cargo 集成与 HTML 解析
rust-docs-mcp-server 的技术实现涉及多个关键步骤。首先,它使用 cargo
库 API 创建一个临时的 Rust 项目,该项目仅依赖于目标 crate,并在其 Cargo.toml
文件中启用指定的 feature。然后,它运行 cargo doc
来生成 HTML 文档。接下来,服务器使用 scraper
crate 解析 HTML 文件,并从主要内容区域 (<section id="main-content">
) 提取文本内容。最后,它使用 async-openai
crate 和 tiktoken-rs
为每个提取的文档块生成嵌入向量。这些技术细节确保了服务器能够准确地获取和处理 Rust crate 的文档,并为 AI 编码助手提供高质量的上下文信息。