Code Scanner Server

Code Scanner Server

一个 MCP 服务器,用于扫描代码库以提取结构信息(类、函数等),具有灵活的过滤选项,并以 LLM 友好的格式输出。

Category
访问服务器

README

code-scanner-server

一个 CLI 工具和 MCP 服务器,用于扫描代码文件中的定义(类、函数等),遵循 .gitignore,提供行号,并输出 LLM 友好的格式(XML/Markdown)。

本项目提供了一个使用 TypeScript 和 Node.js 构建的多功能代码扫描工具。它利用 Tree-sitter 解析库来分析源代码并提取结构信息。它可以作为命令行界面 (CLI) 工具和 MCP(模型上下文协议)服务器运行。

注意: 此工具正在积极开发中。虽然核心功能可以运行,但某些功能或特定语言解析器可能尚未经过全面测试,并且可能包含错误或限制。

功能

  • 代码定义提取: 识别函数、类、变量、接口、方法等。
  • 多语言支持: 通过 Tree-sitter 解析 JavaScript (.js, .jsx)、TypeScript (.ts, .tsx)、C# (.cs)、PHP (.php)、CSS (.css) 和 Python (.py)。
  • .gitignore 感知: 自动遵循 .gitignore 文件中定义的规则。
  • 灵活的过滤: 按定义类型、修饰符(publicprivate)、名称模式(正则表达式)和文件路径模式过滤结果。
  • 多种输出格式: 以 Markdown(默认)、XML 或 JSON 格式生成结果。
  • 可配置的详细程度: 输出详细程度:minimalstandard(默认)、detailed
  • 双模式操作: 作为独立的 CLI 工具或集成的 MCP 服务器运行。

使用模式

1. 命令行界面 (CLI)

直接从终端运行扫描器。此模式需要 --directory 参数,指定目标代码库。

基本用法:

node build/index.js --directory /path/to/your/codebase

常用选项:

  • -d, --directory <path>: (必需) 要扫描的目录的绝对或相对路径。
  • -p, --patterns <patterns...>: 文件扩展名的 Glob 模式(例如,"**/*.ts" "**/*.js")。默认为 JS、TSX、CS、PHP、CSS、PY 文件。
  • -f, --format <format>: 输出格式 (xmlmarkdownjson)。默认值:markdown
  • -l, --detail <level>: 详细程度 (minimalstandarddetailed)。默认值:standard
  • --include-types <types...>: 仅包含特定定义类型(例如,classmethod)。
  • --exclude-types <types...>: 排除特定定义类型。
  • --include-modifiers <modifiers...>: 仅包含具有特定修饰符的定义(例如,public)。
  • --exclude-modifiers <modifiers...>: 排除具有特定修饰符的定义。
  • --name-pattern <regex>: 包含与 JavaScript 正则表达式模式匹配的定义。
  • --exclude-name-pattern <regex>: 排除与 JavaScript 正则表达式模式匹配的定义。
  • --include-paths <paths...>: 要包含的其他文件路径模式 (glob)。
  • --exclude-paths <paths...>: 要排除的文件路径模式 (glob)。
  • -h, --help: 显示所有选项的详细帮助信息。

示例(扫描 src 中的 TypeScript 文件,输出详细的 JSON):

node build/index.js -d ./src -p "**/*.ts" -f json -l detailed

2. MCP 服务器模式 (scan_code 工具)

如果在没有 --directory 参数的情况下运行,该工具将作为 MCP 服务器启动,通过标准输入/输出监听请求。这允许与 AI 助手等 MCP 客户端集成。

  • 工具名称: scan_code
  • 描述: 扫描指定目录中的代码文件,并根据提供的过滤器返回定义列表。
  • 输入模式: 接受与 CLI 选项对应的参数。directory 属性是必需的。
    {
      "type": "object",
      "properties": {
        "directory": { "type": "string", "description": "要扫描的目录的绝对路径。" },
        "filePatterns": { "type": "array", "items": { "type": "string" }, "description": "文件的 Glob 模式。", "default": ["**/*.js", ..., "**/*.py"] },
        "outputFormat": { "type": "string", "enum": ["xml", "markdown", "json"], "default": "markdown" },
        "detailLevel": { "type": "string", "enum": ["minimal", "standard", "detailed"], "default": "standard" },
        "includeTypes": { "type": "array", "items": { "type": "string" } },
        "excludeTypes": { "type": "array", "items": { "type": "string" } },
        "includeModifiers": { "type": "array", "items": { "type": "string" } },
        "excludeModifiers": { "type": "array", "items": { "type": "string" } },
        "namePattern": { "type": "string", "description": "名称的正则表达式模式。" },
        "excludeNamePattern": { "type": "string", "description": "要排除的名称的正则表达式模式。" },
        "includePaths": { "type": "array", "items": { "type": "string" } },
        "excludePaths": { "type": "array", "items": { "type": "string" } }
      },
      "required": ["directory"]
    }
    
  • 与 AI 助手一起使用的示例: "使用 code-scanner-server scan_code 在目录 /path/to/project 上扫描,输出 xml 格式。"

安装

  1. 先决条件: 确保已安装 Node.js 和 npm。
  2. 克隆(可选): 如果您没有代码,请克隆存储库。
    # git clone <repository_url>
    # cd code-scanner-server
    
  3. 安装依赖项:
    npm install
    
  4. 构建: 编译 TypeScript 代码。
    npm run build
    
    这将在 build/index.js 创建可执行的 JavaScript 文件。

配置 (MCP 服务器)

要使用 MCP 服务器模式,请将其添加到 MCP 客户端的配置文件中(例如,桌面应用程序的 claude_desktop_config.json 或 VS Code 扩展的 cline_mcp_settings.json)。

重要提示: 将下面的示例中的 /path/to/code-scanner-server 替换为您系统上此项目目录的绝对路径

示例 (claude_desktop_config.json / cline_mcp_settings.json):

{
  "mcpServers": {
    "code-scanner-server": {
      "command": "node",
      "args": [
        "/absolute/path/to/your/code-scanner-server/build/index.js" // <-- 替换此路径! (例如,Windows 上的 "C:\\Users\\YourUser\\Projects\\code-scanner-server\\build\\index.js")
      ],
      "env": {},
      "disabled": false,
      "autoApprove": [] // 如果需要,在此处添加工具名称以进行自动批准
    }
  }
}

请记住在修改配置后重新启动 MCP 客户端应用程序(IDE、桌面应用程序)以使更改生效。

开发

  • 监视模式: 当源文件更改时自动重建项目:
    npm run watch
    
  • 调试 (MCP 模式): 通过 stdio 调试 MCP 服务器可能很复杂。使用 MCP Inspector 工具可以更轻松地进行调试:
    npm run inspector
    
    这将启动带有 Node.js 检查器附加的服务器,并提供一个 URL 来连接调试工具(如 Chrome DevTools)。

致谢

该项目主要借助 AI 进行开发,主要使用通过 Visual Studio Code 的 Roo Code 扩展访问的 Google 的 Gemini 2.5 Pro 模型。

许可证

该项目根据 GNU General Public License v3.0 获得许可 - 有关详细信息,请参阅 LICENSE 文件。

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选