内容
# MCP Server for Cervantes
[](https://dotnet.microsoft.com/)
[](https://modelcontextprotocol.io/)
[](LICENSE)
[]()
一个 Model Context Protocol (MCP) 服务器实现,提供与 Cervantes 渗透测试管理平台 API 的无缝集成。该服务器使得像 Claude 这样的 AI 助手能够通过标准化的 MCP 工具与 Cervantes 数据进行交互。
## 🎯 目的
这个 MCP 服务器充当 AI 助手与 [Cervantes](https://github.com/CervantesSec/cervantes) 平台之间的桥梁,使用户能够:
- 通过自然语言管理渗透测试项目、客户和任务
- 查询和操作漏洞数据
- 生成报告和管理文档
- 处理用户和角色管理
- 与保管库和笔记系统进行交互
## 🛠 技术
- **.NET 9.0** - 核心框架
- **Model Context Protocol** - 通信标准
- **HTTP Client** - REST API 集成
- **Dependency Injection** - 服务管理
## ✨ 特性
### 📋 项目管理
- 创建、读取、更新和删除项目
- 管理项目成员和权限
- 处理项目笔记和附件
- 生成执行摘要
### 🔍 漏洞管理
- 完整的漏洞 CRUD 操作
- 漏洞分类和 CWE 映射
- 风险评估和状态跟踪
- 笔记、目标和附件管理
- 模板系统支持
### 👥 客户管理
- 客户信息管理
- 支持头像上传
- 项目关联
### 📝 任务管理
- 任务创建和分配
- 状态跟踪和更新
- 支持笔记和附件
- 目标关联
### 📊 报告
- 报告生成和管理
- 模板系统
- 组件管理
- 多种导出格式
### 🔐 安全与访问
- 用户和角色管理
- 用于安全凭证存储的保管库
- 基于权限的访问控制
### 📄 文档
- 文档管理系统
- 文件上传和组织
- 版本控制支持
## 🔧 运行时要求
- **.NET 9.0 Runtime** 或更高版本
- **Cervantes** 实例(正在运行并可访问)
- **网络连接** 到 Cervantes API 端点
## 📦 安装
### 从源代码
1. **克隆仓库**
```bash
git clone https://github.com/CervantesSec/McpServer.git
cd mcpserver-cervantes
```
2. **构建项目**
```bash
dotnet build --configuration Release
```
3. **运行服务器**
```bash
dotnet run --project McpServer
```
## ⚙️ 配置
### appsettings.json
通过修改 `appsettings.json` 文件来配置服务器:
```json
{
"Cervantes": {
"BaseUrl": "https://your-cervantes-instance.com",
"Username": "your-username",
"Password": "your-password",
"AuthMethod": "BasicAuth"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
```
### 环境变量(替代方案)
您也可以使用环境变量进行配置:
```bash
# Cervantes API 配置
CERVANTES__BASEURL=https://your-cervantes-instance.com
CERVANTES__USERNAME=your-username
CERVANTES__PASSWORD=your-password
CERVANTES__AUTHMETHOD=BasicAuth
# 日志配置
LOGGING__LOGLEVEL__DEFAULT=Information
```
### MCP 集成
将服务器添加到您的 MCP 客户端配置中:
```json
{
"servers": {
"cervantes": {
"command": "dotnet",
"args": ["run", "--project", "/path/to/McpServer"],
"env": {
"CERVANTES_API_BASE_URL": "https://your-cervantes-instance.com"
}
}
}
}
```
## 🚀 使用
配置完成后,MCP 服务器提供以下工具类别:
### 可用工具
- **ClientTool**: 管理客户信息和头像
- **ProjectTool**: 处理项目、成员、笔记和附件
- **VulnerabilityTool**: 完整的漏洞生命周期管理
- **TaskTool**: 任务管理,支持笔记、目标和附件
- **ReportTool**: 报告生成和模板管理
- **DocumentTool**: 文档管理和组织
- **VaultTool**: 安全凭证和敏感数据存储
- **NoteTool**: 一般笔记记录和组织
- **UserTool**: 用户和角色管理
- **RoleTool**: 权限和访问控制管理
### 使用示例与 Claude
```
"你能给我展示当前项目中所有高风险漏洞吗?"
"创建一个名为 'Acme Corp' 的新客户,联系邮箱为 admin@acme.com"
"为项目 ID abc-123 生成渗透测试报告"
```
## 🤝 如何贡献
我们欢迎贡献!以下是您可以帮助的方式:
1. **分叉仓库**
2. **创建功能分支**
```bash
git checkout -b feature/amazing-feature
```
3. **进行更改并添加测试**
4. **提交更改**
```bash
git commit -m '添加惊人的功能'
```
5. **推送到您的分支**
```bash
git push origin feature/amazing-feature
```
6. **打开一个 Pull Request**
### 开发指南
- 遵循 C# 编码规范
- 为新功能添加单元测试
- 根据需要更新文档
- 确保所有构建通过
- 使用有意义的提交信息
## 🔒 安全
如果您发现安全漏洞,请发送电子邮件至 [ruben.mesquida@owasp.org](mailto:ruben.mesquida@owasp.org)。所有安全漏洞将得到及时处理。
### 安全特性
- 安全的 API 通信
- 输入验证和清理
- 错误处理不泄露信息
- 结构化日志记录以便审计
## 🐛 如何报告错误
如果您发现错误,请在 GitHub 上创建一个问题,包含:
- 问题的清晰描述
- 重现步骤
- 预期行为与实际行为
- 环境细节(.NET 版本、操作系统等)
- 相关日志或错误信息
## 📚 文档
- [MCP 协议文档](https://modelcontextprotocol.io/)
- [Cervantes API 文档](https://github.com/CervantesSec/cervantes)
- [.NET 9.0 文档](https://docs.microsoft.com/dotnet/)
## 🏗️ 架构
该服务器遵循模块化架构:
```
McpServer/
├── Models/ # 数据模型和视图模型
├── Services/ # API 客户端和业务逻辑
├── Tools/ # MCP 工具实现
└── Program.cs # 应用程序入口点
```
### 关键组件
- **CervantesApiClient**: 用于 API 通信的 HTTP 客户端
- **Tool Classes**: 各个 MCP 工具的实现
- **Model Classes**: 数据传输对象和视图模型
- **Dependency Injection**: 服务注册和生命周期管理
## 🔄 API 覆盖
该服务器提供对 Cervantes API 的全面覆盖:
- ✅ 客户管理
- ✅ 项目管理
- ✅ 漏洞管理
- ✅ 任务管理
- ✅ 报告生成
- ✅ 文档管理
- ✅ 用户与角色管理
- ✅ 保管库管理
- ✅ 笔记系统
## 📊 支持的操作
| 资源 | 创建 | 读取 | 更新 | 删除 | 特殊操作 |
|------|------|------|------|------|-------------------------------|
| 客户 | ✅ | ✅ | ✅ | ✅ | |
| 项目 | ✅ | ✅ | ✅ | ✅ | 成员、笔记、附件 |
| 漏洞 | ✅ | ✅ | ✅ | ✅ | 模板、分类、CWE |
| 任务 | ✅ | ✅ | ✅ | ✅ | 笔记、目标、附件 |
| 报告 | ✅ | ✅ | ✅ | ✅ | 模板、组件、生成 |
| 文档 | ✅ | ✅ | ✅ | ✅ | 文档管理 |
| 保管库 | ✅ | ✅ | ✅ | ✅ | |
| 用户 | ✅ | ✅ | ✅ | ✅ | 角色分配 |
## 📈 性能
- 全程使用 Async/await 以优化性能
- HTTP 请求的连接池
- 结构化日志记录以便可观察性
- 优雅的错误处理和恢复
## 📝 许可证
该项目根据 GNU Affero 通用公共许可证 v3.0 (AGPL-3.0) 进行许可 - 详细信息请参见 [LICENSE](LICENSE) 文件。
### AGPL-3.0 许可证摘要
AGPL-3.0 许可证确保:
- ✅ 您可以自由使用、修改和分发此软件
- ✅ 您必须为任何修改提供源代码
- ✅ **网络使用被视为分发** - 如果您运行此服务器供他人访问,您必须提供源代码
- ✅ 任何衍生作品也必须根据 AGPL-3.0 进行许可
- ✅ 您必须包含版权和许可证声明
此许可证特别选择以确保对该 MCP 服务器的改进保持开源,即使在作为服务部署时。
## 🙏 致谢
- [CervantesSec](https://github.com/CervantesSec) 提供优秀的渗透测试平台
- [Anthropic](https://www.anthropic.com/) 提供 Model Context Protocol 规范
- .NET 社区提供优秀的工具和库
## 📞 支持
- 📧 电子邮件: [ruben.mesquida@owasp.org](mailto:ruben.mesquida@owasp.org)
- 💬 GitHub 问题: [创建一个问题](https://github.com/CervantesSec/McpServer/issues)
- 📖 文档: [Wiki](https://cervantessec.org)
---
**为网络安全社区而制作 ❤️**