Back to MCP directory
publicPublicdnsLocal runtime

cratedocs-mcp

一个提供Rust crate文档查询服务的MCP服务器

article

README

🚀 CrateDocs MCP 服务器

CrateDocs MCP 服务器遵循 Model Context Protocol (MCP),是一款专为 Rust crate 文档查找打造的工具。它能助力大型语言模型(LLM)查找其不熟悉的 crate 文档,极大提升工作效率。

🚀 快速开始

CrateDocs MCP 服务器是遵循 Model Context Protocol (MCP) 的工具,可用于 Rust crate 文档查找,让大型语言模型能查找不熟悉的 crate 文档。

✨ 主要特性

  • 查找 crate 文档:可获取特定 Rust crate 的通用文档。
  • 搜索 crate:能根据关键词在 crates.io 上搜索 crate。
  • 查找项文档:可获取 crate 中特定项(如结构体、函数、特征)的文档。

📦 安装指南

git clone https://github.com/d6e/cratedocs-mcp.git
cd cratedocs-mcp
cargo build --release

💻 使用示例

基础用法

运行服务器

有多种方式运行文档服务器:

# 以 STDIN/STDOUT 模式运行
cargo run --bin cratedocs stdio

# 以 HTTP/SSE 模式运行(默认地址:127.0.0.1:8080)
cargo run --bin cratedocs http

# 以自定义地址运行 HTTP/SSE 模式
cargo run --bin cratedocs http --address 0.0.0.0:3000

# 启用调试日志
cargo run --bin cratedocs http --debug

直接测试文档工具

无需启动服务器即可直接从命令行测试文档工具:

# 获取 help 命令帮助
cargo run --bin cratedocs test --tool help

# 查找 crate 文档
cargo run --bin cratedocs test --tool lookup_crate --crate-name tokio

# 查找特定项的文档
cargo run --bin cratedocs test --tool lookup_item --crate-name tokio --item-path sync::mpsc::Sender

# 查找特定版本的文档
cargo run --bin cratedocs test --tool lookup_item --crate-name serde --item-path Serialize --version 1.0.147

# 搜索 crate
cargo run --bin cratedocs test --tool search_crates --query logger --limit 5

# 以不同格式输出(Markdown、纯文本、JSON)
cargo run --bin cratedocs test --tool search_crates --query logger --format markdown
cargo run --bin cratedocs test --tool search_crates --query logger --format plain
cargo run --bin cratedocs test --tool search_crates --query logger --format json

# 将输出重定向到文件
cargo run --bin cratedocs test --tool search_crates --query logger --format markdown > output.md

高级用法

lookup_crate 工具

查找特定 crate 的文档。

{
  "name": "tokio",
  "version": "1.0.0",
  "documentation_url": "https://docs.rs/tokio/latest/tokio/",
  "description": "A runtime for async tasks built on the Rust programming language."
}

参数说明: | 参数 | 详情 | | ---- | ---- | | --crate-name | 指定要查找的 crate 名称(必填)。 | | --version | 指定 crate 的版本(可选,默认为最新版本)。 |

search_crates 工具

在 crates.io 上搜索 crate。

[
  {
    "name": "tokio",
    "version": "1.0.0",
    "documentation_url": "https://docs.rs/tokio/latest/tokio/",
    "description": "A runtime for async tasks built on the Rust programming language."
  },
  {
    "name": "serde",
    "version": "1.0.0",
    "documentation_url": "https://docs.rs/serde/latest/serde/",
    "description": "A library for serializing and deserializing data represented as Rust structs."
  }
]

参数说明: | 参数 | 详情 | | ---- | ---- | | --query | 指定搜索关键词(必填)。 | | --limit | 指定要返回的结果数量(可选,默认为 10)。 | | --format | 指定输出格式(可选,支持 markdown, plain, 或 json)。 |

lookup_item 工具

查找 crate 中特定项的文档。

{
  "name": "tokio",
  "version": "1.0.0",
  "item_path": "sync::mpsc::Sender",
  "documentation_url": "https://docs.rs/tokio/latest/tokio/sync/mpsc/Sender/",
  "description": "A message channel type that allows sending messages between tasks."
}

参数说明: | 参数 | 详情 | | ---- | ---- | | --crate-name | 指定 crate 名称(必填)。 | | --item-path | 指定要查找的项路径(例如,sync::mpsc::Sender)(必填)。 | | --version | 指定 crate 的版本(可选,默认为最新版本)。 |

🔧 技术细节

  • 缓存机制:服务器使用缓存来提高性能,避免重复查找相同的数据。
  • 接口:服务器与 docs.rscrates.io 等 API 接口集成,以获取 crate 文档和信息。
  • 结果格式:输出结果为 JSON 格式,支持 Markdown、纯文本和 JSON 多种格式。

📚 详细文档

CrateDocs 服务器遵循 Model Context Protocol (MCP),允许它与支持 MCP 的大型语言模型(LLM)客户端集成。这种集成使得 LLM 能够更高效地访问和理解 Rust crate 文档,从而提供更好的代码生成和问题解决能力。

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client