项目简介
Ruskel 能够生成 Rust 语言项目的骨架视图,仅包含公共 API 定义,省略所有实现细节。这使得 AI 模型能快速获取 Rust crate 的结构、函数签名、类型定义和文档注释,从而更好地理解和生成 Rust 代码。它通过 Model Context Protocol (MCP) 协议提供这些功能,允许 LLM 客户端作为工具调用,从而将 Rust 代码上下文集成到 LLM 工作流中。
主要功能点
- 生成 Rust crate 骨架: 为任意 Rust crate(本地或 crates.io 上的)生成只包含 API 定义的骨架代码。
- API 搜索: 支持通过名称、文档、路径和函数签名来搜索特定 API 项目。
- 输出过滤: 可以根据指定的模块路径或项目名称过滤输出内容,获取更专注的上下文。
- 详细列表: 提供简洁的 crate 项目目录列表,显示每个项目的类型和完整路径。
- 私有项支持: 可选择包含私有或 crate 内部可见的 API 项,适用于内部开发场景。
- MCP 服务器模式: 作为 MCP 服务器运行,通过 JSON-RPC 协议提供 'ruskel' 工具,供 AI 助手直接调用,实现与 LLM 的无缝集成。
安装步骤
- 安装 Rust nightly 工具链: Ruskel 依赖 Rust nightly 工具链及其 'rust-docs-json' 组件来生成文档数据。
rustup toolchain install nightly rustup component add --toolchain nightly rust-docs-json - 安装 Ruskel: 使用 Cargo(Rust 的包管理器)安装 Ruskel。
cargo install ruskel
服务器配置
当配置 MCP 客户端(如 Claude Desktop)以连接 Ruskel 服务器时,需要提供以下 JSON 格式的配置信息。这定义了客户端如何启动和与 Ruskel 服务器交互,以及服务器提供哪些工具和参数。
{ "mcpServers": { "ruskel": { "command": "ruskel", "args": ["--mcp"], "description": "Ruskel MCP服务器,提供Rust代码骨架和API查询功能。", "tools": [ { "name": "ruskel", "description": "返回Rust项目的API骨架,可用于查询函数签名、API概览、文档注释等。", "parameters": { "type": "object", "properties": { "target": { "type": "string", "description": "要生成API骨架的 crate、模块路径或文件系统路径,可选带 @<semver> 指定版本。" }, "auto_impls": { "type": "boolean", "description": "是否包含自动实现的 traits (如 'Send', 'Sync')。默认为 'false'。" }, "private": { "type": "boolean", "description": "是否包含非公开 (私有 / crate 内部可见) 项目。默认为 'false'。" }, "frontmatter": { "type": "boolean", "description": "是否包含描述调用上下文的注释前言。默认为 'true'。" }, "search": { "type": "string", "description": "将响应限制为与此查询匹配的项目,而不是渲染整个目标。默认为 'null' (不搜索)。" }, "search_spec": { "type": "array", "items": { "type": "string" }, "description": "限制搜索的特定领域 (name, doc, signature, path),多个用逗号分隔。省略时默认搜索 name、doc 和 signature。默认为 'null'。" }, "search_case_sensitive": { "type": "boolean", "description": "搜索时是否要求精确的字母大小写匹配。默认为 'false'。" }, "direct_match_only": { "type": "boolean", "description": "抑制容器展开,只渲染直接匹配项。默认为 'false'。" }, "no_default_features": { "type": "boolean", "description": "禁用 crate 的默认 Cargo features。默认为 'false'。" }, "all_features": { "type": "boolean", "description": "启用所有可选的 Cargo features。默认为 'false'。" }, "features": { "type": "array", "items": { "type": "string" }, "description": "要启用的 Cargo features 精确列表 (如果 'all_features=true' 则忽略)。默认为空数组。" }, "quiet": { "type": "boolean", "description": "启用安静模式。默认为 'false'。" }, "offline": { "type": "boolean", "description": "启用离线模式。默认为 'false'。" } }, "required": ["target"] } } ] } } }
注意:上述 JSON 配置应由 MCP 客户端根据其界面进行用户输入,用户不需要直接编辑此 JSON。
基本使用方法
启动 Ruskel MCP 服务器非常简单。它会通过标准输入/输出 (stdio) 与 MCP 客户端进行通信。
ruskel --mcp
启动后,MCP 客户端即可通过其配置连接到此服务器,并调用 'ruskel' 工具来获取 Rust 代码信息。例如,LLM 可以请求 'ruskel("serde::de::Deserialize")' 来获取 'serde' crate 中 'Deserialize' trait 的骨架定义。
信息
分类
开发者工具