使用说明

项目简介

Jinni 是一款 MCP (Model Context Protocol) 服务器,旨在为大型语言模型 (LLM) 提供项目代码的上下文信息。通过 Jinni,LLM 可以更有效地理解项目结构和代码内容,从而更好地辅助代码编写、问题排查等任务。Jinni 包含 MCP 服务器和命令行工具 (CLI) 两种组件,MCP 服务器用于与 AI 工具集成,CLI 工具则方便手动使用。

主要功能点

  • 高效上下文收集: 快速读取并整合项目中的相关文件内容,提供给 LLM。
  • 智能文件过滤: 基于 '.gitignore' 风格的 '.contextfiles' 配置文件,灵活定义需要包含或排除的文件和目录。支持多层级的规则配置,方便精细化管理上下文范围。
  • 可定制规则: 允许通过 '.contextfiles' 或命令行参数自定义文件过滤规则,精确控制提供给 LLM 的项目上下文。
  • 大上下文处理: 支持配置上下文大小限制,防止超出 LLM 的处理能力,并提供详细错误信息和最大文件列表,帮助用户优化上下文内容。
  • 元数据信息: 输出内容包含文件路径、大小和修改时间等元数据,方便 LLM 理解文件信息。
  • 提供 'read_context' 工具: 允许 MCP 客户端调用 'read_context' 工具,根据指定的项目根目录和目标文件/目录,获取项目上下文。
  • 提供 'usage' 工具: 允许 MCP 客户端调用 'usage' 工具,获取 Jinni 的使用说明文档。

安装步骤

  1. 确保你的 Python 环境已配置,并安装了 'pip' 或 'uv' 包管理器。

  2. 使用 'pip' 或 'uv' 安装 Jinni:

    pip install jinni
    # 或
    uv pip install jinni

    安装完成后,'jinni' 命令行工具和 'jinni-server' 服务器程序将可用。

服务器配置

为了让 MCP 客户端(如 Cursor、Cline、Roo、Claude Desktop 等)连接到 Jinni MCP 服务器,你需要在客户端的配置文件中添加 Jinni 服务器的配置信息。以下是一个典型的 JSON 格式配置示例,你需要根据你的 MCP 客户端的具体要求进行配置。

{
  "mcpServers": {
    "jinni": {
      "command": "uvx jinni-server",
      "root": "/absolute/path/to/your/projects" // (可选, 推荐) 项目根目录的绝对路径,用于限制服务器访问范围,增强安全性。如果不需要限制,可以删除此行。
    }
  }
}
  • 'server name': 'jinni',这是你在客户端配置中用于标识 Jinni 服务器的名称,可以自定义。
  • 'command': 'uvx jinni-server',这是启动 Jinni MCP 服务器的命令。 确保 'uvx' 命令可用,并且 'jinni-server' 可被 'uvx' 执行。如果你的环境中 'jinni-server' 可直接通过 'python -m jinni.server' 运行,也可以将 'command' 配置为 '"python -m jinni.server"'。
  • 'root': (可选) '/absolute/path/to/your/projects' 是项目根目录的绝对路径。强烈建议 设置 'root' 参数,以限制 Jinni 服务器只能访问该目录及其子目录,提高安全性。将 '/absolute/path/to/your/projects' 替换为你实际的项目根目录的绝对路径。

注意: 请参考你的 MCP 客户端的文档,了解如何配置和添加 MCP 服务器。不同的客户端配置文件格式和配置方法可能有所不同。

基本使用方法

  1. 启动 Jinni MCP 服务器: 根据你的 MCP 客户端配置,启动 Jinni MCP 服务器。通常,客户端会自动启动配置的 MCP 服务器。你也可以手动在终端中运行 'uvx jinni-server' 命令来启动服务器。
  2. 配置项目根目录: 在你的 MCP 客户端中,配置需要 Jinni 提供上下文的项目根目录(绝对路径)。
  3. 使用 LLM 和调用工具: 在 MCP 客户端中与 LLM 交互时,当 LLM 需要项目上下文信息时,它会调用 Jinni 服务器的 'read_context' 工具。'read_context' 工具会自动根据配置的规则和目标,读取项目文件内容,并将其返回给 LLM。
  4. 查看使用说明: LLM 也可以调用 'usage' 工具来获取 Jinni 的使用说明文档,以便了解如何配置规则和使用 Jinni 的各项功能。

示例 MCP 客户端与 LLM 的交互流程:

用户在 MCP 客户端中向 LLM 提问:“请帮我修改 'src/app.py' 中的代码。”

  1. 客户端请求: MCP 客户端接收到用户请求,并将其发送给 LLM。
  2. LLM 调用 'read_context' 工具: LLM 分析用户请求,判断需要项目上下文信息,调用 Jinni MCP 服务器的 'read_context' 工具,并提供必要的参数,例如:
    {
      "tool_call": {
        "tool_name": "jinni/read_context",
        "arguments": {
          "project_root": "/absolute/path/to/your/project",
          "targets": ["src/app.py"],
          "rules": []
        }
      }
    }
  3. Jinni 服务器响应: Jinni 服务器接收到 'read_context' 请求,根据参数读取 '/absolute/path/to/your/project/src/app.py' 的内容,并根据 '.contextfiles' 规则进行过滤,然后将处理后的上下文信息返回给 MCP 客户端。
  4. LLM 获取上下文并生成回复: LLM 接收到 Jinni 服务器返回的上下文信息,结合用户请求,生成代码修改建议或其他回复,并返回给 MCP 客户端。
  5. 客户端展示回复: MCP 客户端将 LLM 的回复展示给用户。

通过 Jinni MCP 服务器,LLM 可以方便快捷地获取项目上下文,从而更好地理解用户意图,并提供更准确、更有价值的辅助功能。

信息

分类

开发者工具