微软哨兵MCP服务器
识别结果:正文为英语。 翻译结果:微软哨兵多控制器服务器
服务介绍
Microsoft Sentinel MCP 服务器
一个用于 Microsoft Sentinel 的 模型上下文协议 (MCP) 服务器。该服务器允许对 Microsoft Sentinel 实例进行只读访问,包括高级查询、事件查看和 Azure Sentinel 环境中的资源探索。它提供了一个模块化且可扩展的平台,适用于仅观察的安全操作和分析。
⚠️ 重要安全通知 ⚠️
仅限测试环境:此 Microsoft Sentinel MCP 服务器仅支持只读操作,并且仅适用于测试环境。不应将其连接到生产环境中的 Sentinel 实例。
隐私警告:将此服务器连接到生产环境中的 Microsoft Entra ID (Azure AD) 或 Sentinel 环境可能会将敏感的用户和目录数据暴露给 LLM 操作员或公共 LLM。仅在非生产/测试租户或具有 MCP 支持的私有 LLM 中使用。
安全警告:将生产环境中的 Microsoft Sentinel 实例连接到公共 LLM 会带来重大的隐私和安全风险。仅在私有且安全的环境中执行生产安全操作。
✨ 功能
-
KQL 查询执行:运行并验证 KQL 查询,使用模拟数据进行测试
-
日志分析管理:工作区信息、表列表和架构
-
安全事件:列出并查看详细的事件信息
-
分析规则:按 MITRE 战术/技术列出、查看和分析
-
规则模板:按 MITRE 框架访问和分析模板
-
狩猎查询:按战术列出、查看详细信息和分析
-
数据连接器:列出并查看连接器详细信息
-
监视列表:管理监视列表及其项
-
威胁情报:域名 WHOIS 和 IP 地理位置查找
-
元数据与源代码控制:列出并查看存储库详细信息
-
ML 分析:访问 ML 分析设置
-
授权:查看 RBAC 角色分配
-
Entra ID 用户与组:从 Microsoft Entra ID 查看用户和组详细信息
🚀 快速开始
1. 使用 Azure CLI 进行身份验证
在使用 MCP 服务器之前,您必须使用具有访问 Microsoft Sentinel 工作区权限的帐户登录 Azure:
bash
az login
2. 克隆仓库
bash
git clone https://github.com/dstreefkerk/ms-sentinel-mcp-server.git
cd ms-sentinel-mcp-server
3. 使用 PowerShell 脚本安装(推荐)
使用提供的 PowerShell 安装脚本来设置 MCP 服务器:
powershell
从仓库根目录运行
.install.ps1
该脚本将:
- 检查 Python 安装
- 创建虚拟环境并安装依赖项
- 生成 Claude Desktop 配置文件
- 将配置复制到剪贴板
运行脚本后,您可以直接将配置粘贴到您的 MCP 客户端(如 Claude Desktop、Cursor 等)中。
4. 使用 MCP 服务器
在您使用相关工作区信息配置了 MCP 客户端配置之后,MCP 服务器即可使用。
请记住,如果您使用的是 Azure CLI 身份验证,则需要从 MCP 客户端配置中移除 AZURE_CLIENT_ID 和 AZURE_CLIENT_SECRET。
🧰 工具参考
以下是可以使用的工具。有关完整文档,请参阅 resources/tool_docs/ 目录。工具名称和描述与 MCP 服务器的工具注册表保持同步,以便 MCP 客户端可以检索它们。
| 工具 | 类别 | 描述 |
|---|---|---|
entra_id_list_users |
Entra ID | 列出 Microsoft Entra ID (Azure AD) 中的所有用户 |
entra_id_get_user |
Entra ID | 通过 UPN 或对象 ID 从 Entra ID 获取用户 |
entra_id_get_group |
Entra ID | 通过对象 ID 从 Entra ID 获取一个组 |
sentinel_logs_search |
KQL | 在 Azure Monitor 日志中运行 KQL 查询 |
sentinel_query_validate |
KQL | 本地验证 KQL 查询语法 |
sentinel_logs_search_with_dummy_data |
KQL | 使用模拟数据测试 KQL 查询 |
sentinel_logs_tables_list |
Log Analytics | 列出 Log Analytics 工作区中的可用表 |
sentinel_logs_table_details_get |
Log Analytics | 获取 Log Analytics 表的详细信息 |
sentinel_logs_table_schema_get |
Log Analytics | 获取 Log Analytics 表的架构 |
sentinel_workspace_get |
Log Analytics | 获取工作区信息 |
sentinel_incident_details_get |
Incidents | 获取特定 Sentinel 事件的详细信息 |
sentinel_incident_list |
Incidents | 列出 Microsoft Sentinel 中的安全事件 |
sentinel_analytics_rule_list |
Analytics Rules | 列出所有带有关键字段的分析规则 |
sentinel_analytics_rule_get |
Analytics Rules | 获取特定分析规则的详细信息 |
sentinel_analytics_rules_count_by_tactic |
Analytics Rules | 按战术统计 Sentinel 分析规则 |
sentinel_analytics_rules_count_by_technique |
Analytics Rules | 按 MITRE 技术统计 Sentinel 分析规则 |
sentinel_analytics_rule_templates_list |
Rule Templates | 列出所有 Sentinel 分析规则模板 |
sentinel_analytics_rule_template_get |
Rule Templates | 通过名称或 ID 获取特定的 Sentinel 分析规则模板 |
sentinel_analytics_rule_templates_count_by_tactic |
Rule Templates | 按战术统计 Sentinel 分析规则模板 |
sentinel_analytics_rule_templates_count_by_technique |
Rule Templates | 按 MITRE 技术统计 Sentinel 分析规则模板 |
sentinel_hunting_queries_list |
Hunting | 列出所有 Sentinel 狩猎查询,可选过滤条件 |
sentinel_hunting_query_get |
Hunting | 通过名称或 ID 获取 Sentinel 狩猎查询的完整详细信息 |
sentinel_hunting_queries_count_by_tactic |
Hunting | 按战术统计 Sentinel 狩猎查询 |
sentinel_connectors_list |
Data Connectors | 列出数据连接器 |
sentinel_connectors_get |
Data Connectors | 通过 ID 获取特定的数据连接器 |
sentinel_watchlists_list |
Watchlists | 列出所有 Sentinel 监视列表 |
sentinel_watchlist_get |
Watchlists | 获取特定的 Sentinel 监视列表 |
sentinel_watchlist_items_list |
Watchlists | 列出 Sentinel 监视列表中的所有项 |
sentinel_watchlist_item_get |
Watchlists | 从 Sentinel 监视列表中获取特定项 |
sentinel_domain_whois_get |
Threat Intel | 获取域名的 WHOIS 信息 |
sentinel_ip_geodata_get |
Threat Intel | 获取 IP 地址的地理位置数据 |
sentinel_metadata_get |
元数据 | 通过 ID 获取特定的 Sentinel 元数据详情 |
sentinel_source_controls_list |
源控制 | 列出当前工作区中的所有 Sentinel 源控制 |
sentinel_source_control_get |
源控制 | 通过 ID 获取特定的 Sentinel 源控制详情 |
sentinel_ml_analytics_settings_list |
ML 分析 | 列出所有 Sentinel ML 分析设置 |
sentinel_ml_analytics_setting_get |
ML 分析 | 通过名称获取特定的 Sentinel ML 分析设置 |
sentinel_authorization_summary |
授权 | 汇总用于 Sentinel 访问的 Azure RBAC 角色分配 |
log_analytics_saved_searches_list |
保存的搜索 | 列出 Log Analytics 工作区中的所有保存的搜索 |
log_analytics_saved_search_get |
保存的搜索 | 从 Log Analytics 工作区中获取特定的保存的搜索 |
🛠️ 使用方法
在 Claude Desktop 或类似环境中安装
使用提供的 PowerShell 安装脚本来为 Claude Desktop 或其他兼容 MCP 的客户端设置 MCP 服务器:
powershell
从仓库根目录运行
.install.ps1
该脚本将:
- 检查 Python 安装
- 创建虚拟环境并安装依赖项
- 运行安装后步骤
- 生成 Claude Desktop 配置文件
- 将配置复制到剪贴板
运行脚本后,您可以直接将配置粘贴到您的 MCP 客户端(如 Claude Desktop、Cursor 等)中。该脚本生成与 Claude 兼容的 MCP 服务器配置。如果您打算使用不同的 MCP 客户端,请记住这一点。
高级安装选项
手动环境设置
如果您希望手动设置环境:
-
配置环境变量
复制提供的模板并填写您的 Azure 凭据:
bash
cp .env.example .env编辑 .env 并设置:
AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_SUBSCRIPTION_ID, AZURE_RESOURCE_GROUP, AZURE_WORKSPACE_NAME, AZURE_WORKSPACE_ID
-
安装依赖项(使用 uv)
bash
uv venv
uv pip install -e . -
替代的服务器运行选项
使用 MCP CLI:
bash
mcp run wrapper.py开发和热重载:
bash
mcp dev wrapper.pySSE 模式(适用于 IDE):
bash
python wrapper.py --sse
Inspector UI
当在开发模式下运行时(mcp dev wrapper.py),MCP Inspector UI 可以在 http://127.0.0.1:6274 访问。
🧩 开发
- 资源: 将 Python 文件添加到
resources/目录,并实现register_resources(mcp)函数。 - 工具: 将 Python 文件添加到
tools/目录,并实现register_tools(mcp)函数。工具必须遵循docs/tool-architecture-and-implementation-requirements.md中定义的结构。 - 提示: 将提示模板添加到
prompts/目录,用于 LLM 驱动的工作流。
resources/、tools/ 和 prompts/ 目录中的所有组件在服务器启动时都会自动发现并注册。无需手动导入。
🔐 身份验证与环境变量
MCP 服务器支持 Azure Python SDK 的 DefaultAzureCredential 支持的所有身份验证方法。
使用服务主体认证而不是 Azure CLI
在 Azure 中设置一个应用注册,并分配以下角色:
Log Analytics ReaderMicrosoft Sentinel Reader
如果您愿意,还可以授予应用注册以下 Microsoft Graph 权限:
-
User.Read.All -
Group.Read.All然后,在您的.env文件或MCP服务器配置中使用以下环境变量: -
AZURE_TENANT_ID -
AZURE_CLIENT_ID -
AZURE_CLIENT_SECRET -
AZURE_SUBSCRIPTION_ID -
AZURE_RESOURCE_GROUP -
AZURE_WORKSPACE_NAME -
AZURE_WORKSPACE_ID
请参阅.env.example以获取模板。
Azure CLI 认证
bash
az login
如果您使用Azure CLI认证,可以从配置中省略AZURE_CLIENT_SECRET和AZURE_CLIENT_ID。
🐛 调试
通过在您的.env文件中将MCP_DEBUG_LOG环境变量设置为true来启用调试模式:
MCP_DEBUG_LOG=true
日志将被写入到您的临时目录下的sentinel_mcp_server.log文件中。
📄 许可证
本项目根据MIT许可证获得许可。