使用说明

项目简介

Ummon 是一个代码知识图谱构建和查询工具,它通过分析代码库,提取代码实体及其关系,构建成结构化的知识图谱。Ummon 包含一个 MCP (Model Context Protocol) 服务器,可以作为后端服务为 AI 客户端提供代码上下文信息和工具调用能力,帮助 AI 更好地理解和操作代码库。

主要功能点

  • 代码知识图谱构建: Ummon 可以索引多种编程语言的代码库(如 Rust, Python, JavaScript, Java),并构建代码实体(函数、类、模块等)及其相互关系的知识图谱。
  • 高级查询系统: 用户可以使用结构化查询语言或自然语言查询代码库的知识图谱,例如查找特定功能的函数、类之间的调用关系等。
  • 领域模型提取: Ummon 可以利用 LLM 从代码库中提取业务领域模型,将业务概念与代码实现关联起来。
  • MCP 服务器: 内置 MCP 服务器,允许 AI 客户端通过标准的 MCP 协议与 Ummon 服务端交互,查询代码知识图谱和调用工具。
  • AI 助手集成: 通过 MCP 服务器,Ummon 可以与各种 AI 助手集成,为 AI 提供代码上下文和操作能力。

安装步骤

  1. 安装 Rust 工具链: 确保你的系统已安装 Rust 工具链 (Rust toolchain)。你可以从 https://www.rust-lang.org/tools/install 获取安装指南。
  2. 安装 Ummon: 使用 Rust 的包管理器 Cargo 安装 Ummon。在终端中运行以下命令:
    cargo install ummon
    安装成功后,'ummon' 命令将添加到你的系统路径中。

服务器配置

MCP 客户端需要配置连接 MCP 服务器的信息。以下是连接 Ummon MCP 服务器的示例配置(JSON 格式),通常在 MCP 客户端的应用配置中设置:

{
  "serverName": "ummon",  // MCP 服务器名称,用于客户端标识
  "command": "ummon",     // 启动 MCP 服务器的命令
  "args": ["serve"],      // 启动命令的参数,这里使用 serve 命令启动 MCP 服务器
  "transport": "stdio"    // 通信方式,stdio 表示使用标准输入/输出
}

配置参数说明:

  • 'serverName': 服务器的名称,可以自定义,用于在客户端区分不同的 MCP 服务器连接。
  • 'command': 启动 Ummon MCP 服务器的可执行命令,这里是 'ummon',前提是 'ummon' 命令已安装并添加到系统路径。
  • 'args': 传递给 'command' 命令的参数,'serve' 参数指示 Ummon 启动 MCP 服务器模式。
  • 'transport': 指定 MCP 服务器使用的传输协议,'stdio' 表示使用标准输入和输出进行通信,适用于本地客户端和服务端进程通过管道通信的场景。

其他可选配置参数:

  • 如果需要使用 HTTP 传输协议 (需要 'http' feature flag 编译),可以将 'transport' 设置为 '"http"',并可能需要配置 HTTP 服务器相关的参数(仓库文档中 HTTP 传输仍在早期开发阶段,默认推荐使用 'stdio')。

基本使用方法

  1. 索引代码库: 首先需要使用 'ummon index' 命令索引你的代码库,构建知识图谱。例如,索引当前目录下的代码库:

    ummon index .

    或者索引指定路径的代码库:

    ummon index /path/to/your/codebase

    索引过程可能需要一些时间,取决于代码库的大小。索引完成后,会在当前目录下生成 'knowledge_graph.json' 文件,存储知识图谱数据。

  2. 启动 MCP 服务器: 使用 'ummon serve' 命令启动 MCP 服务器。在终端中运行:

    ummon serve

    服务器默认使用标准输入/输出 (stdio) 作为传输协议,并等待 MCP 客户端连接和发送 JSON-RPC 请求。

  3. 连接 MCP 客户端: 配置一个支持 MCP 协议的 AI 客户端,例如 MCP Inspector,并将客户端连接到 Ummon MCP 服务器。客户端需要配置服务器启动命令和参数,参考上面的“服务器配置”部分。

  4. 使用 AI 客户端与 Ummon 交互: 连接成功后,你就可以在 AI 客户端中使用 Ummon 提供的工具和资源,例如:

    • 使用 'search_code' 工具,通过自然语言查询代码库中的实体。
    • 使用 'get_entity' 工具,获取特定代码实体的详细信息。
    • 使用 'resources/list' 和 'resources/read' 资源接口,访问完整的知识图谱数据。

示例交互 (使用 MCP Inspector):

  1. 启动 Ummon MCP 服务器: 'ummon serve'
  2. 启动 MCP Inspector 并配置连接 'ummon serve' 命令。
  3. 在 MCP Inspector 中,你可以发送 JSON-RPC 请求,例如列出可用工具:
    {
      "jsonrpc": "2.0",
      "id": 1,
      "method": "tools/list",
      "params": {}
    }
    或者调用 'search_code' 工具查询代码:
    {
      "jsonrpc": "2.0",
      "id": 2,
      "method": "tools/call",
      "params": {
        "name": "search_code",
        "arguments": {
          "query": "authentication functions"
        }
      }
    }

通过以上步骤,你可以搭建并使用 Ummon MCP 服务器,为 AI 应用提供强大的代码上下文服务。

信息

分类

开发者工具