这是一个针对 Microsoft Sentinel 的 Model Context Protocol (MCP) 服务器。此服务器支持对 Microsoft Sentinel 实例进行只读访问,包括高级查询、事件查看以及 Azure Sentinel 环境中的资源探索。它提供了一个模块化且可扩展的平台,用于观察性安全操作和分析。
微软已经发布了他们自己的 Sentinel MCP。请在这里查看:https://learn.microsoft.com/zh-cn/azure/sentinel/datalake/sentinel-mcp-get-started?tabs=visual-studio
仅限测试环境:此 Microsoft Sentinel MCP 服务器仅支持只读操作,并且专为测试环境设计。不建议将其连接到生产 Sentinel 实例。
隐私警告:将此服务器连接到生产 Microsoft Entra ID(Azure AD)或 Sentinel 环境可能会暴露敏感的用户和目录数据给 LLM 操作员或公共 LLM。仅在非生产/测试租户中使用,或者使用具有 MCP 支持的私有 LLM。
安全警告:将生产 Microsoft Sentinel 实例连接到公共 LLM 会带来显著的隐私和安全风险。仅在私有、安全的环境中使用生产安全操作。
KQL 查询执行:运行并验证 KQL 查询,使用模拟数据进行测试
日志分析管理:工作区信息、表列表及模式
安全事件:列出并查看详细事件信息
分析规则:列出、查看并按 MITRE 技术/战术分析
规则模板:访问并按 MITRE 框架分析模板
狩猎查询:列出、查看详情并按战术分析
数据连接器:列出并查看连接器详情
监视名单:管理监视名单及其项目
威胁情报:域名 WHOIS 和 IP 地理位置查询
元数据与源控制:列出并查看存储库详情
机器学习分析:访问机器学习分析设置
授权:查看基于角色的访问控制(RBAC)角色分配
Entra ID 用户与组:查看来自 Microsoft Entra ID 的用户和组详情
在使用 MCP 服务器之前,您必须使用具有访问 Microsoft Sentinel 工作区权限的帐户登录 Azure:
az login
git clone https://github.com/dstreefkerk/ms-sentinel-mcp-server.git
cd ms-sentinel-mcp-server
使用提供的 PowerShell 安装脚本来设置 MCP 服务器:
# 在仓库根目录下运行
.\install.ps1
该脚本将:
运行脚本后,您可以直接将配置粘贴到您的 MCP 客户端(如 Claude Desktop、Cursor 等)中。
在您使用相关工作区信息配置了 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_list_groups | Entra ID | 列出 Microsoft Entra ID(Azure AD)中的所有组 |
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 工作区中的可用表 |
sentinel_logs_table_details_get | 日志分析 | 获取 Log Analytics 表的详细信息 |
sentinel_logs_table_schema_get | 日志分析 | 获取 Log Analytics 表的模式 |
sentinel_workspace_get | 日志分析 | 获取工作区信息 |
sentinel_incident_details_get | 事件 | 获取特定 Sentinel 事件的详细信息 |
sentinel_incident_list | 事件 | 列出 Microsoft Sentinel 中的安全事件 |
sentinel_analytics_rule_list | 分析规则 | 列出所有分析规则及其关键字段 |
sentinel_analytics_rule_get | 分析规则 | 获取特定分析规则的详细信息 |
sentinel_analytics_rules_count_by_tactic | 分析规则 | 按战术统计 Sentinel 分析规则 |
sentinel_analytics_rules_count_by_technique | 分析规则 | 按 MITRE 技术统计 Sentinel 分析规则 |
sentinel_analytics_rule_templates_list | 规则模板 | 列出所有 Sentinel 分析规则模板 |
sentinel_analytics_rule_template_get | 规则模板 | 获取特定 Sentinel 分析规则模板 |
sentinel_analytics_rule_templates_count_by_tactic | 规则模板 | 按战术统计 Sentinel 分析规则模板 |
sentinel_analytics_rule_templates_count_by_technique | 规则模板 | 按 MITRE 技术统计 Sentinel 分析规则模板 |
sentinel_hunting_queries_list | 狩猎 | 列出所有 Sentinel 狩猎查询,可选过滤 |
sentinel_hunting_query_get | 狩猎 | 根据名称或 ID 获取 Sentinel 狩猎查询的全部详细信息 |
sentinel_hunting_queries_count_by_tactic | 狩猎 | 按战术统计 Sentinel 狩猎查询 |
sententil_connectors_list` | 数据连接器 | 列出数据连接器 |
sentinel_connectors_get | 数据连接器 | 根据 ID 获取特定数据连接器 |
sentinel_watchlists_list | 监视名单 | 列出所有 Sentinel 监视名单 |
sentinel_watchlist_get | 监视名单 | 获取特定 Sentinel 监视名单 |
sentinel_watchlist_items_list | 监视名单 | 列出 Sentinel 监视名单中的所有项目 |
sentinel_watchlist_item_get | 监视名单 | 根据 ID 获取 Sentinel 监视名单中的特定项目 |
sentinel_domain_whois_get | 威胁情报 | 获取域名的 WHOIS 信息 |
sentinel_ip_geodata_get | 威胁情报 | 获取 IP 地址的地理位置数据 |
sentinel_metadata_list | 元数据 | 列出当前工作区中的所有 Sentinel 元数据 |
sentinel_metadata_get | 元数据 | 根据 ID 获取特定 Sentinel 元数据的详细信息 |
sentinel_source_controls_list | 源控制 | 列出当前工作区中的所有 Sentinel 源控制 |
sentinel_source_control_get | 源控制 | 根据 ID 获取特定 Sentinel 源控制的详细信息 |
sentinel_ml_analytics_settings_list | 机器学习分析 | 列出所有 Sentinel 机器学习分析设置 |
sentinel_ml_analytics_setting_get | 机器学习分析 | 根据名称获取特定 Sentinel 机器学习分析设置 |
sentinel_authorization_summary | 授权 | 汇总 Azure RBAC 角色分配以供 Sentinel 访问 |
log_analytics_saved_searches_list | 保存的搜索 | 列出 Log Analytics 工作区中的所有保存搜索 |
log_analytics_saved_search_get | 保存的搜索 | 获取 Log Analytics 工作区中的特定保存搜索 |
使用提供的 PowerShell 安装脚本来设置 Claude Desktop 或其他兼容 MCP 的客户端的 MCP 服务器:
# 在仓库根目录下运行
.\install.ps1
该脚本将:
运行脚本后,您可以直接将配置粘贴到您的 MCP 客户端(如 Claude Desktop、Cursor 等)中。该脚本生成与 Claude 兼容的 MCP 服务器配置。如果您打算使用不同的 MCP 客户端,请注意这一点。
如果您希望手动设置环境:
配置环境变量
复制提供的模板并填写您的 Azure 凭证:
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)
uv venv
uv pip install -e .
替代服务器运行选项
使用 MCP CLI:
mcp run wrapper.py
开发与热重载:
mcp dev wrapper.py
SSE 模式(适用于 IDE):
python wrapper.py --sse
当在开发模式下运行时(mcp dev wrapper.py),MCP Inspector UI 可通过 http://127.0.0.1:6274 访问。
resources/ 目录下添加 Python 文件,并实现 register_resources(mcp) 函数。tools/ 目录下添加 Python 文件,并实现 register_tools(mcp) 函数。工具必须遵循在 docs/tool-architecture-and-implementation-requirements.md 中定义的结构。prompts/ 目录下添加 LLM 驱动的工作流的提示模板。resources/、tools/ 和 prompts/ 目录下的所有组件都会在服务器启动时自动发现并注册。无需手动导入。
MCP 服务器支持 Azure Python SDK 的 DefaultAzureCredential 支持的所有身份验证方法。
在 Azure 中设置应用程序注册,并分配以下角色:
Log Analytics ReaderMicrosoft Sentinel Reader如果您愿意,还可以授予应用程序注册以下 Microsoft Graph 权限:
User.Read.AllGroup.Read.All然后,在您的 .env 文件或 MCP 服务器配置中使用以下环境变量:
AZURE_TENANT_IDAZURE_CLIENT_IDAZURE_CLIENT_SECRETAZURE_SUBSCRIPTION_IDAZURE_RESOURCE_GROUPAZURE_WORKSPACE_NAMEAZURE_WORKSPACE_ID请参阅 .env.example 以获取模板。
az login
如果您使用 Azure CLI 身份验证,则可以在配置中省略 AZURE_CLIENT_SECRET 和 AZURE_CLIENT_ID。
通过在您的 .env 文件中将 MCP_DEBUG_LOG 环境变量设置为 true 启用调试模式:
MCP_DEBUG_LOG=true
日志将写入您的临时目录,文件名为 sentinel_mcp_server.log。
本项目根据 MIT 许可证发布。