项目简介

"代码声明查找MCP服务器" 是一个基于 Model Context Protocol (MCP) 构建的后端服务。它利用 Universal Ctags 和 SQLite FTS5 技术,为Python、C、Go、C++、JavaScript、Rust、Java等多种编程语言的代码声明(如函数、类、结构体、枚举等)提供高效的全文搜索能力。通过标准化的MCP接口,LLM客户端可以查询、浏览代码库中的各种声明,甚至可以触发Ctags文件的生成和索引,从而获得丰富且实时的上下文信息,用于代码理解、生成和自动化任务。

主要功能点

  • 代码声明搜索: 根据名称搜索代码中的函数、类、变量等声明,支持全文搜索,返回详细的代码元素信息。
  • API文件列表: 列出所有已成功索引的API文件名称。
  • API内文件路径: 提取特定API中包含的所有唯一源文件路径。
  • 文件内函数列表: 获取指定文件路径中包含的所有函数名称。
  • Ctags生成与索引: 从指定的源代码目录递归生成Ctags文件,并将其自动添加到服务器的索引中,支持 '.gitignore' 排除不必要的文件。

安装步骤

  1. 克隆仓库: 打开终端,执行以下命令克隆项目到本地:
    git clone https://github.com/osinmv/function-lookup-mcp.git
    cd function-lookup-mcp
  2. 安装Python依赖: 该服务器需要 Python 3.13 及 'FastMCP' 库。建议使用虚拟环境进行安装:
    # 创建并激活虚拟环境
    python3.13 -m venv venv
    source venv/bin/activate
    # 安装 FastMCP 库
    pip install fastmcp
  3. 安装 Universal Ctags: 该服务器依赖 'Universal Ctags' 工具来解析源代码。请根据你的操作系统安装它:
    • macOS:
      brew install universal-ctags
    • Debian/Ubuntu:
      sudo apt-get install universal-ctags
    • Windows: 请参考 Universal Ctags GitHub 获取安装指南。

服务器配置 (for MCP Client)

MCP客户端需要以下JSON配置信息来连接并使用此服务器:

{
  "name": "api-lookup",
  "command": "python",
  "args": [
    "/path/to/your/function-lookup-mcp/main.py"
  ],
  "transport": "stdio",
  "description": "一个提供代码声明全文搜索的MCP服务器,用于查询函数、类等代码元素。",
  "cwd": "/path/to/your/function-lookup-mcp"
}

说明:

  • 'name': 服务器的唯一标识名称,在此示例中为 'api-lookup'。
  • 'command': 用于启动服务器进程的命令,此处为 'python'。
  • 'args': 启动命令的参数列表。'"/path/to/your/function-lookup-mcp/main.py"' 应该替换为你实际克隆仓库后 'main.py' 文件的绝对路径。
  • 'transport': 服务器与客户端通信所使用的协议,此处为 'stdio' (标准输入输出)。
  • 'description': 对服务器功能的简要描述。
  • 'cwd': 服务器的工作目录,确保服务器能够找到其数据库文件 ('ctags_index.db') 和 'apis' 文件夹。请将其替换为仓库的绝对路径。

基本使用方法

  1. 启动服务器: 请确保你已进入 'function-lookup-mcp' 目录,并激活了虚拟环境(如果使用):
    cd function-lookup-mcp
    source venv/bin/activate # 如果你创建了虚拟环境
    python main.py
    服务器将通过标准输入输出(Stdio)等待MCP客户端的连接和请求。
  2. 索引代码: 通过你的MCP客户端,调用 'generate_ctags' 工具来索引你的项目代码。例如,假设你的项目源代码位于 '/home/user/my_project_sources' 目录:
    • MCP客户端请求示例(逻辑概念,非直接bash命令):
      {
        "jsonrpc": "2.0",
        "method": "api-lookup.generate_ctags",
        "params": {
          "include_directory": "/home/user/my_project_sources"
        },
        "id": 1
      }
    服务器会根据指定目录生成Ctags文件,并自动索引到其内部数据库中。
  3. 搜索声明: 一旦代码被索引,你可以通过MCP客户端调用 'search_declarations' 工具来查找代码声明,例如搜索名为 'add_numbers' 的声明:
    • MCP客户端请求示例:
      {
        "jsonrpc": "2.0",
        "method": "api-lookup.search_declarations",
        "params": {
          "name": "add_numbers",
          "limit": 5
        },
        "id": 2
      }
    服务器将返回匹配的声明信息。
  4. 列出API文件或函数: 你可以使用 'list_indexed_apis'、'list_api_files' 和 'list_functions_by_file' 工具来浏览已索引的API结构和文件内容。

信息

分类

开发者工具