使用说明

项目简介

'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 客户端。

安装步骤

  1. 前提条件:确保已安装 Node.js 和 npm。
  2. 安装依赖
    npm install
  3. 构建项目
    npm run build
    构建完成后,会在 'build' 目录下生成 'index.js' 文件。

服务器配置

要将 '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 文件获取更详细的参数说明和使用示例。

信息

分类

开发者工具