内容
# Coverity MCP 服务器
一款提供 **Coverity静态分析** 集成到 Claude Code、GitHub Copilot、Cursor、Windsurf、Cline、OpenCode 及其他支持MCP的AI编码代理的 [模型上下文协议(Model Context Protocol,MCP)](https://modelcontextprotocol.io/) 服务器。
---
## 目录
1. [支持的平台](#支持的平台)
2. [前提条件](#前提条件)
3. [安装](#安装)
4. [MCP 服务器工具概述](#mcp-服务器工具概述)
5. [代理配置](#代理配置)
- [GitHub Copilot](#github-copilot)
- [Claude Code](#claude-code)
- [Cursor](#cursor)
- [Windsurf](#windsurf)
- [Cline](#cline)
- [OpenCode](#opencode)
6. [Coverity 技能指南](#coverity-技能指南)
7. [您的第一个扫描](#您的第一个扫描)
8. [故障排除指南](#故障排除指南)
9. [数据存储和隐私](#数据存储和隐私)
---
## 支持的平台
| 平台 | 架构 |
|---|---|
| macOS | Apple Silicon (ARM64) |
| macOS | Intel (AMD64) |
| Windows | AMD64 |
| Linux | AMD64 |
| Linux | ARM64 |
---
## 前提条件
### Coverity 静态分析
- **Coverity 静态分析 2026.3.0 或更高版本** 必须安装在运行 MCP 服务器的同一台机器上。
- Coverity 命令行工具必须可访问,可以通过已知的安装目录或通过系统 `PATH`。
- 需要有效的 Coverity 许可证。
要验证您的 Coverity 安装:
```bash
# 检查 coverity CLI 工具是否可访问
/path/to/coverity/bin/coverity --version
# 或者,如果 coverity 在您的 PATH 中
coverity --version
```
### Node.js
Node.js 18 或更高版本需要通过 `npx` 运行 MCP 服务器。
### 支持 MCP 的 AI 编码代理
您需要以下列出的代理之一,或任何支持 MCP 服务器的代码代理。如果您的编码代理未在此处列出,请参阅您代理的文档,了解如何配置 MCP 服务器。
---
## 安装
### 使用 npx 运行(推荐)
不需要安装。使用 `npx` 在您的代理配置中,并自动下载和缓存软件包:
```bash
npx -y @black-duck/coverity-mcp-server
```
要验证服务器是否正确启动:
```bash
npx -y @black-duck/coverity-mcp-server -version
```
您应该会看到类似的输出:
```
coverity-mcp-server version 2026.3.0
```
### 全局安装
全局安装如果您希望二进制文件始终在您的 `PATH` 上可用或直接访问捆绑的技能文件:
```bash
npm install -g @black-duck/coverity-mcp-server
```
全局安装后,二进制文件在您的 `PATH` 上:
```bash
coverity-mcp-server -version
```
捆绑的技能文件位于:
```bash
# macOS / Linux
$(npm root -g)/@black-duck/coverity-mcp-server/skills/coverity/SKILL.md
# Windows (PowerShell)
$(npm root -g)\@black-duck\coverity-mcp-server\skills\coverity\SKILL.md
```
---
## MCP 服务器工具概述
Coverity MCP 服务器向您的 AI 编码代理公开了五个工具。代理在您要求扫描代码或检查问题时会调用这些工具。
### `create_project`
**目的:** 初始化项目的工作空间。必须在任何扫描之前运行一次。
代理将要求您:
- Coverity 安装路径(或确认它在您的 `PATH` 上)
- 清理和构建命令(C、C++、Objective-C/C++、Kotlin 和 Visual Basic 所需;Java、C# 和 Go 推荐但不是必需;JavaScript、Python、TypeScript、Ruby、PHP、Swift 和其他解释语言不需要)
### `run_scan`
**目的:** 对项目目录执行 Coverity 静态分析扫描。
**扫描类型:**
- `auto`(默认)— 服务器根据以前的扫描历史自动选择完整或增量扫描
- `full` — 分析整个代码库;用于全面基准测试
- `incremental` — 仅分析更改的文件;对于日常开发速度更快
**扫描模式(仅限增量):**
- `pfi`(Perfect Fidelity Incremental)— 最高精度,推荐在合并代码之前使用
- `hfi`(High Fidelity Incremental)— 最快,适合提交前检查
**支持的语言:**
| 类别 | 语言 |
|---|---|
| 需要构建命令 | C、C++、Objective-C/C++、Kotlin、Visual Basic |
| 建议但不需要构建命令 | Java、C#、Go |
| 不需要构建命令 | JavaScript、TypeScript、Python、PHP、Ruby、Swift、Apex、Terraform/CloudFormation(基础设施即代码) |
> **平台说明:** C# 和 Visual Basic 仅在 Linux AMD64 和 Windows AMD64 上受支持。Objective-C/C++ 和 Kotlin 不支持 Linux ARM64。
### `get_issues`
**目的:** 检索以前扫描发现的问题,提供丰富的过滤选项。
关键过滤器:
- `severities` — `High`、`Medium`、`Low`、`Audit`
- `kinds` — `SECURITY`、`QUALITY`
- `cwe_categories` — 按 CWE 编号过滤(例如,“79”表示 XSS,“89”表示 SQL 注入)
- `only_modified` — 仅显示自上一次 git 提交以来更改的文件中的问题
- `group_by_file` — 按文件组织结果,以便有针对性地修复
### `get_issue_details`
**目的:** 返回特定问题的完整诊断信息,包括导致缺陷的完整执行路径。在 `get_issues` 后使用此命令,以了解和修复特定问题。
### `list_scans`
**目的:** 按逆时间顺序列出项目的所有以前扫描记录。使用此命令查看扫描历史或检索早期扫描的结果。
---
## 代理配置
以下所有代理都通过 **标准输入/输出(stdio)** 与 MCP 服务器通信。`npx` 命令自动处理服务器的下载和缓存。
---
### GitHub Copilot
Visual Studio Code 中的 GitHub Copilot 通过 VS Code 内置的 MCP 主机(需要 VS Code 1.99 或更高版本)支持 MCP 服务器。
**选项 A — 工作区配置**(仅适用于当前项目)
在项目根目录中创建或编辑 `.vscode/mcp.json`:
```json
{
"servers": {
"coverity": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@black-duck/coverity-mcp-server"]
}
}
}
```
**选项 B — 用户配置**(适用于所有项目)
打开 VS Code **用户设置(JSON)** (`Ctrl+Shift+P` → *Preferences: Open User Settings (JSON)*),并添加:
```json
"mcp": {
"servers": {
"coverity": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@black-duck/coverity-mcp-server"]
}
}
}
```
保存后,打开 GitHub Copilot 聊天面板,您应该会看到 Coverity 工具可用。启用它们时需要提示。
**技能安装:**
首先,安装包以访问技能文件:
```bash
npm install -g @black-duck/coverity-mcp-server
```
**全局配置**(适用于所有项目):
- macOS / Linux:将 `$(npm root -g)/@black-duck/coverity-mcp-server/skills/coverity/SKILL.md` 复制到 `$HOME/.github/skills/coverity/SKILL.md`
- Windows:将 `$(npm root -g)\@black-duck\coverity-mcp-server\skills\coverity\SKILL.md` 复制到 `%USERPROFILE%\.github\skills\coverity\SKILL.md`
**工作区配置**(仅适用于当前项目):
将技能文件复制到项目目录中的 `.github/skills/coverity/SKILL.md`。
---
### Claude Code
**选项 A — CLI(推荐)**
```bash
claude mcp add --transport stdio coverity --scope user -- npx -y @black-duck/coverity-mcp-server
```
`--scope user` 标志使服务器在您的所有 Claude Code 会话中可用。
**选项 B — 配置文件**
将以下内容添加到 `~/.claude.json`:
```json
{
"mcpServers": {
"coverity": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@black-duck/coverity-mcp-server"]
}
}
}
```
在进行更改后重启 Claude Code。
**技能安装:**
首先,安装包以访问技能文件:
```bash
npm install -g @black-duck/coverity-mcp-server
```
- macOS / Linux:将 `$(npm root -g)/@black-duck/coverity-mcp-server/skills/coverity/SKILL.md` 复制到 `$HOME/.claude/skills/coverity/SKILL.md`
- Windows:将 `$(npm root -g)\@black-duck\coverity-mcp-server\skills\coverity\SKILL.md` 复制到 `%USERPROFILE%\.claude\skills\coverity\SKILL.md`
---
### Cursor
**全局配置**(适用于所有项目):
- macOS / Linux:`$HOME/.cursor/mcp.json`
- Windows:`%USERPROFILE%\.cursor\mcp.json`
**工作区配置**(仅适用于当前项目):
在项目根目录中创建 `.cursor/mcp.json`。
在两种情况下都使用:
```json
{
"mcpServers": {
"coverity": {
"command": "npx",
"args": ["-y", "@black-duck/coverity-mcp-server"]
}
}
}
```
保存后,打开 **Cursor Settings → MCP** 以确认服务器已列出并处于活动状态。
**技能安装:**
首先,安装包以访问技能文件:
```bash
npm install -g @black-duck/coverity-mcp-server
```
**全局配置**(适用于所有项目):
- macOS / Linux:将 `$(npm root -g)/@black-duck/coverity-mcp-server/skills/coverity/SKILL.md` 复制到 `$HOME/.cursor/skills/coverity/SKILL.md`
- Windows:将 `$(npm root -g)\@black-duck\coverity-mcp-server\skills\coverity\SKILL.md` 复制到 `%USERPROFILE%\.cursor\skills\coverity\SKILL.md`
**工作区配置**(仅适用于当前项目):
将技能文件复制到项目目录中的 `.cursor/skills/coverity/SKILL.md`。
---
### Windsurf
注意,Windsurf 不支持项目特定的 MCP 服务器配置。您必须在用户级别配置 MCP 服务器。
**全局配置**(适用于所有项目):
编辑 Windsurf MCP 配置文件:
- macOS / Linux:`$HOME/.codeium/windsurf/mcp_config.json`
- Windows:`%USERPROFILE%\.codeium\windsurf\mcp_config.json`
然后使用:
```json
{
"mcpServers": {
"coverity": {
"command": "npx",
"args": ["-y", "@black-duck/coverity-mcp-server"]
}
}
}
```
保存后重启 Windsurf。Coverity 工具将出现在 Cascade AI 面板中。
**技能安装:**
首先,安装包以访问技能文件:
```bash
npm install -g @black-duck/coverity-mcp-server
```
- macOS / Linux:将 `$(npm root -g)/@black-duck/coverity-mcp-server/skills/coverity/SKILL.md` 复制到 `$HOME/.codeium/windsurf/skills/coverity/SKILL.md`
- Windows:将 `$(npm root -g)\@black-duck\coverity-mcp-server\skills\coverity\SKILL.md` 复制到 `%USERPROFILE%\.codeium\windsurf\skills\coverity\SKILL.md`
---
### Cline
**全局配置**(适用于所有项目):
- macOS / Linux:`$HOME/.cline/mcp.json`
- Windows:`%USERPROFILE%\.cline\mcp.json`
**工作区配置**(仅适用于当前项目):
在项目根目录中创建 `.cline/mcp.json`。
在两种情况下都使用:
```json
{
"mcpServers": {
"coverity": {
"command": "npx",
"args": ["-y", "@black-duck/coverity-mcp-server"]
}
}
}
```
**技能安装:
首先,安装包以访问技能文件:
```bash
npm install -g @black-duck/coverity-mcp-server
```
**全局配置**(适用于所有项目):
- macOS / Linux:将 `$(npm root -g)/@black-duck/coverity-mcp-server/skills/coverity/SKILL.md` 复制到 `$HOME/.cline/skills/coverity/SKILL.md`
- Windows:将 `$(npm root -g)\@black-duck\coverity-mcp-server\skills\coverity\SKILL.md` 复制到 `%USERPROFILE%\.cline\skills\coverity\SKILL.md`
**工作区配置**(仅适用于当前项目):
将技能文件复制到项目目录中的 `.cline/skills/coverity/SKILL.md`。
---
### OpenCode
**全局配置**(适用于所有项目):
OpenCode 从其配置文件中读取 MCP 服务器配置:
- macOS / Linux:`$HOME/.config/opencode/opencode.json`
- Windows:`%USERPROFILE%\.config\opencode\opencode.json`
**工作区配置**(仅适用于当前项目):
在项目根目录中创建 `opencode.json`。
在两种情况下都添加一个 `mcp` 部分:
```json
{
"mcp": {
"coverity": {
"type": "local",
"command": ["npx", "-y", "@black-duck/coverity-mcp-server"]
}
}
}
```
**技能安装:
首先,安装包以访问技能文件:
```bash
npm install -g @black-duck/coverity-mcp-server
```
**全局配置**(适用于所有项目):
- macOS / Linux:将 `$(npm root -g)/@black-duck/coverity-mcp-server/skills/coverity/SKILL.md` 复制到 `$HOME/.config/opencode/skills/coverity/SKILL.md`
- Windows:将 `$(npm root -g)\@black-duck\coverity-mcp-server\skills\coverity\SKILL.md` 复制到 `%USERPROFILE%\.config\opencode\skills\coverity\SKILL.md`
**工作区配置**(仅适用于当前项目):
将技能文件复制到项目目录中的 `.opencode/skills/coverity/SKILL.md`。
---
## Coverity 技能指南
Coverity **技能** 是一组指示您的 AI 代理何时以及如何调用 Coverity MCP 工具的指令 - 例如,在修改超过十行代码时自动触发扫描。
### 手动使用技能
安装技能后,您可以简单地要求:
```
扫描我的代码以查找安全问题
检查我的最近更改是否存在缺陷
对该项目运行 Coverity 分析
```
---
## 您的第一个扫描
配置完成后(可选)安装技能后,请按照以下步骤运行您的第一个扫描。
### 1. 打开项目
在您的 AI 编码代理中,打开或导航到要分析的项目。
### 2. 要求代理扫描
输入类似的自然语言请求:```
扫描该项目是否存在安全漏洞。
我的 Coverity 安装路径为 /opt/coverity/2026.3.0
```
代理将:
1. 调用 `create_project` 为您的项目初始化 Coverity 工作区(仅限首次)。
代理将调用 `run_scan` 来分析您的代码。
3. 调用 `get_issues` 检索并总结发现的结果。
4. 提供使用 `get_issue_details` 详细调查特定问题。
### 3. 查看结果
代理将显示按各种特征(例如严重性、类别、检查器和语言)组织的已发现问题摘要。结果还将突出显示您更改的文件(如果使用 Git)以及其中发现的问题严重程度排名靠前的最重要文件。
您可以提出后续问题,例如:
```
显示我仅限高严重性安全问题
我在今天更改的文件中发现了什么问题?
请告诉我 auth.c 中空指针问题的更多信息
```
### 4. 验证修复
在修复报告的问题后,要求代理进行验证:
```
我已经修复了 auth.c 中的问题 — 你可以重新扫描那些文件吗?
```
代理将对修改的文件运行快速(HFI)增量扫描,并确认问题是否已解决。如果您已将项目配置为使用 Coverity Connect 服务器 URL 和流名称,则 HFI 扫描将显著加快,因为它可以重用服务器端的数据。
---
## 故障排除指南
### MCP 服务器无法启动
**症状:** 代理报告无法连接到 Coverity MCP 服务器。
**步骤:**
1. 验证是否已安装 Node.js 18 或更高版本:`node --version`
2. 验证 `npx` 是否可用:`npx --version`
3. 手动测试服务器:
```bash
npx -y @black-duck/coverity-mcp-server -version
```
4. 检查 npm 是否可以访问注册表。如果在代理或防火墙后面,请配置 npm 的代理设置。
5. 在 macOS 上,如果基本二进制文件被 Gatekeeper 阻止,请从终端运行服务器一次,然后在 **系统设置 → 隐私和安全** 中允许它。
---
### 未找到 Coverity 安装
**症状:** 代理报告在项目设置期间找不到 Coverity。
**步骤:**
1. 确认您的 Coverity 安装目录。查找其中包含 `bin/coverity`(或 `bin/coverity.exe`)的可执行文件。
2. 当代理提示您提供 Coverity 安装路径时,请提供安装目录的完整路径(而不是二进制文件本身):
```
/opt/coverity/2026.3.0
```
3. 或者,将 Coverity `bin/` 目录添加到您的系统 `PATH` 中,并提供一个空字符串作为安装目录。
---
### 编译语言的构建捕获失败(编译语言)
**症状:** 扫描失败或 C、C++、Go 等编译项目的结果不佳。
**步骤:**
1. 在配置到 MCP 服务器之前,先单独测试您的构建命令:
```bash
cd /path/to/project
make clean && make
```
2. 构建命令必须是一个单独的命令 - 请勿使用 shell 操作符,如 `&&`。使用 Makefile 目标或组合步骤的 shell 脚本:
- **错误:** `make clean && make`
- **正确(清理命令):** `make clean`
- **正确(构建命令):** `make`
3. 确保构建命令编译所有源文件(不仅是增量工件)。
4. 对于 CMake 项目,请在将 MCP 服务器投入使用之前运行 CMake 的配置步骤,并为生成的 Makefile 提供构建命令。
---
### 扫描速度非常慢
**症状:** 扫描需要很长时间。
**建议:**
- 使用 **HFI 增量** 扫描(`scan_type=incremental`, `scan_mode=hfi`)进行日常开发 — 这些扫描仅扫描更改的文件,速度明显更快。
- 使用 **PFI 增量** 扫描进行预合并验证。
- 将 **完整扫描** 保留用于在新项目上建立基线或进行重大重构后。
- 如果您有 Coverity Connect 服务器,请在 `create_project` 期间配置 `stream_name` 和 `connect_url` 参数 — 这会通过重用服务器端数据加快 HFI 扫描速度。
---
### 期望出现问题时未发现问题
**症状:** 扫描完成但报告零问题。
**步骤:**
1. 确认扫描类型是否合适。增量扫描仅分析修改过的文件;运行 **完整扫描** 以获取全面基线。
2. 对于编译型语言,确保已运行构建命令并捕获所有源文件。
3. 检查日志文件是否有警告或错误(参见下面的[日志文件](#日志文件))。
4. 确认您正在分析正确的项目目录。
5. 在 Windows 上,尝试启用长路径支持或使用环境变量 `COVERITY_COV_USER_DIR` 更改用于存储 Coverity MCP 服务器数据的目录位置。中间目录的默认位置可能导致 Coverity 超出 `MAX_PATH` 限制,从而导致未捕获任何文件。
---
### 技能不会自动触发
**症状:** 在进行代码更改时,Coverity 技能未被调用。
**步骤:**
1. 确认技能文件位于适用于您代理的正确位置。
2. 完全重启您的代码代理。
3. 确认 Coverity MCP 服务器已配置并已连接。
4. 尝试手动调用技能:在聊天中输入 `"scan my code"`。
---
### 拒绝访问数据目录
**症状:** 服务器无法写入其数据目录。
**解决方法:**
```bash
# macOS / Linux
mkdir -p ~/.coverity/agent
chmod 755 ~/.coverity/agent
```
在 Windows 上,确保您的用户帐户具有对 `%APPDATA%\Coverity\agent\` 的写入访问权限。
您可以通过将 `COVERITY_COV_USER_DIR` 环境变量设置为具有写入访问权限的路径来覆盖默认数据目录。
---
### 日志文件
MCP 服务器会将诊断日志写入:
| 平台 | 日志目录 |
|---|---|
| macOS / Linux | `$HOME/.coverity/agent/logs/` |
| Windows | `%APPDATA%\Coverity\agent\logs\` |
日志文件以时间戳和用户身份信息命名,例如:
```
coverity-mcp-server-2026-05-14T143022-UID-501-GID-20-PID-12345.log
```
在诊断意外行为时,请查看最近的日志文件。要启用详细日志记录,请在 MCP 服务器命令行上传递 `-debug`:
```json
"args": ["-y", "@black-duck/coverity-mcp-server", "-debug"]
```
---
### 手动测试 MCP 连接
您可以通过从命令行向其发送测试消息来验证 MCP 服务器是否正确响应:
```bash
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' \
| npx -y @black-duck/coverity-mcp-server
```
您应该会收到一个包含 `"result"` 和服务器功能的 JSON 响应。如果您看到错误或没有输出,请检查日志目录并验证先决条件。
---
## 数据存储和隐私
- 所有分析均 **在您的本地计算机上进行**。不会将任何源代码或扫描结果发送到外部服务。
- 扫描结果存储为 JSON 文件,位于:
- macOS / Linux: `$HOME/.coverity/agent/<project-hash>/`
- Windows: `%APPDATA%\Coverity\agent\<project-hash>\`
- MCP 服务器不会修改您的源代码或项目目录。
- 要删除 MCP 服务器收集的所有数据,请删除代理数据目录:
```bash
rm -rf ~/.coverity/agent/ # macOS / Linux
```
```powershell
Remove-Item -Recurse -Force "$env:APPDATA\Coverity\agent\" # Windows
```
---
## 获取帮助
- 查看 `$HOME/.coverity/agent/logs/`(macOS/Linux)或 `%APPDATA%\Coverity\agent\logs\`(Windows)中的日志文件。
- 联系您的 Coverity 支持代表,解决产品特定问题。请将询问发送至 tech-support@blackduck.com。
- 参考 [Model Context Protocol 文档](https://modelcontextprotocol.io/),了解一般的 MCP 概念。
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器