关于 Bookworm
Bookworm 是面向 Rust 开发者的 docs.rs 文档工具集,可下载、索引和查询 crate 文档。其 MCP 服务将 crate 搜索、条目和文档资源提供给兼容客户端。
主要功能
- 01下载 docs.rs crate 文档
- 02将文档索引到 SQLite
- 03搜索 crate 与条目
- 04读取缓存文档资源
适用场景
- 01查找 crate 及其版本信息
- 02搜索函数、类型和模块
- 03在本地索引中查询文档
MCP 相关
Bookworm 的 MCP 服务向客户端提供 crate 搜索工具和 crate:// 资源,可检索元数据、README、条目及源代码资源。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Bookworm
一组用于处理 docs.rs 文档的工具。
Crates
wrm_dl
从 docs.rs 下载某个 crate 的文档,并将其存储 在本地目录中。
它同时提供库和二进制程序,你可以在本地运行:
cargo run --bin wrm-dl --features cli -- regex
Documentation downloaded successfully to /tmp/...
wrm_index
将本地存储的 crate 文档编入 SQLite 数据库索引。
它同时提供库和二进制程序,你可以在本地运行:
cargo run --bin wrm-index --features cli -- /tmp/...
Documentation indexed successfully to ./index.sqlite
wrm_query
使用本地存储的 crate 文档和索引数据库,查询某个 crate 的文档。
wrm_docs
从本地缓存的 docs.rs 文档中获取详细信息。
wrm_mcp
一个用于提供 crate 文档的 模型上下文协议 服务。
在本地运行:
cargo run --bin wrm-mcp
将服务添加到 MCP 客户端的方式取决于客户端,不过以下示例适用于 Claude.ai:
{
"mcpServers": {
"bookworm": {
"command": "/path/to/wrm-mcp"
}
}
}
工具
具备 MCP 客户端功能的大模型可以使用以下工具:
crates_search
获取与给定查询匹配的 crate 列表。
返回的列表包含每个 crate 的 URI,可用于获取更多 crate 信息。
crate_search_items
获取与给定查询匹配的条目列表。
每个条目类型都包含以下信息:
- 条目路径(例如
serde_json::value::Value) - 条目类型(例如
enum) - 类型签名
- 文档
- 相关资源 URI
crate_search_src(待办)
在 crate 的所有源代码中搜索给定查询。
每个条目都包含源代码文件的 URI、行号以及匹配行的内容(包括匹配项周围的可选上下文)。
crate_resource
找到 crate(或知道 crate 名称)后,可以通过 crate_resource 工具获取相关资源。此工具接受资源的 URI。
支持以下 URI:
crate://{crate_name}- 列出 crate 版本crate://{crate_name}/{crate_version}- 获取元数据crate://{crate_name}/{crate_version}/readme- 获取 README 内容crate://{crate_name}/{crate_version}/items- 列出条目资源crate://{crate_name}/{crate_version}/src- 列出源代码资源crate://{crate_name}/{crate_version}/{path}- 获取条目/源代码资源
crate://{crate_name} - 列出 crate 版本
返回指定 crate 名称的版本列表。
列表中的每个条目都包含以下信息:
- 版本
- 发布日期
- MSRV
- 下载量
- 发布者
crate://{crate_name}/{crate_version} - 获取 crate 元数据
返回以下元数据:
- 名称
- 版本
- 发布日期
- 描述
- 主页
- 仓库
- 许可证
- URI:
- README(例如
crate://serde_json/1.0.85/readme) - Crate 条目(例如
crate://serde_json/1.0.85/items) - 源代码(例如
crate://serde_json/1.0.85/src)
- README(例如
crate://{crate_name}/{crate_version}/readme - 获取 crate README
以 Markdown 格式的字符串返回 crate 的 README。
crate://{crate_name}/{crate_version}/items - 列出 crate 条目
返回指定 crate 版本的条目列表。
条目是 crate 的组成部分。条目有以下几种:
- 模块
- 函数定义
- 类型定义
- 结构体定义
- 枚举定义
- Trait 定义
- 实现
使用 search_crate_items 搜索特定条目。
crate://{crate_name}/{crate_version}/src - 列出 crate 源代码资源
返回指定 crate 版本的源代码资源列表。
例如:
<Resources>
<Resource uri="crate://serde_json/1.0.85/src/serde_json/lib.rs" />
<Resource uri="crate://serde_json/1.0.85/src/serde_json/value.rs" />
<Resource uri="crate://serde_json/1.0.85/src/serde_json/map.rs" />
<Resource uri="crate://serde_json/1.0.85/src/serde_json/value/mod.rs" />
...
</Resources>
使用 search_crate_src 搜索 crate 的所有源代码。
crate://{crate_name}/{crate_version}/{crate_resource_path} - 获取 crate 资源
返回给定路径下资源的内容。
URL 模板
{crate_name}是 crate 的准确名称。{crate_version}可以是兼容 semver 的版本号(也可以是不完整版本号),或者使用latest表示最新发布的 crate 版本。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。