🚀 Panther MCP Server
Panther的模型上下文协议(MCP)服务器具备以下功能:
- 在IDE中编写和调整检测规则
- 使用自然语言交互式查询安全日志
- 对一个或多个警报进行分类、评论和解决
🔍 可用工具
警报工具
警报
工具名称 |
描述 |
示例提示 |
add_alert_comment |
为Panther警报添加评论 |
"为警报abc123添加评论 '看起来很严重'" |
get_alert_by_id |
获取特定警报的详细信息 |
"警报8def456的状态如何?" |
get_alert_events |
获取给定警报的少量事件样本 |
"显示与警报8def456相关的事件" |
list_alerts |
列出具有综合过滤选项(日期范围、严重性、状态等)的警报 |
"显示过去24小时内的所有高严重性警报" |
update_alert_assignee_by_id |
更新一个或多个警报的负责人 |
"将警报abc123和def456分配给John" |
update_alert_status |
更新一个或多个警报的状态 |
"将警报abc123和def456标记为已解决" |
list_alert_comments |
列出特定警报的所有评论 |
"显示警报abc123的所有评论" |
数据工具
数据
工具名称 |
描述 |
示例提示 |
execute_data_lake_query |
针对Panther的数据湖执行SQL查询 |
"查询过去一天内AWS CloudTrail日志中的失败登录尝试" |
get_data_lake_query_results |
获取先前执行的数据湖查询的结果 |
"获取查询ID为abc123的结果" |
get_sample_log_events |
获取特定日志类型的10条近期事件样本 |
"显示AWS_CLOUDTRAIL日志的样本事件" |
get_table_schema |
获取特定表的架构信息 |
"显示AWS_CLOUDTRAIL表的架构" |
list_databases |
列出Panther中所有可用的数据湖数据库 |
"列出所有可用的数据库" |
list_log_sources |
列出具有可选过滤器(健康状态、日志类型、集成类型)的日志源 |
"显示所有健康的S3日志源" |
list_database_tables |
列出Panther数据湖中特定数据库的所有可用表 |
"panther_logs数据库中有哪些表?" |
summarize_alert_events |
通过聚合多个警报的事件数据来分析模式和关系 |
"显示警报abc123和def456的事件模式" |
规则工具
规则
工具名称 |
描述 |
示例提示 |
create_rule |
创建新的Panther规则 |
"创建一个新规则,以检测AWS控制台中任何用户在一天内超过7次的失败登录尝试" |
disable_rule |
通过将启用状态设置为false来禁用规则 |
"禁用规则abc123" |
get_global_helper_by_id |
获取特定全局助手的详细信息 |
"获取全局助手ID为panther_github_helpers的详细信息" |
get_policy_by_id |
获取特定策略的详细信息 |
"获取策略ID为AWS.S3.Bucket.PublicReadACP的详细信息" |
get_rule_by_id |
获取特定规则的详细信息 |
"获取规则ID为abc123的详细信息" |
get_scheduled_rule_by_id |
获取特定计划规则的详细信息 |
"获取计划规则abc123的详细信息" |
get_simple_rule_by_id |
获取特定简单规则的详细信息 |
"获取简单规则abc123的详细信息" |
list_global_helpers |
列出所有Panther全局助手,支持可选分页 |
"显示CrowdStrike事件的所有全局助手" |
list_policies |
列出所有Panther策略,支持可选分页 |
"显示AWS资源的所有策略" |
list_rules |
列出所有Panther规则,支持可选分页 |
"显示所有启用的规则" |
list_scheduled_rules |
列出所有计划规则,支持可选分页 |
"列出Panther中的所有计划规则" |
list_simple_rules |
列出所有简单规则,支持可选分页 |
"显示Panther中的所有简单规则" |
put_rule |
更新现有规则或创建新规则 |
"将规则abc123的严重性更新为高" |
架构工具
架构
工具名称 |
描述 |
示例提示 |
create_or_update_schema |
创建或更新架构 |
"为自定义日志类型创建新架构" |
get_schema_details |
获取特定架构的详细信息 |
"获取AWS.CloudTrail架构的完整详细信息" |
list_schemas |
列出可用的架构,支持可选过滤 |
"显示所有与AWS相关的架构" |
指标工具
指标
工具名称 |
描述 |
示例提示 |
get_rule_alert_metrics |
获取按规则分组的警报指标 |
"按警报数量显示前10条规则" |
get_severity_alert_metrics |
获取按严重性分组的警报指标 |
"显示上周按严重性划分的警报数量" |
用户工具
用户
工具名称 |
描述 |
示例提示 |
list_panther_users |
列出所有Panther用户账户 |
"显示所有活跃的Panther用户" |
get_permissions |
获取当前用户的权限 |
"我有哪些权限?" |
⚠️ 安全最佳实践
Panther强烈建议遵循以下MCP最佳实践:
- 仅运行受信任的、官方签名的MCP服务器:在运行前验证数字签名或校验和,审计工具代码,并避免使用非官方发布者的社区工具。
- 对Panther API令牌应用严格的最小权限原则:将令牌的权限范围设置为所需的最小权限,并将其绑定到IP允许列表或CIDR范围,这样即使令牌被泄露也将毫无用处。定期轮换凭证(例如,每30天一次)。
- 将MCP服务器部署在锁定的沙箱(如Docker)中,并使用只读挂载:这样可以将任何安全漏洞的影响范围降至最低。
- 监控对Panther的凭证访问并监测异常情况:可以编写一个Panther规则来实现!
- 使用
mcp - scan
扫描MCP服务器:利用invariantlabs提供的mcp - scan
工具来检测常见漏洞。
⚙️ Panther配置
-
在Panther中创建API令牌:
- 导航到设置(齿轮图标)→ API令牌
- 创建一个具有以下权限的新令牌(建议从只读权限开始):
查看所需权限

-
安全地存储生成的令牌(例如,存储在1Password中)
-
从浏览器中获取Panther实例URL(例如,https://YOUR - PANTHER - INSTANCE.domain
)
📦 安装指南
请选择以下安装方法之一:
Docker安装(推荐)
使用我们预先构建的Docker镜像开始使用是最简单的方法:
{
"mcpServers": {
"mcp-panther": {
"command": "docker",
"args": [
"run",
"-i",
"-e", "PANTHER_INSTANCE_URL",
"-e", "PANTHER_API_TOKEN",
"--rm",
"ghcr.io/panther-labs/mcp-panther"
],
"env": {
"PANTHER_INSTANCE_URL": "https://YOUR-PANTHER-INSTANCE.domain",
"PANTHER_API_TOKEN": "YOUR-API-KEY"
}
}
}
}
UVX安装
对于Python用户,可以使用uvx直接从PyPI运行:
- 安装UV
- 配置MCP客户端:
{
"mcpServers": {
"mcp-panther": {
"command": "uvx",
"args": ["mcp-panther"],
"env": {
"PANTHER_INSTANCE_URL": "https://YOUR-PANTHER-INSTANCE.domain",
"PANTHER_API_TOKEN": "YOUR-PANTHER-API-TOKEN"
}
}
}
}
💻 使用示例
Cursor客户端
按照此处的说明配置项目或全局MCP配置。非常重要的是,不要将此文件提交到版本控制中。
配置完成后,导航到Cursor设置 > MCP以查看正在运行的服务器:
提示:
- 使用
@
符号指定要生成新规则的具体目录。
- 为了在使用工具时获得更高的可靠性,尝试选择特定的模型,如Claude 3.7 Sonnet。
- 如果MCP客户端无法从Panther MCP服务器找到任何工具,请尝试重启客户端并确保MCP服务器正在运行。在Cursor中,刷新MCP服务器并开始新的聊天。
Claude Desktop客户端
要在Claude Desktop中使用,请手动配置claude_desktop_config.json
:
- 打开Claude Desktop设置并导航到开发者选项卡
- 点击“编辑配置”以打开配置文件
- 添加以下配置:
{
"mcpServers": {
"mcp-panther": {
"command": "uvx",
"args": ["mcp-panther"],
"env": {
"PANTHER_INSTANCE_URL": "https://YOUR-PANTHER-INSTANCE.domain",
"PANTHER_API_TOKEN": "YOUR-PANTHER-API-TOKEN"
}
}
}
}
- 保存文件并重启Claude Desktop
如果遇到任何问题,请尝试此处的故障排除步骤。
Goose客户端
与Goose(Block的开源AI代理)一起使用:
goose session --with-extension "uvx mcp-panther"
🛠️ 故障排除
查看服务器日志以获取详细的错误消息:tail -n 20 -F ~/Library/Logs/Claude/mcp*.log
。以下是常见问题及解决方案:
- 如果出现
{"success": false, "message": "Failed to [action]: Request failed (HTTP 403): {\"error\": \"forbidden\"}"}
错误,这可能意味着您的API令牌缺少该工具所需的特定权限。
- 确保您的Panther实例URL设置正确。您可以在MCP客户端的
config://panther
资源中查看此信息。
📄 许可证
本项目采用Apache License 2.0许可协议 - 详情请参阅LICENSE文件。
👥 贡献者
本项目的成功离不开所有贡献者的努力。特别感谢来自Block的Tomasz Tchorz和Glenn Edwards,他们在与Panther的联合开源项目MCP - Panther的启动过程中发挥了核心作用。
完整的贡献者列表请参阅CONTRIBUTORS.md。
🤝 贡献指南
我们欢迎大家为改进MCP - Panther做出贡献!您可以通过以下方式提供帮助:
- 报告问题:为任何漏洞或功能请求创建一个问题
- 提交拉取请求:分叉仓库并提交修复漏洞或新增功能的PR
- 改进文档:帮助我们使文档更加清晰和全面
- 分享使用案例:告诉我们您如何使用MCP - Panther以及如何使其变得更好
请确保您的贡献遵循我们的编码标准,并包含适当的测试和文档。