使用说明

项目简介

Code2Prompt MCP Server 旨在弥合代码库和语言模型之间的鸿沟。它利用 'code2prompt-rs' Rust库分析代码库,提取代码上下文,并将其转换为优化的、结构化的Prompt,以便LLM客户端可以更好地理解和利用代码信息。作为一个MCP服务器,它提供标准的接口,使得LLM应用能够方便地获取代码上下文,用于代码理解、代码生成、代码检索等多种场景。

主要功能点

  • 代码上下文提取: 使用高效的 'code2prompt-rs' 库从指定路径的代码库中提取代码上下文。
  • 灵活的上下文配置: 支持通过 include/exclude 模式、是否包含行号、绝对路径、完整目录树、代码块格式等多种参数灵活配置上下文提取的行为。
  • Prompt模板定制: 允许使用 Handlebars 模板自定义生成的 Prompt 格式 (当前示例代码中 'template' 参数虽有定义,但实际未使用)。
  • MCP协议标准: 遵循 Model Context Protocol 标准,提供工具注册和执行能力,方便集成到各种支持MCP协议的LLM客户端。
  • Stdio传输: 默认使用标准输入输出 (stdio) 作为传输协议,易于部署和集成。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/odancona/code2prompt-mcp.git
    cd code2prompt-mcp
  2. 安装依赖: 本项目使用 'Rye' 进行依赖管理。请确保已安装 Rye
    rye build
    这个命令会根据 'pyproject.toml' 文件安装所有必要的Python依赖到 '.venv' 虚拟环境中。

服务器配置

MCP客户端需要配置以下JSON信息以连接 Code2Prompt MCP 服务器:

{
  "serverName": "code2prompt",  // MCP服务器名称,与代码中 FastMCP 初始化时定义的名称一致
  "command": "rye",           // 启动服务器的命令,这里使用 rye 运行 python 脚本
  "args": [                   // 启动参数
    "run",                    // rye run 子命令,用于运行项目
    "python",                 // 使用 python 解释器
    "code2prompt_mcp.main"    // 运行服务器主程序入口
  ]
}

配置参数说明:

  • 'serverName': 服务器名称,必须与 'code2prompt_mcp.main.py' 中 'FastMCP("code2prompt")' 定义的名称 '"code2prompt"' 一致。客户端通过此名称识别服务器。
  • 'command': 启动服务器的可执行命令。由于项目使用了 'Rye' 管理,这里使用 'rye' 命令。如果直接使用 Python 环境,可以改为 Python 解释器的路径,例如 '"command": "/path/to/python"' 或 '"command": "python3"'.
  • 'args': 启动命令的参数列表。
    • '"run"': 'rye run' 命令的一部分,表示运行项目。
    • '"python"': 指定使用 Python 解释器运行脚本。
    • '"code2prompt_mcp.main"': 指定要运行的 Python 模块 'code2prompt_mcp.main',这是服务器的入口点。

注意: 请确保 MCP 客户端能够找到 'rye' 命令或者根据实际情况调整 'command' 和 'args' 配置。如果您的 Python 环境中已经安装了项目依赖,并且可以直接使用 'python' 命令运行脚本,可以将配置简化为:

{
  "serverName": "code2prompt",
  "command": "python",
  "args": [
    "-m",
    "code2prompt_mcp.main"
  ]
}

基本使用方法

  1. 启动服务器: 在 'code2prompt-mcp' 仓库目录下,运行以下命令启动 MCP 服务器:

    rye run python code2prompt_mcp.main

    服务器默认使用 stdio 传输协议,启动后会在终端保持运行状态,等待 MCP 客户端的请求。

  2. 使用 MCP 客户端连接并调用工具: 使用任何支持 Model Context Protocol 的客户端 (例如 MCP Inspector) ,根据上述服务器配置信息连接到 Code2Prompt MCP Server。

  3. 调用 'get_context' 工具: 客户端连接成功后,可以调用服务器注册的 'get_context' 工具来提取代码上下文。'get_context' 工具接受多个参数,用于配置上下文提取的行为,例如:

    • 'path': 代码库路径 (默认为当前目录 ".")
    • 'include_patterns': 包含的文件模式列表
    • 'exclude_patterns': 排除的文件模式列表
    • 'line_numbers': 是否包含行号 (默认为 true)
    • 'absolute_paths': 是否使用绝对路径 (默认为 false)
    • 等等 (更多参数请参考 'code2prompt_mcp.main.py' 中 'get_context' 函数的文档注释)

    客户端需要构造符合 MCP 协议的 JSON-RPC 请求,调用 'get_context' 工具并传递相应的参数。服务器会执行代码上下文提取,并将结果以 JSON-RPC 响应的形式返回给客户端,其中包含提取的 Prompt 内容、目录信息和 token 数量。

  4. 使用 MCP Inspector 测试 (可选): 可以使用 MCP Inspector 快速测试服务器功能。按照 README.md Development 部分的提示,运行:

    npx @modelcontextprotocol/inspector python -m code2prompt_mcp.main

    MCP Inspector 会自动连接到服务器,并提供图形界面方便地调用工具和查看结果。

信息

分类

开发者工具