使用说明
项目简介
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) 作为传输协议,易于部署和集成。
安装步骤
- 克隆仓库:
git clone https://github.com/odancona/code2prompt-mcp.git cd code2prompt-mcp - 安装依赖:
本项目使用 'Rye' 进行依赖管理。请确保已安装 Rye。
这个命令会根据 'pyproject.toml' 文件安装所有必要的Python依赖到 '.venv' 虚拟环境中。rye build
服务器配置
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" ] }
基本使用方法
-
启动服务器: 在 'code2prompt-mcp' 仓库目录下,运行以下命令启动 MCP 服务器:
rye run python code2prompt_mcp.main服务器默认使用 stdio 传输协议,启动后会在终端保持运行状态,等待 MCP 客户端的请求。
-
使用 MCP 客户端连接并调用工具: 使用任何支持 Model Context Protocol 的客户端 (例如 MCP Inspector) ,根据上述服务器配置信息连接到 Code2Prompt MCP Server。
-
调用 '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 数量。
-
使用 MCP Inspector 测试 (可选): 可以使用 MCP Inspector 快速测试服务器功能。按照 README.md Development 部分的提示,运行:
npx @modelcontextprotocol/inspector python -m code2prompt_mcp.mainMCP Inspector 会自动连接到服务器,并提供图形界面方便地调用工具和查看结果。
信息
分类
开发者工具