Add files via upload

This commit is contained in:
公明
2025-11-13 23:41:00 +08:00
committed by GitHub
parent b63fd24b18
commit 6f0044b6fd
11 changed files with 1161 additions and 95 deletions
+43 -3
View File
@@ -7,9 +7,10 @@
![详情预览](./img/mcp-stdio2.png)
## 更新日志
- 2025.11.13 在前端新增`设置`功能
- 2025.11.13 新增 MCP Stdio 模式支持,现可在代码编辑器、CLI 及自动化脚本等多种场景下,无缝集成并使用全套安全工具
- 2025.11.12 增加了任务停止功能,优化前端
- 2025.11.13 Web 端新增统一鉴权,支持自动生成强密码与前端修改密码
- 2025.11.13 在前端新增`设置`功能
- 2025.11.13 新增 MCP Stdio 模式支持,现可在代码编辑器、CLI 及自动化脚本等多种场景下,无缝集成并使用全套安全工具
- 2025.11.12 增加了任务停止功能,优化前端;
## ✨ 功能特性
@@ -36,6 +37,7 @@
- 💾 **数据持久化** - SQLite数据库存储对话历史和过程详情
- 📝 **详细日志** - 结构化日志记录,便于调试和问题排查
- 🔒 **安全执行** - 工具执行隔离,错误处理和超时控制
- 🔐 **登录鉴权保护** - Web 端与 API 统一鉴权,中间件校验会话,并支持可配置会话有效期
## 📁 项目结构
@@ -130,6 +132,11 @@ go mod download
编辑 `config.yaml` 文件,设置您的API配置:
```yaml
# 身份认证配置
auth:
password: "" # 可留空,首次启动自动生成强密码
session_duration_hours: 12 # 登录有效期(小时)
# OpenAI兼容API配置(支持OpenAI、DeepSeek、Claude等)
openai:
api_key: "sk-your-api-key-here" # 替换为您的API Key
@@ -214,6 +221,8 @@ go run cmd/server/main.go -config /path/to/config.yaml
- API Key、Base URL 和模型是必填项(标记为 *),必须填写才能正常使用
- 配置会自动保存到 `config.yaml` 文件中
- 打开设置时会自动加载当前配置文件中的最新配置
- 如果 `auth.password` 留空,程序首次启动会自动生成 24 位强密码,写回 `config.yaml` 并在终端输出中英文安全提示
- Web 首次访问会弹出登录框,请使用该密码登录;可在 **设置 → 安全设置** 中随时修改密码
## ⚙️ 配置说明
@@ -237,6 +246,11 @@ go run cmd/server/main.go -config /path/to/config.yaml
### 完整配置示例
```yaml
# 身份认证
auth:
password: "change-me" # Web 登录密码
session_duration_hours: 12 # 会话有效期(小时)
# 服务器配置
server:
host: "0.0.0.0" # 监听地址
@@ -316,6 +330,14 @@ parameters:
**注意:** 如果同时配置了 `tools_dir``tools``tools_dir` 中的工具优先。
### 身份认证与安全
- **登录流程**:除 `/api/auth/login` 外,所有 `/api` 接口均需携带 `Authorization: Bearer <token>` 请求头。登录成功后返回的 token 会由前端自动缓存。
- **自动生成密码**`auth.password` 为空时,启动会生成 24 位随机强密码,写回配置文件并在终端输出中英文提示,请务必妥善保管。
- **会话控制**:会话有效期由 `auth.session_duration_hours` 控制。过期或修改密码后需重新登录。
- **密码修改**:在 **设置 → 安全设置** 中即可修改密码,或直接调用 `/api/auth/change-password` 接口;修改会立即使所有旧会话失效。
- **MCP 端口**:独立 MCP 服务器(默认 `8081`)为了兼容 IDE 插件暂未启用鉴权,建议通过网络层限制访问范围。
## 🚀 使用示例
### 对话式渗透测试
@@ -629,6 +651,9 @@ CyberStrikeAI 支持两种 MCP 传输模式:
- 适用于 Web 应用和其他 HTTP 客户端
- 默认监听地址:`0.0.0.0:8081/mcp`
- 可通过 `/api/mcp` 端点访问
- 🌐 便于远程:可对外暴露单个 HTTP 端口,IDE、Web 应用或其他机器上的自动化流程都能直接访问。
- 🧩 易于复用:无需额外二进制,只要支持 HTTP 的客户端(例如 curl、Postman、云端任务)都能复用同一个服务。
- 🔁 持续服务:与主 Web 服务同进程运行,部署一次即可同时提供 UI、API 和 MCP 能力。
#### MCP HTTP 模式(IDE 集成)
@@ -660,6 +685,21 @@ CyberStrikeAI 支持两种 MCP 传输模式:
- 完全符合 JSON-RPC 2.0 规范
- 支持字符串、数字和 null 类型的 id 字段
- 正确处理通知(notification)消息
- 🔒 更强隔离:以独立二进制方式运行,可结合最小权限策略、独立运行账号来限制文件/网络访问,安全性更高。
- 🪟 无需暴露端口:所有通信都在本地进程内完成,适合不希望在本机开启额外 HTTP 监听端口的场景。
- 🧰 IDE 优先体验:Cursor、Claude Desktop 等 IDE 的自定义 MCP 首选 stdio 传输,配置简单即插即用。
- 🧱 多层防护:HTTP 适合远程共享场景,stdio 适合本地高安全场景,同时保留可根据工作流自由选择。
#### 模式对比:按需选择
| 对比维度 | `mcp-http`HTTP 模式) | `mcp-stdio`stdio 模式) |
|------------------|-----------------------------------------------|-------------------------------------------------------------------|
| 传输协议 | 基于网络的 HTTP/HTTPS | 标准输入输出流 |
| 部署方式 | 与主服务器同进程运行 | 独立编译为单独可执行文件 |
| 隔离与安全 | 依赖服务端加固(防火墙、认证、网络策略) | 借助操作系统进程隔离,无需暴露监听端口 |
| 远程访问 | ✅ 可跨机器访问 | ❌ 仅限本地(除非手动隧道转发) |
| IDE 集成 | 适用于支持 HTTP 的客户端 | 原生适配 Cursor / Claude Desktop 等 stdio 连接器 |
| 最佳使用场景 | 远程自动化、共享服务、云端部署 | 本地开发、对安全隔离要求较高的环境 |
### 支持的方法