rijul170/alertlogic-mcp

GitHub: rijul170/alertlogic-mcp

将 Alert Logic MDR 平台的完整 API 封装为 MCP 工具,供 AI 客户端直接调用的安全运营自动化服务器。

Stars: 0 | Forks: 0

# AlertLogic MCP Server **将完整的 AlertLogic MDR 平台引入你的 AI 助手。** 这是一个 [Model Context Protocol](https://modelcontextprotocol.io) 服务器,它将完整的 AlertLogic API 接口以结构化工具的形式暴露出来,任何兼容 MCP 的客户端(Claude Desktop、Claude Code、Cursor 等)都可以直接调用 —— 从而实现 MSSP 规模的 AI 驱动的安全运营、事件响应和威胁狩猎。 [![Python](https://img.shields.io/badge/python-3.10%2B-3776AB?logo=python&logoColor=white)](https://www.python.org/) [![MCP Protocol](https://img.shields.io/badge/MCP%20Protocol-2024--11--05-1f6feb)](https://modelcontextprotocol.io) [![Tools](https://img.shields.io/badge/tools-473%2B-FF6B00)](#module-overview) [![License](https://img.shields.io/badge/license-MIT-green)](#license) [![GitHub Stars](https://img.shields.io/github/stars/rijul170/alertlogic-mcp?style=social)](https://github.com/rijul170/alertlogic-mcp)
## 目录 - [概述](#overview) - [功能](#features) - [架构](#architecture) - [前置条件](#prerequisites) - [安装说明](#installation) - [配置](#configuration) - [Claude Code 集成](#claude-code-integration-http-mode) - [Claude Desktop 集成](#claude-desktop-integration-stdio-mode) - [模块概览](#module-overview) - [SOC 快速入门](#soc-quick-start) - [内置 SOC Playbook](#built-in-soc-playbooks) - [多账户 MSSP 用法](#multi-account-mssp-usage) - [安全注意事项](#security-notes) - [测试](#testing) - [故障排除](#troubleshooting) - [贡献指南](#contributing) - [许可证](#license) ## 概述 此 MCP 服务器封装了 AlertLogic MDR 平台的 API,并将其作为 473 多个结构化工具暴露出来,任何兼容 MCP 的 AI 客户端都可以直接调用。它涵盖了完整的 AlertLogic API 接口 —— 包括事件响应、基于 SQL 的日志搜索、SOAR playbook 自动化、资产管理、漏洞分析、用户和凭据管理、计费等 —— 并被组织成 46 个领域模块。身份验证、重试、分页、token 管理和 JSON 格式化都在服务器端处理;你的 AI 客户端只需按名称调用工具即可。 ## 功能 - **事件响应** — 列出、获取、详述(原始日志证据)、完成、重新打开、添加备注以及对事件添加反馈。支持友好的 ID 查找。 - **SQL 日志搜索** — 提交基于 SQL 的 AlertLogic 日志搜索查询、轮询状态、检索结果以及释放会话。 - **SOAR Playbook 自动化** — 列出、获取、执行和监控 SOAR playbook;管理查询、触发器和执行状态。 - **资产拓扑** — 查询完整的资产清单、声明和移除资产、设置属性,并检索任何部署的拓扑图。 - **漏洞管理** — 按严重程度列出暴露情况、检索每个资产的漏洞、搜索漏洞知识库以及管理修复项目。 - **用户与访问密钥管理** — 跨账户对用户、角色、访问密钥、MFA 设置和密码重置进行完整的 CRUD 操作。 - **多账户 MSSP 支持** — 支持按工具的 `account_id` 覆盖以及批量跨账户操作(批量部署、批量健康检查、合作伙伴事件)。 - **内置 SOC Playbook** — 六个工具可直接在上下文中展示预先编写好的 IR 指南、威胁狩猎工作流、MITRE ATT&CK 映射和工具参考指南。 - **工单与监控列表** — 创建、更新和关闭工单;管理告警监控列表。 - **Cloud 和 Azure Explorer** — 浏览跨 AWS 和 Azure 环境的云资源拓扑。 - **Analytics Engine** — 访问 AE 内容、规则、分析、标签、调优和发布,涵盖多个 AE 子系统。 - **基础设施运维** — 管理环境、扫描计划、扫描结果、网络控制、接入源和日志集成。 ## 架构 ``` +--------------------+ stdio / streamable-HTTP (MCP) +--------------------------------+ | MCP Client | <-------------------------------------> | AlertLogic MCP Server | | (Claude Desktop, | | (this repo, main.py) | | Claude Code, …) | | | +--------------------+ | 46 modules (~473 tools): | | incidents, soc, soar, | | assets, vuln, users, … | | | | | base.py (HTTP, AIMS auth, | | token cache, retries) | +----------+---------------------+ | v HTTPS + AIMS Bearer token +-----------------------------+ | AlertLogic MDR Platform | | api.cloudinsight....com | +-----------------------------+ ``` **Transport**:服务器支持通过 `MCP_TRANSPORT` 选择的三种 MCP 传输方式: - `stdio`(默认)— 由你的 MCP 客户端按需启动;不开放网络端口。 - `streamable-http` — 持久化的 HTTP 服务器;适用于 Claude Code 和远程客户端。 - `sse` — 为支持 SSE 的客户端提供 Server-Sent Events 传输。 **身份验证**:AlertLogic 使用 AIMS Bearer token 进行身份验证。服务器在首次使用时将你的 `access_key_id:secret_key` API 密钥交换为短期的 Bearer token,对其进行缓存,并在 token 过期时自动重新验证 —— 无需手动轮换 token。 **`base.py`** 集中了 HTTP 方法助手(`_get`、`_post`、`_put`、`_delete`)、按服务的 URL 路由(Account-Topology 服务、global 服务、以 `_at` 为前缀的路由)、错误转换以及 AIMS token 缓存。 ## 前置条件 - Python 3.10 或更高版本 - `uv`(推荐)或 `pip` - 启用了 API 访问权限的 AlertLogic 账户 - AlertLogic API 密钥(访问密钥 ID + 秘密密钥;详见[配置](#configuration)) ## 安装说明 ``` # 1. Clone the repository git clone https://github.com//.git cd # 2. Create a virtual environment 并安装依赖 python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txt # 或者使用 uv(更快): uv venv uv pip install -r requirements.txt # 3. Configure credentials cp .env.example .env $EDITOR .env # fill in the required variables (see below) ``` ## 配置 所有配置均通过环境变量进行,并在启动时从 `.env` 加载。 ### 必选变量 | 变量 | 描述 | | -------------------------- | ------------------------------------------------------------------------------------------------ | | `ALERTLOGIC_API_KEY` | `access_key_id:secret_key` 格式的 API 密钥(创建方法见下文) | | `ALERTLOGIC_BASE_URL` | API 基础 URL — `https://api.cloudinsight.alertlogic.com` (美国) 或 `https://api.cloudinsight.alertlogic.co.uk` (英国) | | `ALERTLOGIC_ACCOUNT_ID` | 你的 AlertLogic 账户 ID(在控制台 URL 和账户设置中可见) | ### 可选变量 | 变量 | 默认值 | 描述 | | -------------------------- | -------------- | -------------------------------------------------------- | | `MCP_TRANSPORT` | `stdio` | 传输方式:`stdio`、`sse` 或 `streamable-http` | | `MCP_HOST` | `127.0.0.1` | 绑定主机(仅限 HTTP 传输方式) | | `MCP_PORT` | `8000` | 绑定端口(仅限 HTTP 传输方式) | ### 可选服务 URL 覆盖 这些默认指向 AlertLogic 的标准 endpoint。仅在你拥有自定义部署时才进行覆盖: ``` ALERTLOGIC_GLOBAL_BASE_URL=https://api.global-services.global.alertlogic.com ALERTLOGIC_AETUNER_BASE_URL=https://aetuner.mdr.global.alertlogic.com ALERTLOGIC_CONNECTORS_BASE_URL=https://connectors.mdr.global.alertlogic.com ALERTLOGIC_RESPONDER_BASE_URL=https://api.responder.alertlogic.com ``` ### 创建 API 密钥 1. 登录 AlertLogic 控制台。 2. 导航至 **Manage → Users**,选择你的用户,然后打开 **Access Keys → Create**。 3. 复制 **Access Key ID** 和 **Secret Key**。 4. 将它们组合为 `access_key_id:secret_key`(包含冒号),并将其设置为 `ALERTLOGIC_API_KEY`。 ## Claude Code 集成 (HTTP 模式) 以 HTTP 模式启动服务器: ``` MCP_TRANSPORT=streamable-http python main.py ``` 然后将其注册到你的 Claude Code 项目或用户 MCP 配置(`.claude/settings.json` 或 `~/.claude/settings.json`)中: ``` { "mcpServers": { "alertlogic-mcp": { "type": "http", "url": "http://localhost:8000/mcp" } } } ``` 或者通过 CLI 注册: ``` claude mcp add --transport http alertlogic-mcp http://localhost:8000/mcp ``` ## Claude Desktop 集成 (stdio 模式) 编辑 `claude_desktop_config.json`: - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` - **Windows**: `%AppData%\Claude\claude_desktop_config.json` ``` { "mcpServers": { "alertlogic-mcp": { "command": "/absolute/path/to/.venv/bin/python", "args": ["/absolute/path/to/alertlogic-mcp/main.py"] } } } ``` 重启 Claude Desktop。AlertLogic 工具将出现在工具选择器中。 ## 模块概览 包含 46 个模块,约 473 个工具,按领域组织: ### 事件响应 | 模块 | 工具数 | 关键操作 | | ---------------- | :----: | ---------------------------------------------------------------------------------------- | | `incidents_mcp` | 11 | 列出、获取、友好 ID 查找、完成、重新打开、添加备注、添加反馈、列出合作伙伴事件 | | `soc` | 14 | 提交/轮询/释放 SQL 日志搜索、列出暴露情况、获取健康摘要 | | `soc_playbooks` | 6 | 内置 IR 指南、威胁狩猎工作流、MITRE 映射、工具指南(见下文) | ### 资产管理 | 模块 | 工具数 | 关键操作 | | ---------------- | :----: | ---------------------------------------------------------------------------------------- | | `assets` | 15 | 查询资产、获取拓扑、声明/批量声明/移除资产、设置属性 | | `assets_manager` | 5 | 高级资产管理和分组 | | `cloud_explorer` | 12 | 按部署浏览 AWS 云资源拓扑 | | `azure_explorer` | 13 | 按部署浏览 Azure 资源拓扑 | ### SOAR | 模块 | 工具数 | 关键操作 | | ------ | :----: | -------------------------------------------------------------------------------------------------- | | `soar` | 33 | 列出/获取 playbook 和 action、创建/获取/查询执行、管理查询和触发器 | ### 漏洞与合规 | 模块 | 工具数 | 关键操作 | | -------------------- | :----: | ------------------------------------------------------------------------- | | `vulnerability` | 10 | 按严重程度列出暴露情况、获取每个资产的暴露情况 | | `vulnerabilities_kb` | 9 | 查询漏洞知识库(CVE 详情、CVSS、修复方案) | | `compliance` | 4 | 列出修复项目、结束/处置/取消处置修复 | ### 用户与身份验证 | 模块 | 工具数 | 关键操作 | | ------------- | :----: | --------------------------------------------------------------------------------------- | | `users` | 30 | 对用户、角色、访问密钥、MFA 和密码重置进行完整的 CRUD 操作 | | `auth` | 6 | AIMS token 管理、列出受管账户、账户 ID 枚举 | | `credentials` | 10 | IAM 角色和 Azure AD 凭据 CRUD、扫描凭据、解密检索 | | `themis` | 3 | 凭据验证和确认 | ### 基础设施与部署 | 模块 | 工具数 | 关键操作 | | ------------------ | :----: | --------------------------------------------------------------------------- | | `deployments` | 5 | 列出、获取、创建、更新、删除部署 | | `environments` | 10 | 管理 AlertLogic 环境和环境配置 | | `network_controls` | 15 | 排除项 CRUD、资产检查、标签/主机白名单管理 | | `scan_scheduler` | 13 | 为每个部署创建、更新和管理扫描计划 | | `scan_result` | 4 | 检索和分析扫描结果 | ### Analytics Engine | 模块 | 工具数 | 关键操作 | | ------------ | :----: | --------------------------------------------------------------------------- | | `aecontent` | 11 | 管理 AE 内容(检测内容库) | | `aefr` | 23 | AE flat-rule 管理 | | `aerta` | 13 | AE 实时分析管理 | | `aetag` | 23 | AE 标签和关联规则管理 | | `aepublish` | 1 | 发布 AE 分析更新 | | `aemanual` | 2 | 手动 AE 分析操作 | | `kalm` | 5 | AE 知识和分析生命周期管理 | ### 工单与监控列表 | 模块 | 工具数 | 关键操作 | | ------------------ | :----: | -------------------------------------------------------- | | `tickets` | 8 | 创建、获取、更新、列出和关闭工单 | | `watchlist_module` | 7 | 管理告警监控列表(添加、移除、查询项目) | ### 运维与平台 | 模块 | 工具数 | 关键操作 | | --------------------- | :----: | ----------------------------------------------------------------------- | | `account_management` | 7 | 账户详情、按名称查找、父/子关系、拓扑 | | `policies` | 2 | 列出和检查策略 | `billing` | 12 | 列出和检查订阅、权利和计费数据 | | `common` | 22 | Herald 通知、订阅、webhook/email 连接器、endpoint | | `ingest_module` | 6 | 管理日志接入源和接入配置 | | `logging_integration` | 17 | 日志源 CRUD、源类型、收集管理 | | `otis` | 7 | 按需威胁情报搜索 | | `notify` | 2 | 通知派发 | | `search_stylist` | 2 | 日志搜索查询格式化和建议 | | `informant` | 2 | Informant 服务查询 | | `strawboss` | 10 | Strawboss 作业和计划管理 | | `tacoma` | 12 | Tacoma 服务操作 | | `album` | 10 | 证据和 artifact 管理 | | `usage_module` | 4 | 账户使用情况统计和报告 | | `bulk_ops` | 2 | 跨账户批量操作(批量部署、批量健康检查) | | `suggestions` | 10 | AI 辅助的搜索和调查建议 | | `seceng` | — | 安全工程:Cargo 计划/执行,AETuner 分析/调优 | ## SOC 快速入门 连接成功后,尝试在 Claude 中使用这些提示词: ``` Show me all open critical incidents from the last 24 hours ``` ``` Get the elaborations (raw log evidence) for incident INC-12345 ``` ``` Search logs for SSH login failures from 10.0.0.5 in the last hour using SQL ``` ``` Add a note to incident INC-12345: Confirmed malicious, escalating to customer ``` ``` List all deployments and their health status across all accounts ``` ``` Show me the top 10 critical vulnerabilities for host web-prod-01 ``` ``` Run the SOC IR playbook to walk me through incident response steps ``` ## 内置 SOC Playbook `soc_playbooks` 模块提供了六个工具,可直接在上下文中展示经过精心策划的操作指南 —— 无需查找外部文档: | 工具 | 内容 | | --------------------------- | ------------------------------------------------------------------------------------------ | | `soc_ir_start` | 端到端的事件响应工作流:分类检查清单、范围界定步骤、遏制标准、证据收集和文档要求 | | `soc_threat_hunt` | 假设驱动的威胁狩猎 playbook:基于 IOC 的狩猎、基于 TTP 的狩猎,以及针对常见攻击模式的日志查询模板 | | `soc_mitre_attack_guide` | MITRE ATT&CK 战术/技术参考,映射到 AlertLogic 检测类型和推荐的搜索查询 | | `soc_alertlogic_tool_guide` | AlertLogic MCP 工具的快速参考,按调查任务(分类、范围界定、证据、遏制)进行组织 | | `soc_log_query_templates` | 可直接运行的 SQL 日志查询模板,适用于常见的 SOC 场景:身份验证失败、横向移动、C2 信标、数据外泄等 | | `soc_summary` | 可直接面向管理层的 incident 摘要模板及字段填充指南 | 这些工具被设计为在调查开始时调用,以便在查询实时数据之前加载相关上下文。 ## 多账户 MSSP 用法 该服务器专为 MSSP 环境设计,在这种环境中,单个 API 密钥可管理多个子账户: **合作伙伴事件列表** — `incidents_list_partner` 可以通过单次调用返回所有受管账户的 incident,并附带账户所有权标签。 **按工具的账户覆盖** — 大多数工具接受一个可选的 `account_id` 参数。传入子账户的 ID 即可将任何查询范围限定在该账户内,而无需更改你的 `.env` 配置: ``` Get all open incidents for account ``` **批量操作** — `bulk_list_deployments` 会将部署查询展开到所有受管账户中,并返回汇总结果。`bulk_health_check` 对健康状态执行相同的操作。 **账户拓扑** — `aims_get_account_topology` 和 `aims_list_accounts_by_relationship` 可映射父/子账户层级结构,这对于在运行操作之前界定范围非常有用。 ## 安全注意事项 - **切勿提交 `.env` 文件。** 它已被 `.gitignore` 排除;仓库仅追踪 `.env.example`(包含占位符)。 - 像对待密码一样对待 `ALERTLOGIC_API_KEY`。如果你怀疑其被泄露(聊天日志、屏幕共享、设备丢失),请立即轮换。 - **AIMS token 处理**:服务器在首次使用时会将你的 API 密钥交换为短期的 Bearer token 并缓存在内存中。token 过期时会自动刷新。在初始的 AIMS 身份验证调用之后,原始的 `secret_key` 不会被记录或传输。 - 在 `stdio` 模式下,服务器不会开放任何网络端口。在 `streamable-http` 或 `sse` 模式下,除非你明确需要远程访问,否则请绑定到 `127.0.0.1`(默认设置),在这种情况下,请添加适当的网络控制措施。 - `base.py` 不会记录请求体、响应体或凭据材料。如果你 fork 代码并添加了日志记录功能,请务必注意排除 token 和 secret 值。 - 本仓库不附带任何类型的凭据。 ## 测试 一个独立的冒烟测试脚本可以在不通过 MCP 客户端的情况下,测试具有代表性的工具横截面: ``` python smoke_test.py ``` 这将在将服务器连接到你的 MCP 客户端之前,验证凭据有效性、网络可达性和基础配置。 ## 故障排除
“身份验证失败” / 401 错误 - 确认 `ALERTLOGIC_API_KEY` 是完整的 `access_key_id:secret_key` 字符串,包含冒号分隔符。 - 验证 `ALERTLOGIC_BASE_URL` 是否与你的数据中心匹配(美国为 `api.cloudinsight.alertlogic.com`,英国为 `api.cloudinsight.alertlogic.co.uk`)。 - 检查 AlertLogic 控制台中该访问密钥是否仍然处于活动状态 (Manage → Users → Access Keys)。 - 确认 `ALERTLOGIC_ACCOUNT_ID` 是否正确 —— 如果不匹配,可能会导致在账户范围内的 endpoint 上发生 401 错误。
工具未在 Claude Desktop 中显示 - 在 `claude_desktop_config.json` 中使用绝对路径。波浪号 (`~`) 和相对路径不会被展开。 - 将 `command` 指向虚拟环境的 Python (`.venv/bin/python`),而不是系统 Python。 - 检查 Claude Desktop 日志中是否有来自此服务器的 stderr 输出:macOS 日志位于 `~/Library/Logs/Claude/`。 - 编辑配置文件后,请完全重启 Claude Desktop(退出并重新打开)。
"ModuleNotFoundError: mcp" 或缺少依赖项 你正在虚拟环境之外运行 `python main.py`。请先激活它 (`source .venv/bin/activate`),或者直接调用虚拟环境的 Python (`/path/to/.venv/bin/python main.py`)。
HTTP 模式:端口 8000 上的连接被拒绝 确保在尝试连接之前使用 `MCP_TRANSPORT=streamable-http python main.py` 启动了服务器。只有在选择了非 stdio 传输方式时,服务器才会绑定端口。
结果为空或静默失败 如果所有工具调用都返回空结果或静默失败,这通常是由 SSO 或代理层阻止了出站 API 调用引起的。尝试从非代理网络或使用其他客户端运行以进行确认。同时检查 `ALERTLOGIC_BASE_URL` 和 `ALERTLOGIC_ACCOUNT_ID` 是否均适用于你的环境。
## 贡献指南 欢迎提交 PR 和 issue。 1. Fork 本仓库,创建功能分支,提交你的更改,并发起 PR。 2. 在 `modules/ 目录下匹配的模块文件中,将新的 AlertLogic endpoint 作为额外的 `@server.tool` 定义添加进去。 3. 对于新模块:创建包含 `setup(server)` 函数的 `modules/.py` 文件,然后将其添加到 `main.py` 的 `MODULES` 列表中。 4. 保持工具 docstring 的准确性和描述性 —— docstring 是 LLM 在决定是否以及如何调用该工具时所看到的内容。 5. 提交前运行 `python smoke_test.py` 以验证基本功能。 ## 相关 MCP 服务器 这三个服务器涵盖了安全栈的互补层 —— 网络/日志 (AlertLogic)、端点保护 (Sophos) 以及 EDR/威胁情报 (CrowdStrike)。将它们一起使用以实现全栈的 AI 驱动的 SOC 操作。 | 服务器 | 平台 | 亮点 | |--------|----------|------------| | [falcon-mcp](https://github.com/rijul170/falcon-mcp) | CrowdStrike Falcon | EDR 遥测、RTR、威胁情报、MSSP Flight Control,1,296 个工具 | | [sophos-central-mcp](https://github.com/rijul170/sophos-central-mcp) | Sophos Central | 端点隔离、Live Discover SQL、XDR、email/firewall/DNS,334 个工具 | | [alertlogic-mcp](https://github.com/rijul170/alertlogic-mcp) | Alert Logic MDR | 事件响应、SQL 日志搜索、SOAR、漏洞管理,473 个工具 | ## 许可证 MIT 许可证。完整文本请参见 [LICENSE](LICENSE)。
标签:MCP协议, MDR, Python, SOAR自动化, 安全运营, 库, 应急响应, 扫描框架, 无后门, 逆向工具