项目简介

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 的无缝集成。

安装步骤

  1. 安装 Rust nightly 工具链: Ruskel 依赖 Rust nightly 工具链及其 'rust-docs-json' 组件来生成文档数据。
    rustup toolchain install nightly
    rustup component add --toolchain nightly rust-docs-json
  2. 安装 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 的骨架定义。

信息

分类

开发者工具