项目简介
"代码声明查找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' 排除不必要的文件。
安装步骤
- 克隆仓库:
打开终端,执行以下命令克隆项目到本地:
git clone https://github.com/osinmv/function-lookup-mcp.git cd function-lookup-mcp - 安装Python依赖:
该服务器需要 Python 3.13 及 'FastMCP' 库。建议使用虚拟环境进行安装:
# 创建并激活虚拟环境 python3.13 -m venv venv source venv/bin/activate # 安装 FastMCP 库 pip install fastmcp - 安装 Universal Ctags:
该服务器依赖 'Universal Ctags' 工具来解析源代码。请根据你的操作系统安装它:
- macOS:
brew install universal-ctags - Debian/Ubuntu:
sudo apt-get install universal-ctags - Windows: 请参考 Universal Ctags GitHub 获取安装指南。
- macOS:
服务器配置 (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' 文件夹。请将其替换为仓库的绝对路径。
基本使用方法
- 启动服务器:
请确保你已进入 'function-lookup-mcp' 目录,并激活了虚拟环境(如果使用):
服务器将通过标准输入输出(Stdio)等待MCP客户端的连接和请求。cd function-lookup-mcp source venv/bin/activate # 如果你创建了虚拟环境 python main.py - 索引代码:
通过你的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 }
- MCP客户端请求示例(逻辑概念,非直接bash命令):
- 搜索声明:
一旦代码被索引,你可以通过MCP客户端调用 'search_declarations' 工具来查找代码声明,例如搜索名为 'add_numbers' 的声明:
- MCP客户端请求示例:
{ "jsonrpc": "2.0", "method": "api-lookup.search_declarations", "params": { "name": "add_numbers", "limit": 5 }, "id": 2 }
- MCP客户端请求示例:
- 列出API文件或函数: 你可以使用 'list_indexed_apis'、'list_api_files' 和 'list_functions_by_file' 工具来浏览已索引的API结构和文件内容。
信息
分类
开发者工具