fspms/WSElements-mcp
GitHub: fspms/WSElements-mcp
一个基于 MCP 协议的服务器,让 AI 助手能够连接 WithSecure Elements 平台进行自动化安全分析、威胁狩猎和终端响应操作。
Stars: 0 | Forks: 0
# WithSecure Elements 的 MCP 服务器
一个用于将 AI 代理连接到 WithSecure Elements 以进行自动化安全分析和威胁搜寻的 MCP (Model Context Protocol) 服务器。
## 功能特性
- **事件**:访问和管理 Broad Context Detections (BCD)
- **安全事件**:检索和分析安全事件
- **组织**:管理组织信息
- **设备**:监控设备并执行操作
- **响应操作**:在设备上执行安全响应操作
- **软件更新**:安装软件更新并管理设备上的缺失更新
- **OAuth2 身份验证**:与 WithSecure Elements API 的安全集成
## 前置条件
- Python 3.10 或更高版本
- WithSecure Elements API 凭证 (Client ID, Client Secret)
- 组织 ID (可选,可通过 API 获取)
- Docker (用于容器化部署)
## 安装说明
### 使用 Docker (推荐)
运行 WithSecure Elements MCP 服务器的最简单方法是使用 Docker:
```
# 拉取最新镜像
docker pull ghcr.io/fspms/wselements-mcp:latest
# 使用环境变量运行
docker run --rm \
-e WITHSECURE_CLIENT_ID=your_client_id \
-e WITHSECURE_CLIENT_SECRET=your_client_secret \
-e WITHSECURE_BASE_URL=https://api.connect.withsecure.com \
-e WITHSECURE_ORGANIZATION_ID=your_organization_id \
-p 8000:8000 \
ghcr.io/fspms/wselements-mcp:latest \
--transport streamable-http --host 0.0.0.0 --port 8000
```
### 使用 Docker Compose
创建一个 `docker-compose.yml` 文件:
```
version: '3.8'
services:
withsecure-elements-mcp:
image: ghcr.io/fspms/wselements-mcp:latest
container_name: withsecure-elements-mcp
ports:
- "8000:8000"
environment:
- WITHSECURE_CLIENT_ID=your_client_id
- WITHSECURE_CLIENT_SECRET=your_client_secret
- WITHSECURE_BASE_URL=https://api.connect.withsecure.com
- WITHSECURE_ORGANIZATION_ID=your_organization_id
- MCP_DEBUG=false
- MCP_LOG_LEVEL=INFO
- WITHSECURE_MCP_MODULES=incidents,events,organizations,devices,response_actions,software_updates
command: ["--transport", "streamable-http", "--host", "0.0.0.0", "--port", "8000"]
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
```
然后运行:
```
docker-compose up -d
```
### 使用 uv 安装
```
uv tool install withsecure-elements-mcp
```
### 使用 pip 安装
```
pip install withsecure-elements-mcp
```
## 配置
### 环境变量
创建一个包含以下信息的 `.env` 文件:
```
# WithSecure Elements API 配置
WITHSECURE_CLIENT_ID=your_client_id
WITHSECURE_CLIENT_SECRET=your_client_secret
WITHSECURE_BASE_URL=https://api.connect.withsecure.com
WITHSECURE_ORGANIZATION_ID=your_organization_id
WITHSECURE_API_SCOPE=read_write
# MCP Server 配置
MCP_DEBUG=false
MCP_LOG_LEVEL=INFO
WITHSECURE_MCP_MODULES=incidents,events,organizations,devices,response_actions,software_updates
```
### 可用环境
- **生产环境** : `https://api.connect.withsecure.com`
- **预发环境** : `https://api.connect-stg.fsapi.com`
- **CI 环境** : `https://api.connect-ci.fsapi.com`
### API Scope 配置
`WITHSECURE_API_SCOPE` 环境变量控制对 WithSecure Elements API 的访问级别:
- **`read_only`** : 仅限只读访问 (scope: `connect.api.read`)
- 如果你的 WithSecure client 配置为只读访问,请使用此选项
- 允许检索数据但不能修改
- 解决只读 client 的 "Scope not allowed for the client" 错误
- **`read_write`** : 完全读写访问 (scopes: `connect.api.read connect.api.write`)
- 如果你的 WithSecure client 拥有完全访问权限,请使用此选项
- 允许所有读写操作
- 默认选项
**只读 client 的配置示例:**
```
WITHSECURE_API_SCOPE=read_only
```
### 模块配置
服务器支持 7 个可以启用/禁用的主要模块:
- **`incidents`** : Broad Context Detections (BCD) 管理
- **`events`** : 安全事件分析和监控
- **`organizations`** : 组织信息和设置
- **`devices`** : 设备监控和管理
- **`response_actions`** : 安全响应操作执行
- **`software_updates`** : 软件更新安装、管理和扫描
## 使用方法
### 命令行
使用默认设置运行服务器 (stdio transport):
```
withsecure-elements-mcp
```
使用 SSE transport 运行:
```
withsecure-elements-mcp --transport sse
```
使用 streamable-http transport 运行:
```
withsecure-elements-mcp --transport streamable-http
```
在自定义端口上使用 streamable-http transport 运行:
```
withsecure-elements-mcp --transport streamable-http --host 0.0.0.0 --port 8080
```
### 模块配置
WithSecure Elements MCP 服务器支持多种方式来指定要启用的模块:
#### 1. 命令行参数 (最高优先级)
```
# 启用特定模块
withsecure-elements-mcp --modules incidents,events,organizations,devices,response_actions
# 仅启用一个模块
withsecure-elements-mcp --modules incidents
```
#### 2. 环境变量 (回退选项)
```
# 导出环境变量
export WITHSECURE_MCP_MODULES=incidents,events,organizations,devices,response_actions,software_updates
withsecure-elements-mcp
```
#### 3. 默认行为 (所有模块)
如果未指定模块,则默认启用所有可用模块。
### 作为库使用
```
from withsecure_elements_mcp.server import WithSecureElementsMCPServer
# 创建并运行 Server
server = WithSecureElementsMCPServer(
base_url="https://api.connect.withsecure.com",
debug=True,
enabled_modules=["incidents", "events", "organizations", "devices", "response_actions", "software_updates"]
)
# 使用 stdio transport 运行(默认)
server.run()
# 或使用 SSE transport 运行
server.run("sse")
# 或使用 streamable-http transport 运行
server.run("streamable-http", host="0.0.0.0", port=8080)
```
## 编辑器/助手集成
### MCP 配置
#### 使用 Docker
```
{
"mcpServers": {
"withsecure-elements-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-p",
"8000:8000",
"-e",
"WITHSECURE_CLIENT_ID=your_client_id",
"-e",
"WITHSECURE_CLIENT_SECRET=your_client_secret",
"-e",
"WITHSECURE_BASE_URL=https://api.connect.withsecure.com",
"-e",
"WITHSECURE_ORGANIZATION_ID=your_organization_id",
"-e",
"MCP_DEBUG=false",
"-e",
"MCP_LOG_LEVEL=INFO",
"-e",
"WITHSECURE_MCP_MODULES=incidents,events,organizations,devices,response_actions,software_updates",
"ghcr.io/fspms/wselements-mcp:latest",
"--transport",
"streamable-http",
"--host",
"0.0.0.0",
"--port",
"8000"
]
}
}
}
```
#### 使用 HTTP Transport (当服务器已在运行时)
```
{
"mcpServers": {
"withsecure-elements-mcp": {
"url": "http://localhost:8000",
"transport": "http"
}
}
}
```
#### 使用 uvx (用于本地开发)
```
{
"mcpServers": {
"withsecure-elements-mcp": {
"command": "uvx",
"args": [
"--env-file",
"/path/to/.env",
"withsecure-elements-mcp"
]
}
}
}
```
### 带模块选择
```
{
"mcpServers": {
"withsecure-elements-mcp": {
"command": "uvx",
"args": [
"--env-file",
"/path/to/.env",
"withsecure-elements-mcp",
"--modules",
"incidents,events,response_actions"
]
}
}
}
```
## 可用模块
### 事件
- 列出事件
- 检索事件详情
- 归档/取消归档事件
- 更新事件状态
### 安全事件
- 列出安全事件
- 检索事件详情
- 根据条件筛选事件
### 组织
- 检索组织信息
- 列出可访问的组织
### 设备
- 列出设备
- 检索设备详情
- 对设备执行操作
- **发送完整状态**:从设备请求完整状态信息
- 强制设备将其完整状态发送到服务器
- 每次操作支持 1-5 台设备
- **重启系统**:重启设备 (仅限 Windows 计算机)
- 重启前显示的可选消息
- 每次操作支持 1-5 台设备
### 响应操作
- 列出响应操作响应
- 在设备上创建响应操作
- 执行安全操作,包括:
- **进程管理**:终止线程、终止进程、收集进程内存
- **内存分析**:完整内存转储、进程内存收集
- **文件操作**:收集文件、删除文件、隔离/取消隔离文件
- **系统控制**:运行命令、重启/关闭设备
- **网络隔离**:将设备与网络隔离、解除隔离
- **代理管理**:重启安全代理
### 软件更新
- **安装软件更新**:在设备上安装特定更新或按严重程度安装更新
- 安装特定公告 ID
- 按严重程度安装更新 (critical, important, everything)
- 升级期间强制关闭应用程序
- **获取缺失的更新**:检索设备的缺失软件更新列表
- 按严重程度筛选 (critical, important, moderate, low, unclassified)
- 按类别筛选 (security, nonSecurity, servicePack, securityTool, none)
- 限制结果数量 (1-200)
- **扫描更新**:在设备上触发手动软件更新扫描
- 强制设备检查可用更新
- 每次操作支持 1-5 台设备
## 示例
该项目在 `examples/` 目录中包含多个使用示例:
- **`basic_usage.py`** : 基本的服务器设置和配置
- **`sse_usage.py`** : Server-Sent Events transport 示例
- **`streamable_http_usage.py`** : HTTP transport 示例
### 快速入门示例
```
import asyncio
from withsecure_elements_mcp.server import WithSecureElementsMCPServer
async def main():
# Create server with all modules enabled
server = WithSecureElementsMCPServer(
debug=True,
enabled_modules=["incidents", "events", "organizations", "devices", "response_actions", "software_updates"]
)
# Run with stdio transport
await server.run("stdio")
if __name__ == "__main__":
asyncio.run(main())
```
## 开发
### 开发环境设置
```
# 克隆 repository
git clone https://github.com/withsecure/elements-mcp.git
cd elements-mcp
# 创建虚拟环境并安装依赖
uv sync --all-extras
# 激活虚拟环境
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# 或使用提供的启动脚本
# 在 Windows 上:
.\scripts\start.ps1
# 在 Linux/macOS 上:
./scripts/start.sh
```
### 运行测试
```
# 运行所有测试
pytest
# 运行测试并显示详细输出
pytest -v -s
```
## 许可证
本项目采用 MIT 许可证授权 - 详情请参阅 LICENSE 文件。
## 安全注意事项
- **API 凭证**:使用环境变量或密钥管理系统安全地存储你的 WithSecure API 凭证
- **网络安全**:在生产环境中使用 HTTPS
- **访问控制**:仅限授权用户访问 MCP 服务器
- **日志记录**:监控和审计所有 API 调用和响应操作
- **响应操作**:谨慎使用响应操作,因为它们可能会影响系统运行
## 故障排除
### 常见问题
1. **身份验证错误**:验证你的 API 凭证和组织 ID
2. **模块未找到**:确保模块已包含在 `WITHSECURE_MCP_MODULES` 中
3. **连接问题**:检查网络连接和 API endpoint URL
4. **权限错误**:验证你的 API 凭证是否具有必要的权限
### 调试模式
启用调试模式以获取详细日志:
```
# 环境变量
export MCP_DEBUG=true
# 命令行
withsecure-elements-mcp --debug
```
## 支持
这是一个社区驱动的开源项目。有关更多信息,请参阅我们的 SUPPORT 文件。
## 关于
将 AI 代理连接到 WithSecure Elements,以进行自动化安全分析和威胁搜寻。
标签:AI代理, API集成, Broad Context Detections, Docker容器化, EDR, FTP漏洞扫描, GPT, HTTP/HTTPS抓包, MCP服务器, Model Context Protocol, OAuth2认证, Python, WithSecure Elements, 事件管理, 可观测性, 威胁搜寻, 安全事件响应, 安全编排, 态势感知, 无后门, 漏洞管理, 端点检测与响应, 网络安全, 脆弱性评估, 脱壳工具, 自动化安全分析, 设备监控, 请求拦截, 软件更新, 隐私保护