项目简介

python-mcp 是一个基于 Model Context Protocol (MCP) 构建的 Python 代码探索服务器。它通过分析 Python 代码的导入关系,提取目标文件及其依赖的代码片段,并整合项目文档(如 README 文件),为大型语言模型(LLM)提供丰富的代码上下文信息,从而提升 LLM 在代码理解、分析和生成等任务中的能力。该服务器轻量级且易于集成,无需复杂的 Agent 系统,可以方便地嵌入到各种 Python 应用中。

主要功能点

  • 代码关系发现:分析 Python 文件之间的导入关系,识别代码依赖。
  • 智能代码抽取:仅提取与目标文件相关的代码片段,避免超出 LLM 的 Token 限制。
  • 目录上下文:自动包含同一目录下的文件,提供更全面的上下文信息。
  • 文档包含:始终包含 README 文件(及其变体),提供项目级别的文档说明。
  • LLM 友好格式:以结构化的 JSON 格式返回代码信息,方便 LLM 解析和利用。
  • MCP 协议支持:完全兼容 Model Context Protocol JSON-RPC 标准,可与任何 MCP 客户端集成。
  • 提供 'get_python_code' 工具
    • 分析目标 Python 文件及其导入的模块、类和函数。
    • 返回目标文件的完整代码。
    • 包含所有引用对象的代码。
    • 添加同一目录下的上下文文件。
    • 尊重 Token 限制,防止 LLM 处理过载。

安装步骤

  1. 克隆仓库

    git clone https://github.com/hesiod-au/python-mcp.git
    cd python-mcp
  2. 创建并激活虚拟环境

    python -m venv venv
    source venv/bin/activate  # Linux/macOS
    # venv\Scripts\activate  # Windows
  3. 安装依赖

    pip install -r requirements.txt
  4. 配置环境变量

    • 复制 '.env.example' 文件为 '.env',并根据需要修改 'TOKEN_LIMIT' 环境变量。
      TOKEN_LIMIT=8000  # 代码提取的 Token 限制

服务器配置

要将 python-mcp 服务器配置到 MCP 客户端(例如 Codeium Windsurf),您需要在客户端的 MCP 配置文件中添加以下 JSON 配置。请根据您的实际安装路径进行调整。

{
  "mcpServers": {
    "python-code-explorer": {  // 服务器名称,可以自定义
      "command": "python",    // 启动服务器的命令,这里使用 python 解释器
      "args": [              // 启动参数,指向服务器脚本 server.py 的绝对路径
        "/path/to/python-mcp/server.py"  // 请替换为 server.py 文件的实际绝对路径
      ],
      "env": {                // 环境变量
        "TOKEN_LIMIT": "8000"  // 可选,设置 Token 限制,与 .env 文件中的 TOKEN_LIMIT 作用相同
      }
    }
  }
}

请注意:

  • 将 '/path/to/python-mcp/server.py' 替换为 'server.py' 文件在您系统上的绝对路径。您可以使用 'pwd' (Linux/macOS) 或 'Get-Location' (PowerShell) 命令获取当前目录,然后拼接上相对路径 'server.py'。
  • 'server name' (例如 "python-code-explorer") 可以自定义,用于在 MCP 客户端中标识该服务器。
  • 'TOKEN_LIMIT' 环境变量是可选的,您可以在 '.env' 文件或客户端配置中设置。

基本使用方法

  1. 启动 MCP 服务器

    在项目根目录下,运行以下命令启动服务器:

    python run_server.py

    您可以使用 '--name' 参数自定义服务器名称,例如:

    python run_server.py --name "My Code Explorer"

    或者使用 '--env-file' 参数指定不同的 '.env' 配置文件,例如:

    python run_server.py --env-file .env.production
  2. 在 MCP 客户端中使用

    配置好 MCP 客户端后,客户端将自动连接到 python-mcp 服务器。您可以使用客户端提供的工具(通常在代码编辑器的上下文菜单或命令面板中)调用 'get_python_code' 工具,并指定要分析的 Python 文件路径。服务器将返回包含目标文件及其相关代码的结构化信息,供 LLM 使用。

    具体使用方式请参考您使用的 MCP 客户端的文档。例如,在 Codeium Windsurf 中,您可能需要在编辑器中右键点击 Python 文件,选择 "Ask Windsurf",然后在 Windsurf 界面中使用配置好的 "python-code-explorer" 服务器进行代码分析。

  3. 通过 MCP 客户端 SDK 编程访问

    仓库中提供了 'examples/mcp_client_example.py' 示例脚本,演示了如何使用 MCP Python SDK 编程连接和调用 python-mcp 服务器。您可以参考该示例,编写自己的 MCP 客户端程序,实现更灵活的代码分析和集成。

    运行示例客户端:

    python examples/mcp_client_example.py [optional_target_file.py]

    您可以选择性地提供一个 Python 文件路径作为参数,让客户端分析该文件。

添加更多工具和资源

python-mcp 基于 MCP Python SDK 构建,易于扩展。您可以参考 'server.py' 文件中的示例,通过 '@mcp.tool()' 和 '@mcp.resource()' 装饰器,向服务器添加自定义的工具和资源,扩展其功能。

信息

分类

开发者工具