该项目是一个基于 Model Context Protocol (MCP) 的服务器实现,专注于为大型语言模型(LLM)客户端提供代码仓库的深度理解和上下文信息。它能够分析本地或远程的代码库,提取结构、代码详情、关键文件和文档,并将这些信息以标准化的方式提供给AI应用。
主要功能点
- 代码仓库管理: 支持克隆(GitHub仓库)或复制(本地目录)代码到本地缓存,并进行管理。
- 仓库结构分析: 提供代码库的目录结构、文件组织以及可分析的文件列表。
- 关键文件识别: 基于代码复杂度等指标,智能识别出仓库中结构上最重要的文件。
- 代码结构映射: 生成详细的仓库代码地图,展示函数签名、类定义、继承关系、代码结构和依赖等信息。
- 文档提取与分析: 检索并分析仓库中的文档文件(如README、API文档等)。
- 定向分析: 支持对仓库中的特定文件或目录进行分析,而非总是整个仓库。
- 内容刷新: 能够更新已缓存的仓库到最新版本,并重新分析。
安装步骤
该服务器通过 'uvx' 工具运行,'uvx' 是 'uv' Python 包管理器的一部分。
- 安装 uv: 如果您还没有安装 'uv',请按照其官方指南进行安装(通常通过 'curl' 或 'pip')。具体请参考 astral.sh/uv。
- 安装服务器: 安装 'uv' 后,您的 MCP 客户端配置中指定 'uvx' 命令时,'uvx' 会自动处理服务器包的下载和安装。无需手动安装。
服务器配置
MCP 服务器需要通过 MCP 客户端进行配置和启动。您需要在 MCP 客户端的配置文件中添加以下 MCP 服务器配置信息。客户端通过这些信息知道如何启动和连接此代码理解服务器。
配置示例(概念描述,非代码):
{ "mcpServers": { "code-understanding": { /* 您给服务器起的本地名称 */ "command": "uvx", /* 启动命令 */ "args": [ "code-understanding-mcp-server" ], /* 启动参数 */ // 可选配置项 (Optional configuration options) // "env": { // "GITHUB_PERSONAL_ACCESS_TOKEN": "your-github-token-here" // 用于访问私有GitHub仓库 // }, // "args": [ // "code-understanding-mcp-server", // "--cache-dir", "~/custom-cache-dir", // override repository cache location // "--max-cached-repos", "20", // override maximum number of cached repos // "--transport", "stdio", // transport type (stdio or sse) // "--port", "3001" // port for SSE transport (only used with sse) // ] } } }
- 'command':必须设置为 'uvx'。
- 'args':包含启动服务器的主命令 '"code-understanding-mcp-server"'。
- 'env':可选,用于设置环境变量,例如 'GITHUB_PERSONAL_ACCESS_TOKEN' 以便服务器访问私有 GitHub 仓库或避免 API 限制。
- 'args' 中的可选参数(高级配置):
- '--cache-dir <目录路径>':指定服务器存储克隆仓库的缓存目录。
- '--max-cached-repos <数量>':设置缓存中保留的最大仓库数量。
- '--transport <类型>':选择服务器与客户端通信的传输协议('stdio' 或 'sse')。
- '--port <端口号>':当 'transport' 为 'sse' 时,指定服务器监听的端口。
服务器首次运行时会在标准的平台特定配置目录下创建 'config.yaml' 默认配置文件,您也可以通过手动修改该文件进行一些基础配置。
基本使用方法
用户通常不会直接与此服务器交互。而是通过支持 MCP 协议的 LLM 客户端(如特定的AI编程助手)来使用它。客户端会根据用户的请求,自动调用配置好的代码理解 MCP 服务器提供的工具(JSON-RPC 方法),例如:
- 客户端调用 'clone_repo' 工具,提供一个GitHub URL或本地路径,让服务器克隆仓库到缓存。
- 客户端调用 'get_repo_structure' 工具,获取仓库的目录和文件概览。
- 客户端调用 'get_repo_critical_files' 工具,找出仓库中最重要的文件供AI优先分析。
- 客户端调用 'get_source_repo_map' 工具,获取特定文件或目录的详细代码结构地图。
- 客户端调用 'get_repo_documentation' 工具,获取仓库的文档内容。
- 客户端调用 'get_repo_file_content' 工具,获取特定文件的原始内容。
- 客户端调用 'refresh_repo' 工具,更新缓存的仓库到最新。
这些工具调用都是通过 MCP 客户端透明地完成的,AI 助手利用服务器返回的信息来更好地理解代码库,从而提供更准确的代码建议、问答或自动化任务。
信息
分类
开发者工具