Panther 的模型上下文协议 (MCP) 服务器提供了以下功能:
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
add_alert_comment | 向 Panther 警报添加评论 | "向警报 abc123 添加评论 '看起来很糟糕'" |
start_ai_alert_triage | 对特定 Panther 警报启动 AI 驱动的分类分析,提供智能见解和建议 | "对警报 abc123 启动 AI 分类" / "生成警报 def456 的详细 AI 分析" |
get_ai_alert_triage_summary | 获取先前为特定警报生成的最新 AI 分类摘要 | "获取警报 abc123 的 AI 分类摘要" / "显示警报 def456 的 AI 分析" |
get_alert | 获取特定警报的详细信息 | "警报 8def456 的状态是什么?" |
get_alert_events | 获取给定警报的一小部分事件 | "显示与警报 8def456 相关的事件" |
list_alerts | 列出警报,并提供全面的过滤选项(日期范围、严重性、状态等) | "显示过去24小时内所有高严重性的警报" |
bulk_update_alerts | 批量更新多个警报的状态、分配人和/或评论 | "将警报 abc123、def456 和 ghi789 更新为已解决状态,并添加评论 '已修复'" |
update_alert_assignee | 更新一个或多个警报的分配人 | "将警报 abc123 和 def456 分配给 John" |
update_alert_status | 更新一个或多个警报的状态 | "将警报 abc123 和 def456 标记为已解决" |
list_alert_comments | 列出特定警报的所有评论 | "显示警报 abc123 的所有评论" |
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
query_data_lake | 在 Panther 的数据湖上执行 SQL 查询,并返回同步结果 | "查询过去一天内 AWS CloudTrail 日志中的登录失败尝试" |
get_table_schema | 获取特定表的架构信息 | "显示 AWS_CLOUDTRAIL 表的架构" |
list_databases | 列出 Panther 中所有可用的数据湖数据库 | "列出所有可用的数据库" |
list_database_tables | 列出 Panther 数据湖中特定数据库的所有可用表 | "panther_logs 数据库中有哪些表" |
get_alert_event_stats | 通过聚合多个警报的事件数据到基于时间的统计信息来分析模式和关系 | "显示来自警报 abc123 和 def456 的事件模式" |
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
list_scheduled_queries | 列出所有计划查询,并支持分页 | "显示所有计划查询" / "列出前25个计划查询" |
get_scheduled_query | 通过 ID 获取特定计划查询的详细信息 | "获取计划查询 'weekly-security-report' 的详细信息" |
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
list_log_sources | 列出日志来源,并可选地应用过滤器(健康状态、日志类型、集成类型) | "显示所有健康的 S3 日志来源" |
get_http_log_source | 通过 ID 获取特定 HTTP 日志来源的详细信息 | "显示 HTTP 源 'webhook-collector-123' 的配置" |
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
list_detections | 列出来自 Panther 的检测规则,并支持全面的过滤选项。支持多种检测类型,并可根据名称、状态、严重性、标签、日志类型、资源类型、输出 ID(目的地)等进行过滤。返回每个检测规则的输出 ID,显示配置的警报目的地 | "显示所有启用的 HIGH 严重性规则,带有标签 'AWS'" / "列出禁用的 S3 资源策略" / "查找所有具有输出 ID 'prod-slack' 的规则" / "显示警报到生产目的地的检测规则" |
get_detection | 获取特定检测规则的详细信息,包括检测主体和测试。接受一个包含一种检测类型的列表:["rules"]、["scheduled_rules"]、["simple_rules"] 或 ["policies"] | "获取规则 ID abc123 的详细信息" / "获取策略 ID AWS.S3.Bucket.PublicReadACP 的详细信息" |
disable_detection | 通过将 enabled 设置为 false 来禁用检测规则。支持规则、计划规则、简单规则和策略 | "禁用规则 abc123" / "禁用策略 AWS.S3.Bucket.PublicReadACP" |
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
list_global_helpers | 列出全局辅助函数,并支持全面的过滤选项(名称搜索、创建者、修改者) | "显示名称中包含 'aws' 的全局辅助函数" |
get_global_helper | 获取特定全局辅助函数的详细信息及完整的 Python 代码 | "获取全局辅助函数 'AWSUtilities' 的完整代码" |
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
list_data_models | 列出控制规则中 UDM 映射的数据模型 | "显示所有用于日志解析的数据模型" |
get_data_model | 获取特定数据模型的详细信息 | "获取 'AWS_CloudTrail' 数据模型的完整详细信息" |
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
list_log_type_schemas | 列出可用的日志类型模式,并可选地应用过滤器 | "显示所有与 AWS 相关的模式" |
get_log_type_schema_details | 获取特定日志类型模式的详细信息 | "获取 AWS.CloudTrail 模式的完整详细信息" |
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
get_rule_alert_metrics | 获取按规则分组的警报指标 | "显示按警报数量排名的前10条规则" |
get_severity_alert_metrics | 获取按严重性分组的警报指标 | "显示过去一周按严重性划分的警报数量" |
get_bytes_processed_metrics | 获取按日志类型和来源的数据摄入指标 | "显示按日志类型的数据摄入量" |
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
list_users | 列出所有 Panther 用户账户,并支持分页 | "显示所有活跃的 Panther 用户" / "列出前25个用户" |
get_user | 获取特定用户的详细信息 | "获取用户 ID 'john.doe@company.com' 的详细信息" |
get_permissions | 获取当前用户的权限 | "我有哪些权限?" |
list_roles | 列出所有角色,并支持过滤选项(名称搜索、角色 ID、排序方向) | "显示名称中包含 'Admin' 的所有角色" |
get_role | 获取特定角色的详细信息,包括权限 | "获取 'Admin' 角色的完整详细信息" |
按照以下步骤配置您的 API 凭据和环境。
在 Panther 中创建一个 API 令牌:
导航到设置(齿轮图标)→ API 令牌
创建一个新的令牌,并授予以下权限(推荐从只读开始):

安全存储生成的令牌(例如,1Password)
复制 Panther 实例 URL(例如,https://YOUR-PANTHER-INSTANCE.domain)
https://选择以下安装方法之一:
最简单的入门方式是使用我们预构建的 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"
}
}
}
}
对于 Python 用户,您可以使用 uvx 从 PyPI 直接运行:
配置您的 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"
}
}
}
}
遵循此处的说明以配置您的项目或全局 MCP 配置。非常重要的是您不要将此文件提交到版本控制系统中。
配置完成后,导航到 Cursor 设置 > MCP 查看正在运行的服务器:
<img src=".github/panther-mcp-cursor-config.png" width="500" alt="Cursor MCP 配置截图" />提示:
@ 符号并指定具体目录,明确指出您希望在哪里生成新规则。要与 Claude Desktop 一起使用,请手动配置您的 claude_desktop_config.json:
{
"mcpServers": {
"mcp-panther": {
"command": "uvx",
"args": ["mcp-panther"],
"env": {
"PANTHER_INSTANCE_URL": "https://YOUR-PANTHER-INSTANCE.domain",
"PANTHER_API_TOKEN": "YOUR-PANTHER-API-TOKEN"
}
}
}
}
如果遇到任何问题,请尝试此处的故障排除步骤。
与 Goose CLI 一起使用,Block 的开源 AI 代理:
# 使用 MCP 服务器启动 Goose
goose session --with-extension "uvx mcp-panther"
与 Goose Desktop 一起使用,Block 的开源 AI 代理:
从“扩展”->“添加自定义扩展”提供您的配置信息。
<img src=".github/panther-mcp-goose-desktop-config.png" width="500" />MCP Panther 服务器支持多种传输协议:
适用于本地开发和 MCP 客户端集成:
uv run python -m mcp_panther.server
作为持久的 Web 服务运行:
docker run \
-e PANTHER_INSTANCE_URL=https://instance.domain/ \
-e PANTHER_API_TOKEN= \
-e MCP_TRANSPORT=streamable-http \
-e MCP_HOST=0.0.0.0 \
-e MCP_PORT=8000 \
--rm -i -p 8000:8000 \
ghcr.io/panther-labs/mcp-panther
然后可以通过 http://localhost:8000/mcp 连接到服务器。
要使用 FastMCP 客户端测试连接:
import asyncio
from fastmcp import Client
async def test_connection():
async with Client("http://localhost:8000/mcp") as client:
tools = await client.list_tools()
print(f"可用工具: {len(tools)}")
asyncio.run(test_connection())
MCP_TRANSPORT:设置传输类型(stdio 或 streamable-http)MCP_PORT:HTTP 传输的端口(默认:3000)MCP_HOST:HTTP 传输的主机(默认:127.0.0.1)MCP_LOG_FILE:日志文件路径(可选)我们强烈建议采用以下 MCP 安全最佳实践:
检查服务器日志以获取详细的错误消息:tail -n 20 -F ~/Library/Logs/Claude/mcp*.log。以下是常见的问题及其解决方案。
{"success": false, "message": "Failed to [action]: Request failed (HTTP 403): {\"error\": \"forbidden\"}"} 错误,这可能意味着您的 API 令牌缺乏执行该工具所需的特定权限。config://panther 资源中查看此信息。我们欢迎贡献以改进 MCP-Panther!这里是如何帮助的方法:
请确保您的贡献遵循我们的编码标准,并包含适当的测试和文档。
这个项目得益于所有贡献者的努力。特别感谢 Tomasz Tchorz 和 Glenn Edwards 来自 Block,他们在与 Panther 的联合开源工作中发挥了核心作用。
请参阅我们的 CONTRIBUTORS.md 以获取完整的贡献者名单。
本项目根据 Apache 许可证 2.0 授权 - 详情请参见 LICENSE 文件。