使用说明
项目简介
'code-scanner-server' 是一个基于 Model Context Protocol (MCP) 构建的服务器,旨在为大型语言模型 (LLM) 客户端提供代码库的上下文信息。它能够扫描指定目录下的代码文件,提取函数、类、方法等定义,并支持多种编程语言。该服务器可以作为 LLM 应用的后端,帮助 LLM 理解代码结构,从而提升代码相关的任务处理能力,例如代码补全、代码理解、代码搜索等。除了 MCP 服务器模式,该工具也提供命令行界面 (CLI) 模式,方便用户在终端直接使用。
主要功能点
- 代码定义提取:识别并提取代码文件中的函数、类、变量、接口、方法、枚举等定义。
- 多语言支持:支持 JavaScript、TypeScript、C#、PHP、CSS 和 Python 等多种常用编程语言。
- .gitignore 规则支持:自动遵循 '.gitignore' 文件中定义的规则,排除不必要扫描的文件和目录。
- 灵活的结果过滤:允许用户通过定义类型、修饰符、名称模式和文件路径模式等条件,灵活地过滤扫描结果。
- 多种输出格式:支持 Markdown、XML 和 JSON 三种输出格式,方便 LLM 客户端解析和使用。
- 可配置的详细程度:提供 minimal、standard 和 detailed 三种详细程度级别,用户可以根据需求选择合适的输出信息量。
- 双模式运行:既可以作为独立的命令行工具使用,也可以作为 MCP 服务器集成到 LLM 客户端。
安装步骤
- 前提条件:确保已安装 Node.js 和 npm。
- 安装依赖:
npm install - 构建项目:
构建完成后,会在 'build' 目录下生成 'index.js' 文件。npm run build
服务器配置
要将 'code-scanner-server' 配置为 MCP 服务器,您需要在 MCP 客户端的配置文件中添加服务器信息。以下是一个配置示例,适用于 'claude_desktop_config.json' 或 'cline_mcp_settings.json' 等 MCP 客户端配置文件。
{ "mcpServers": { "code-scanner-server": { // 服务器名称,客户端用此名称来引用 "command": "node", // 启动服务器的命令,这里使用 node "args": [ "/absolute/path/to/your/code-scanner-server/build/index.js" // 服务器启动参数,指向构建后的 index.js 文件,请替换为您的 code-scanner-server 项目的绝对路径 ], "env": {}, "disabled": false, "autoApprove": [] // 可选,用于配置自动批准的工具名称 } } }
重要:请将 '/absolute/path/to/your/code-scanner-server' 替换为您本地 'code-scanner-server' 项目的绝对路径。配置完成后,重启您的 MCP 客户端应用使配置生效。
基本使用方法
配置完成后,您可以在支持 MCP 协议的 LLM 客户端中使用 'scan_code' 工具。例如,在 AI 助手中,您可以使用如下指令来调用 'scan_code' 工具扫描指定目录的代码,并以 XML 格式输出结果:
Use code-scanner-server scan_code on directory /path/to/project outputting xml format.
'scan_code' 工具接受以下参数,这些参数对应于 CLI 模式的选项:
- 'directory' (必填): 要扫描的目录的绝对路径。
- 'filePatterns' (可选): 文件扩展名 Glob 模式数组,用于指定要包含的文件,默认为 '["/*.js", "/.jsx", "**/.ts", "/*.tsx", "/.cs", "**/.php", "/*.css", "/*.py"]'。
- 'outputFormat' (可选): 输出格式,可选值包括 '"xml"', '"markdown"', '"json"',默认为 '"markdown"'。
- 'detailLevel' (可选): 输出详细程度,可选值包括 '"minimal"', '"standard"', '"detailed"',默认为 '"standard"'。
- 'includeTypes' (可选): 要包含的定义类型数组,例如 '["class", "method"]'。
- 'excludeTypes' (可选): 要排除的定义类型数组。
- 'includeModifiers' (可选): 要包含的修饰符数组,例如 '["public", "private"]'。
- 'excludeModifiers' (可选): 要排除的修饰符数组。
- 'namePattern' (可选): 用于匹配定义名称的正则表达式模式。
- 'excludeNamePattern' (可选): 用于排除定义名称的正则表达式模式。
- 'includePaths' (可选): 额外的文件路径模式数组,用于包含特定文件或目录。
- 'excludePaths' (可选): 文件路径模式数组,用于排除特定文件或目录。
请参考仓库 README 文件获取更详细的参数说明和使用示例。
信息
分类
开发者工具