DownAtTheBottomOfTheMoleHole/megalinter-mcp
GitHub: DownAtTheBottomOfTheMoleHole/megalinter-mcp
将 MegaLinter 封装为 MCP 服务器,使 AI 助手能通过自然语言交互完成多语言代码检查、安全扫描和报告分析。
Stars: 0 | Forks: 0
# MegaLinter MCP 服务器

[](https://github.com/DownAtTheBottomOfTheMoleHole/megalinter-mcp/actions/workflows/publish-mcp.yml)
[](https://codecov.io/github/DownAtTheBottomOfTheMoleHole/megalinter-mcp)
[](https://registry.npmjs.org/@downatthebottomofthemolehole/megalinter-mcp-server)
[](./LICENSE)
[](https://nodejs.org/)
一个用于通过 `mega-linter-runner` 运行 [Ox Security MegaLinter](https://megalinter.io/) 的模型上下文协议 (MCP) 服务器。适用于任何 CI/CD 平台 (GitHub Actions, GitLab CI, Azure DevOps, CircleCI, Jenkins) 或在本地运行。
## 概述
本服务器共提供 15 个 MCP 工具:10 个核心工具和 5 个便捷别名,涵盖执行、发现和分析工作流。
- `megalinter_quick_action` 用于带有合理默认值的简短自然语言请求。
- `megalinter_run` 用于执行带有可配置运行时和运行器选项的 MegaLinter。
- `megalinter_write_config` 用于生成最小化的 `.mega-linter.yml` 文件。
- `megalinter_list_flavors` 用于返回常见的 MegaLinter 版本。
- `megalinter_get_linters` 用于按语言、安全重点和自动修复能力发现可用的 linter。
- `megalinter_get_security_info` 用于按威胁类别对安全 linter 进行分组。
- `megalinter_get_reporters` 用于列出支持的报告输出格式和面向 CI 的报告器。
- `megalinter_parse_reports` 用于解析 JSON 或 SARIF 报告产物。
- `megalinter_get_issue_summary` 用于按 linter 和严重程度汇总报告问题。
- `megalinter_get_security_recommendations` 用于生成以安全为中心的修复指南。
### 快速开始 (简短提示词)
如果你喜欢使用简短的提示词,请首先使用 `megalinter_quick_action`:
- `@megalinter quick scan this repository`
- `@megalinter security scan`
- `@megalinter summarise errors`
- `@megalinter list python security linters`
- `@megalinter write config`
或者使用**超短别名**以尽量减少输入:
- `@megalinter scan` — 使用默认值的快速扫描
- `@megalinter summary` — 汇总上次运行的错误
- `@megalinter parse` — 解析 JSON 报告
- `@megalinter help_quick` — 针对你项目的上下文感知帮助
### 平台兼容性
此 MCP 服务器是**平台无关的**并且通用:
- ✅ **本地** — 从你的 IDE 或命令行运行 MegaLinter
- ✅ **GitHub Actions** — 集成到工作流中
- ✅ **GitLab CI/CD** — 在 GitLab 管道中使用
- ✅ **Azure DevOps** — 在 Azure Pipelines 中运行
- ✅ **CircleCI, Jenkins, Bitbucket Pipelines** — 任何支持 Docker 的 CI/CD 平台
- ✅ **AI 代理与 Copilot** — 通过 MCP 自动化代码质量检查
唯一的要求是 Docker (或兼容的容器运行时,如 Colima)。
### 工具矩阵
| 工具 | 类别 | 典型结果 |
| --- | --- | --- |
| `megalinter_quick_action` | 交互式 | 以默认值处理简短的自然语言请求 |
| `scan` | 别名 | 用于快速扫描的超短别名 |
| `summary` | 别名 | 用于错误汇总的超短别名 |
| `parse` | 别名 | 用于报告解析的超短别名 |
| `help_quick` | 别名 | 用于上下文感知帮助的超短别名 |
| `megalinter_help_quick` | 帮助 | 针对你项目的上下文感知建议 |
| `megalinter_run` | 执行 | 运行代码检查并生成报告产物 |
| `megalinter_write_config` | 配置 | 生成基础 `.mega-linter.yml` |
| `megalinter_list_flavors` | 发现 | 为你的技术栈识别合适的版本 |
| `megalinter_get_linters` | 发现 | 按语言、安全和自动修复支持过滤 linter |
| `megalinter_get_security_info` | 发现 | 查看按 SAST、secrets、容器和 IaC 分组的安全 linter |
| `megalinter_get_reporters` | 发现 | 为本地和 CI 工作流选择输出/报告格式 |
| `megalinter_parse_reports` | 分析 | 以结构化形式读取 JSON 或 SARIF 报告 |
| `megalinter_get_issue_summary` | 分析 | 汇总问题总数和最常出错的 linter |
| `megalinter_get_security_recommendations` | 分析 | 生成实用的左移安全操作 |
## 工具
### MegaLinter 快速操作
交互式快捷方式,接受简短请求并将其路由到正确的工作流。
输入:
- `request` (字符串, 可选): 简短指令。默认值: `quick scan`。
- `action` (字符串, 可选): 显式快速操作 (`scan`, `config`, `flavors`, `linters`, `security`, `reporters`, `parse`, `summary`, `recommendations`)。
- `scanMode` (字符串, 可选): 扫描预设 (`quick`, `full`, `security`, `fix`)。
- `target` (字符串, 可选): 要扫描的目录。默认值: `.`。
- `workingDirectory` (字符串, 可选): 命令工作目录。
- `reportsPath` (字符串, 可选): 报告目录。默认值: `megalinter-reports`。
- `reportType` (字符串, 可选): 解析格式 (`json` 或 `sarif`)。
- `severity` (字符串, 可选): 汇总过滤器 (`error`, `warning`, `info`)。
- `language` (字符串, 可选): 用于 linter 查询的语言过滤器。对于扫描,会映射到版本提示 (`python`, `javascript`, `terraform` 等)。
- `securityOnly` (布尔值, 可选): 在 linter 查询中仅返回安全 linter。对于扫描,强制使用 `security` 版本。
- `autoFixOnly` (布尔值, 可选): 在 linter 查询中仅返回自动修复 linter。
- `timeoutMinutes` (数字, 可选): 扫描操作的超时时间。默认值: `20`。
- `summaryOnly` (布尔值, 可选): 为扫描返回简明输出。默认值: `true`。
- `flavor` (字符串, 可选): 扫描操作的可选版本覆盖。
- `fix` (布尔值, 可选): 为扫描操作强制应用自动修复。
- `targetPath` (字符串, 可选): 写入配置请求的配置输出路径。
示例:
- `request: "quick scan"` -> 针对更改的文件运行 `ci_light`。
- `request: "full scan"` -> 运行 `all` 版本。
- `request: "security scan"` -> 运行 `security` 版本。
- `request: "summarise errors"` -> 返回过滤为错误的问题汇总。
- `request: "parse sarif report"` -> 解析 SARIF 输出。
- `action: "summary", severity: "error"` -> 无需解析短语即可获得确定性汇总。
- `action: "scan", scanMode: "security"` -> 确定性安全扫描。
### `scan` (超短别名)
以最少的输入运行快速扫描。接受可选参数以进行自定义。
输入:
- `language` (字符串, 可选): 映射到版本的目标语言 (例如 `python`, `javascript`, `terraform`)。
- `scanMode` (字符串, 可选): 扫描预设 (`quick`, `full`, `security`, `fix`)。默认值: `quick`。
- `summaryOnly` (布尔值, 可选): 返回简明输出。默认值: `true`。
示例: `@megalinter scan` 运行快速扫描并输出简明结果。
### `summary` (超短别名)
以最少的输入汇总上次 MegaLinter 运行的错误。
输入:
- `severity` (字符串, 可选): 按严重程度过滤 (`error`, `warning`, `info`)。
- `linterFilter` (字符串, 可选): 按 linter 名称过滤。
示例: `@megalinter summary` 显示所有错误/警告总数。
### `parse` (超短别名)
以最少的输入解析 MegaLinter 报告文件。
输入:
- `reportType` (字符串, 可选): 报告格式 (`json` 或 `sarif`)。默认值: `json`。
- `reportsPath` (字符串, 可选): 报告目录路径。
示例: `@megalinter parse` 解析 JSON 报告。
### MegaLinter 快速帮助
根据你当前的代码库获取上下文感知的帮助。检测语言、框架、Docker、Terraform 和安全文件以建议相关命令。
无需输入。
示例: `@megalinter help_quick` 返回针对你项目的定制建议。
### 运行 MegaLinter
当你需要完整的参数级别控制时使用此工具。对于简短的提示词,优先使用 `megalinter_quick_action`。
通过 `npx` 运行 `mega-linter-runner`。
输入:
- `workingDirectory` (字符串, 可选): 命令工作目录。默认为当前进程目录。
- `path` (字符串, 可选): 要进行代码检查的目录路径。
- `flavor` (字符串, 可选): MegaLinter 版本。默认值: `all`。
- `release` (字符串, 可选): MegaLinter 镜像标签。默认值: `v9`。
- `image` (字符串, 可选): 完整的 Docker 镜像覆盖。
- `env` (字符串, 可选): 传递给 `--env` 的环境变量字符串。
- `fix` (布尔值, 可选): 应用自动修复。
- `help` (布尔值, 可选): 显示 `mega-linter-runner` 帮助。
- `install` (布尔值, 可选): 生成 MegaLinter 启动配置。
- `containerName` (字符串, 可选): Docker 容器名称覆盖。
- `removeContainer` (布尔值, 可选): 运行后移除容器。
- `configFile` (字符串, 可选): `.mega-linter.yml` 的路径。
- `reportsPath` (字符串, 可选): 报告目录。默认值: `megalinter-reports`。
- `disableLinters` (字符串, 可选): 要禁用的 linter 的逗号分隔列表。
- `lintChangedFilesOnly` (布尔值, 可选): 当为 true 时设置 `VALIDATE_ALL_CODEBASE=false`。
- `runnerVersion` (字符串, 可选): `mega-linter-runner` 的 npm 版本 (例如 `latest`)。
- `timeoutSeconds` (数字, 可选): 超时时间(秒)。默认值: `3600`。
- `summaryOnly` (布尔值, 可选): 返回简明日志。默认值: `false`。
- `extraArgs` (字符串[], 可选): 额外的 CLI 参数。
### 编写 MegaLinter 配置
写入一个最小化的 MegaLinter 配置。
输入:
- `targetPath` (字符串, 可选): 输出文件路径。默认值: `.mega-linter.yml`。
- `applyFixes` (字符串, 可选): `APPLY_FIXES` 的值。默认值: `none`。
- `showElapsedTime` (布尔值, 可选): `SHOW_ELAPSED_TIME` 的值。默认值: `true`。
- `flavorSuggestions` (布尔值, 可选): `FLAVOR_SUGGESTIONS` 的值。默认值: `false`。
- `disableLinters` (字符串[], 可选): `DISABLE_LINTERS` 的值。
### 列出 MegaLinter Flavors
返回内置的常见版本列表 (`all`, `javascript`, `python`, `terraform` 等)。
### 获取 MegaLinter Linters
从内置目录返回 linter 元数据并支持定向过滤。
输入:
- `language` (字符串, 可选): 按语言过滤 (例如 `python`, `javascript`, `terraform`)。
- `securityOnly` (布尔值, 可选): 仅返回专注于安全的 linter。
- `autoFixOnly` (布尔值, 可选): 仅返回具有自动修复功能的 linter。
### 获取 MegaLinter 安全信息
返回按类别分组 linter,例如 SAST、secrets、供应链、容器和基础设施。
输入:
- 无。
### 获取 MegaLinter Reporters
返回可用的 MegaLinter 报告器,包括面向 CI 的格式。
输入:
- 无。
### 解析 MegaLinter 报告
从报告目录解析 MegaLinter 报告文件。
输入:
- `reportsPath` (字符串, 可选): 报告目录路径。默认值: `megalinter-reports`。
- `reportType` (字符串, 可选): 报告类型 (`json` 或 `sarif`)。默认值: `json`。
### 获取 MegaLinter Issue 摘要
从 `megalinter-report.json` 汇总问题,并可以应用严重程度/linter 过滤器。
输入:
- `reportsPath` (字符串, 可选): 报告目录路径。默认值: `megalinter-reports`。
- `severityFilter` (字符串, 可选): 按严重程度过滤结果 (`error`, `warning`, `info`)。
- `linterFilter` (字符串, 可选): 按 linter 名称过滤结果。
### 获取 MegaLinter 安全建议
基于已解析的报告数据中的活动 linter 生成安全建议。
输入:
- `reportsPath` (字符串, 可选): 报告目录路径。默认值: `megalinter-reports`。
## 提示词手册
在 Copilot Chat 中配合 `@megalinter` 使用这些可复制粘贴的提示词。
当未提供路径时,CLI 工具默认为当前工作区根目录。
如果你将文件或文件夹作为 Copilot 上下文 (`#file` 或 `#folder`) 添加,请在提示词中引用它,工具将以该路径为目标。
### 快速操作 (`megalinter_quick_action`)
```
@megalinter quick scan
@megalinter full scan
@megalinter security scan
@megalinter summarise errors
@megalinter parse sarif report
@megalinter write config
```
**预期输出**: 将每个简短请求路由到具有合理默认值的正确工具。
使用显式 action 字段的确定性替代方案:
```
@megalinter run quick action with action summary and severity error
@megalinter run quick action with action parse and reportType sarif
@megalinter run quick action with action scan and scanMode security
```
### 运行 MegaLinter (`megalinter_run`)
```
@megalinter run megalinter with flavor all on . with reports in megalinter-reports
```
**预期输出**: 执行 linter 并报告在所有语言中发现的问题。创建包含 JSON、SARIF 和文本报告的 `megalinter-reports/` 目录。
### 创建配置 (`megalinter_write_config`)
```
@megalinter create a MegaLinter config at .mega-linter.yml
```
**预期输出**: 创建包含指定设置的 `.mega-linter.yml`,随时可以进行自定义。
### 列出版本 (`megalinter_list_flavors`)
```
@megalinter list all available MegaLinter flavors
```
**预期输出**: 包含版本 (all, python, javascript, go 等) 及其描述和用例的表格。
### 查询 Linter (`megalinter_get_linters`)
```
@megalinter list python security linters with autofix support
```
**预期输出**: 当前目录中与 Python 相关以及支持自动修复的多语言安全 linter 的过滤列表 (如果有与查询匹配的项)。
### 安全类别 (`megalinter_get_security_info`)
```
@megalinter show MegaLinter security linter categories
```
**预期输出**: 安全类别 (例如 `sast`、`secrets`、`supply-chain`、`container`、`infrastructure`) 及其关联的 linter (gitleaks、trivy 等)。
### 列出报告器 (`megalinter_get_reporters`)
```
@megalinter list available MegaLinter reporters
```
**预期输出**: 报告器列表 (console, json, sarif, github-comment 等) 及其激活方法。
### 解析报告 (`megalinter_parse_reports`)
```
@megalinter parse the json report from megalinter-reports
```
**预期输出**: 解析为结构化数据 (原始报告载荷) 的 MegaLinter JSON 或 SARIF 报告内容。
### 问题汇总 (`megalinter_get_issue_summary`)
```
@megalinter summarise issues from megalinter-reports with severity error
```
**预期输出**: 按严重程度和 linter 输入过滤的问题汇总,按 linter 聚合,带有总数和运行次数。
### 安全建议 (`megalinter_get_security_recommendations`)
```
@megalinter generate security recommendations using megalinter-reports
```
**预期输出**: 按严重程度排序的、可操作的安全建议,附带 linter 名称、规则 ID 和建议的下一步操作。
## 依赖
### 系统依赖
- Node.js `>=24.0.0`
- npm (随 Node.js 捆绑)
- Docker Engine 或 Docker Desktop (运行 `megalinter_run` 时必须处于运行状态)
- 可选的本地容器运行时包装器,例如 Colima
### npm 依赖
运行时:
- `@modelcontextprotocol/sdk` (MCP 服务器 SDK)
开发环境:
- `typescript` (构建/编译)
- `tsx` (开发运行器)
- `@types/node` (Node.js 类型)
运行时说明:
- `mega-linter-runner` 在运行时通过 `npx` 执行,可以使用 `runnerVersion` 工具输入进行固定。
## 安装
```
npm install
npm run build
```
## 配置
### 在 VS Code Copilot Chat 中使用
此工作区已在 `.vscode/mcp.json` 中预配置:
```
{
"servers": {
"megalinter": {
"type": "stdio",
"command": "node",
"args": ["./dist/index.js"]
}
}
}
```
更改 MCP 配置后,请重新加载 VS Code (`Cmd+Shift+P` → `Developer: Reload Window`)。
然后使用 `@megalinter` 在 Copilot Chat 中查询服务器,例如:
```
@megalinter list available flavors
@megalinter list security linters for javascript
```
### 在其他 MCP 客户端中使用
使用运行已编译入口点的 stdio 服务器配置:
```
{
"name": "megalinter-mcp-server",
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/megalinter-mcp/dist/index.js"]
}
```
首先使用 `npm run build` 进行构建,然后启动你的 MCP 客户端。
## 运行
```
npm start
```
开发模式:
```
npm run dev
```
## 调试
使用 `.vscode/launch.json`:
- `Debug MCP Server` (运行 `npm run dev`)
- `Debug MCP Server (Built)` (构建后运行 `dist/index.js`)
在 `src/index.ts` 中设置断点,然后按 `F5`。
## 测试
有关 Copilot Chat 场景、手动 JSON-RPC 检查和故障排除指南,请参阅 [docs/TESTING.md](./docs/TESTING.md)。
在 Copilot Chat 中的快速验证提示词:
```
@megalinter list available flavors
```
## 交互式 VS Code 工作流
### 1. 左移安全分诊
1. 要求 Copilot 运行扫描:
```
@megalinter run megalinter on this repository with reports enabled
```
1. 解析生成的报告:
```
@megalinter parse the json report in megalinter-reports
```
1. 汇总并确定优先级:
```
@megalinter summarise error-level issues and top failing linters
```
1. 请求安全指导:
```
@megalinter generate security recommendations from the current report
```
### 2. 特定语言的 Linter 引导
1. 为你的技术栈发现 linter:
```
@megalinter list python security linters with autofix support
```
1. 生成启动配置:
```
@megalinter create a megalinter config file with apply fixes set to none
```
1. 禁用不合适的 linter 并进行迭代。
### 3. CI/CD 报告器选择
1. 列出报告器:
```
@megalinter list available reporters
```
1. 为你的管道选择格式 (例如,用于安全工具的 SARIF,用于人类可读摘要的 Markdown)。
### 最佳实践
- 从 `megalinter_write_config` 开始,然后分步骤收紧规则。
- 在快速反馈循环期间使用 `lintChangedFilesOnly`,并在 CI 中进行完整扫描。
- 保持 `reportsPath` 稳定,以便下游分析工具始终从已知位置读取。
- 优先使用 `megalinter_get_issue_summary` 进行分诊,然后再请求完整的报告转储。
- 定期运行 `megalinter_get_security_recommendations` 以维持左移覆盖率。
## 其他用例
- **合并前质量门禁**: 在 PR 检查中运行 `megalinter_run` 并发布 SARIF 输出。
- **代码库引导包**: 使用 `megalinter_get_linters` 和 `megalinter_list_flavors` 快速选择基线。
- **安全基线报告**: 结合 `megalinter_parse_reports` 和 `megalinter_get_issue_summary` 生成定期快照。
- **合规证据**: 将生成的报告和摘要存储为 CI 产物以供审计追踪。
- **开发者自助服务**: 让贡献者直接通过 Copilot Chat 查询可用的 linter/报告器。
## 相关项目
### 官方 MegaLinter 资源
- [MegaLinter 官网](https://megalinter.io/) — 完整的文档和配置指南
- [MegaLinter 仓库](https://github.com/oxsecurity/megalinter) — 源代码和问题跟踪
- [mega-linter-runner](https://registry.npmjs.org/mega-linter-runner) — 此服务器使用的 npm 包
### CI/CD 集成
- [MegaLinter Azure DevOps 扩展](https://github.com/downatthebottomofthemolehole/megalinter-ado) — 由同一作者编写的 ADO 任务 (也已获得 Ox Security 认可)
- GitHub Actions: 使用 MegaLinter 官方的 [GitHub Action](https://github.com/marketplace/actions/megalinter)
- GitLab CI/CD: 参见 [MegaLinter GitLab 集成文档](https://raw.githubusercontent.com/oxsecurity/megalinter/main/docs/install-gitlab.md)
- Jenkins, CircleCI 及其他: 在任何 CI/CD 管道中通过 Docker 运行 MegaLinter
### 模型上下文协议
- [MCP 官方文档](https://modelcontextprotocol.io/)
- [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk)
- [MCP 服务器注册表](https://github.com/mcp)
## 社区与贡献
- [贡献指南](./CONTRIBUTING.md)
- [行为准则](./CODE_OF_CONDUCT.md)
- [安全策略](./SECURITY.md)
- [测试指南](./docs/TESTING.md)
- [维护者指南](./docs/MAINTAINERS.md)
## 署名与许可
由 Carl Dawson 在 [Down At The Bottom Of The Mole Hole](https://github.com/downatthebottomofthemolehole) 组织下维护。
根据 MIT 许可证授权。MegaLinter 由 [Ox Security](https://www.ox.security/) 管理。
标签:Azure DevOps, DevSecOps, GitHub Actions, GitLab CI, GNU通用公共许可证, Jenkins, MCP, MCP服务器, MegaLinter, MITM代理, Node.js, Ox Security, SARIF, URL发现, 上游代理, 云安全监控, 人体姿态估计, 代码安全, 代码审查, 代码规范, 代码风格, 威胁情报, 安全检测, 开发者工具, 开源, 开源框架, 持续部署, 持续集成, 漏洞枚举, 网络调试, 自动化, 自动笔记, 自定义脚本, 请求拦截, 质量保证, 错误基检测, 静态代码分析, 静态分析