使用说明
项目简介
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 的使用说明文档。
安装步骤
-
确保你的 Python 环境已配置,并安装了 'pip' 或 'uv' 包管理器。
-
使用 '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 服务器。不同的客户端配置文件格式和配置方法可能有所不同。
基本使用方法
- 启动 Jinni MCP 服务器: 根据你的 MCP 客户端配置,启动 Jinni MCP 服务器。通常,客户端会自动启动配置的 MCP 服务器。你也可以手动在终端中运行 'uvx jinni-server' 命令来启动服务器。
- 配置项目根目录: 在你的 MCP 客户端中,配置需要 Jinni 提供上下文的项目根目录(绝对路径)。
- 使用 LLM 和调用工具: 在 MCP 客户端中与 LLM 交互时,当 LLM 需要项目上下文信息时,它会调用 Jinni 服务器的 'read_context' 工具。'read_context' 工具会自动根据配置的规则和目标,读取项目文件内容,并将其返回给 LLM。
- 查看使用说明: LLM 也可以调用 'usage' 工具来获取 Jinni 的使用说明文档,以便了解如何配置规则和使用 Jinni 的各项功能。
示例 MCP 客户端与 LLM 的交互流程:
用户在 MCP 客户端中向 LLM 提问:“请帮我修改 'src/app.py' 中的代码。”
- 客户端请求: MCP 客户端接收到用户请求,并将其发送给 LLM。
- 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": [] } } } - Jinni 服务器响应: Jinni 服务器接收到 'read_context' 请求,根据参数读取 '/absolute/path/to/your/project/src/app.py' 的内容,并根据 '.contextfiles' 规则进行过滤,然后将处理后的上下文信息返回给 MCP 客户端。
- LLM 获取上下文并生成回复: LLM 接收到 Jinni 服务器返回的上下文信息,结合用户请求,生成代码修改建议或其他回复,并返回给 MCP 客户端。
- 客户端展示回复: MCP 客户端将 LLM 的回复展示给用户。
通过 Jinni MCP 服务器,LLM 可以方便快捷地获取项目上下文,从而更好地理解用户意图,并提供更准确、更有价值的辅助功能。
信息
分类
开发者工具