Coverity MCP服务器
TypeScript 模型上下文协议 将AI代理连接到的(MCP)服务器 黑鸭隐蔽连接 用于静态分析缺陷管理。
让你的AI编码助手直接访问Coverity项目、流和缺陷数据,这样它就可以发现问题,通过事件跟踪了解其根本原因,并在你的代码库中修复它们。
特性
- 列出项目 --浏览您有权访问的所有Coverity项目
- 列出流 --查看分析流,可选择按项目筛选
- 搜索问题 --使用检查器、影响、状态和分页过滤器按流查找缺陷
- 获取问题详细信息 --检索完整的缺陷信息,包括事件跟踪(导致缺陷的代码路径)和分类数据
- 两种运输方式 --stdio用于Claude Desktop/CLI,HTTP用于基于web的集成
先决条件
- Node.js>=20.11.0
- 访问启用REST API的Coverity Connect实例
- Coverity身份验证密钥(由您的Coverity Connect用户设置生成)
快速开始
git clone https://github.com/baxishrey/Coverity-MCP-Server-Typescript.git
cd Coverity-MCP-Server-Typescript
npm install
npm run build创建一个 .env 示例中的文件:
cp .env.example .env编辑 .env 使用您的Coverity Connect凭据:
COVERITY_HOST=coverity.example.com
COVERITY_PORT=8443
COVERITY_SSL=true
COVERITY_USER=your_username
COVERITY_AUTH_KEY=your_auth_key运行服务器:
npm start # stdio transport (default)
npm run start:http # HTTP transport on port 3000Claude桌面配置
将此添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"coverity": {
"command": "node",
"args": ["/path/to/Coverity-MCP-Server-Typescript/build/index.js"],
"env": {
"COVERITY_HOST": "coverity.example.com",
"COVERITY_PORT": "8443",
"COVERITY_SSL": "true",
"COVERITY_USER": "your_username",
"COVERITY_AUTH_KEY": "your_auth_key"
}
}
}
}对于HTTP传输模式,请改用MCP端点URL:
{
"mcpServers": {
"coverity": {
"type": "http",
"url": "http://localhost:3000/mcp"
}
}
}工具
list_projects
列出经过身份验证的用户可以访问的所有Coverity项目。
参数: 无
退货: 项目名称、密钥、描述和相关流。
______________________________________________________________________
list_streams
列出Coverity流,可选择按项目名称筛选。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectName | string | no | 按项目名称筛选流 |
退货: 流名称、语言、描述和父项目。
______________________________________________________________________
search_issues
在Coverity流中搜索静态分析缺陷。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
streamId | string | yes | 要搜索的流名称或ID |
checker | string | no | 按检查器筛选(例如。 RESOURCE_LEAK, NULL_RETURNS) |
impact | string | no | 按影响筛选: High, Medium, Low |
status | string | no | 按状态筛选: New, Triaged, Fixed, Dismissed |
limit | number | no | 最大结果,1–200(默认值25) |
offset | number | no | 分页偏移量(默认值0) |
退货: 每个缺陷的CID、检查器、类型、影响、状态、文件和功能。
______________________________________________________________________
get_issue_details
获取特定缺陷的完整详细信息,包括显示导致问题的代码路径的事件跟踪。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
cid | number | yes | 封面问题ID |
streamId | string | yes | 包含问题的流名称或ID |
退货: 完整的缺陷信息,包括分类数据(操作、分类、严重性、所有者)和事件链(带文件和行号的分步代码路径)。
资源
coverity://server-info
显示当前Coverity服务器连接配置(主机、端口、SSL、用户)的只读资源。不公开身份验证密钥。
典型工作流程
使用此服务器的代码代理通常会:
list_projects--发现可用项目list_streams--查找代码库的相关流search_issues--查找缺陷(按以下条件筛选impact: "High"对于关键的)get_issue_details--获取特定缺陷的事件跟踪- 读取源文件 在报告的地点和 应用修复 基于事件跟踪
环境变量
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
COVERITY_HOST | 是 | -- | Coverity Connect服务器主机名 |
COVERITY_PORT | 没有 | 8443 | 服务器端口 |
COVERITY_SSL | 没有 | true | 使用HTTPS |
COVERITY_USER | 是 | -- | 用户名 |
COVERITY_AUTH_KEY | 是 | -- | 身份验证密钥 |
TRANSPORT | 没有 | stdio | 运输方式: stdio 或 http |
PORT | 没有 | 3000 | HTTP服务器端口(仅限 TRANSPORT=http) |
发展
npm run dev # run from source without compiling
npm run build # compile TypeScript → build/
npm test # run tests
npm run lint # type-check without emitting项目结构
src/
├── index.ts # Entry point
├── server/boot.ts # MCP server init, transport selection
├── registry/ # Auto-discovers modules in tools/resources/prompts
├── client/coverity-client.ts # Coverity REST API client
├── tools/ # MCP tool implementations
│ ├── list-projects.ts
│ ├── list-streams.ts
│ ├── search-issues.ts
│ └── get-issue-details.ts
└── resources/
└── server-info.ts # Server connection info resource添加新工具
在中创建文件 src/tools/ --它将在启动时自动发现:
import { z } from "zod";
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import type { RegisterableModule } from "../registry/types.js";
export default {
type: "tool",
name: "my-tool",
description: "Does something useful",
register(server: McpServer) {
server.tool("my_tool", "Description", {
param: z.string().describe("A parameter"),
}, async ({ param }) => {
return { content: [{ type: "text", text: `Result: ${param}` }] };
});
},
} satisfies RegisterableModule;许可证
麻省理工学院
