使用说明
项目简介
cogniteration仓库中的 'code-context' 子项目实现了一个基于 Model Context Protocol (MCP) 的服务器,专注于代码库的上下文分析。它提供工具来分析目录结构、读取文件内容,并计算代码的token数量,帮助大型语言模型 (LLM) 更好地理解和处理代码库。此外,它还包含预定义的Prompt,指导LLM进行代码库分析任务。
主要功能点
- 目录分析工具 (analyze_directory): 递归分析指定目录,返回目录中所有文件的路径、代码行数和token数量。该工具会遵循每个目录下的 '.gitignore' 规则,并跳过二进制文件,确保分析结果的准确性和效率。
- 文件读取工具 (read_files): 批量读取指定路径的文件内容。对于每个文件,服务器会进行路径安全校验,并跳过二进制文件。返回结果包含文件内容或错误信息,方便LLM获取代码文件内容。
- 代码库分析Prompt (analyze-codebase): 提供一个预定义的Prompt,指导LLM如何有效地利用 'analyze_directory' 和 'read_files' 工具进行代码库分析,包括分析流程、注意事项和最佳实践建议。
安装步骤
该项目为TypeScript项目,使用 Bun 运行时环境。请确保您已安装 Bun。
-
克隆仓库:
git clone https://github.com/AdjectiveAllison/cogniteration.git cd cogniteration -
安装依赖 (可选): 虽然代码中没有 'package.json' 文件,理论上可能不需要显式安装依赖,但如果遇到问题,可以尝试在 'code-context' 目录下创建 'package.json' 并添加如下内容,然后运行 'bun install'。
{ "dependencies": { "@modelcontextprotocol/sdk": "latest", "@huggingface/transformers": "latest", "zod": "latest", "zod-to-json-schema": "latest", "ignore": "latest" } }
服务器配置
MCP客户端需要配置服务器的启动命令和参数才能连接到 'code-context-mcp' 服务器。以下是配置信息示例 (JSON 格式):
{ "serverName": "code-context-mcp", "command": "bun", "args": [ "run", "code-context/server.ts", "/path/to/your/codebase" ] }
参数说明:
- 'serverName': 服务器名称,设置为 'code-context-mcp'。
- 'command': 启动服务器的命令,这里使用 'bun' 运行时。
- 'args': 传递给 'bun run' 命令的参数列表。
- '"run"': Bun 命令,用于运行脚本。
- '"code-context/server.ts"': 'code-context' 服务器脚本的路径。
- '"/path/to/your/codebase"': 请替换为你要分析的代码库根目录的绝对路径。 这是 'code-context-mcp' 服务器允许访问的根目录。可以添加多个允许访问的目录,作为额外的参数。
注意: MCP客户端需要根据自身配置文件的格式填写以上JSON配置。
基本使用方法
-
启动服务器: 在MCP客户端中配置好上述服务器配置后,启动 'code-context-mcp' 服务器。服务器将在标准输入/输出 (stdio) 上运行,并输出日志信息到标准错误 (stderr)。
-
客户端请求: MCP客户端可以通过 JSON-RPC 协议向服务器发送请求,调用 'analyze_directory' 和 'read_files' 工具,或获取 'analyze-codebase' Prompt。
-
工具调用示例: 例如,客户端可以发送 'CallToolRequest' 请求,调用 'analyze_directory' 工具分析指定的目录,服务器将返回包含文件信息和统计数据的响应。调用 'read_files' 工具可以读取指定文件的内容。
-
Prompt 使用示例: 客户端可以发送 'GetPromptRequest' 请求,获取 'analyze-codebase' Prompt 的内容,并将其用于指导后续的代码分析任务。
通过配置和使用 'code-context-mcp' 服务器,LLM 应用可以获得代码库的结构和内容信息,从而更好地理解和生成代码,或进行代码相关的问答和分析。
信息
分类
开发者工具