Panther MCP服务器

Panther的模型上下文协议(MCP)服务器提供以下功能:
- 从IDE编写和调整检测结果
- 使用自然语言交互式查询安全日志
- 对一个或多个警报进行分类、评论和解决
可用工具
Alerts
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
add_alert_comment | 在Panther警报中添加评论 | “在警报abc123中添加评论‘看起来很糟糕’” |
start_ai_alert_triage | 使用智能见解和建议对Panther警报启动人工智能分流分析 | “启动警报abc123的人工智能分流”/“生成警报def456的详细人工智能分析” |
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的所有评论” |
Data Lake
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
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中的事件模式” |
Scheduled Queries
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
list_scheduled_queries | 列出所有支持分页的计划查询 | “显示所有计划查询”/“列出前25个计划查询” |
get_scheduled_query | 按ID获取特定计划查询的详细信息 | “获取计划查询的细节‘每周安全报告’” |
Sources
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
list_log_sources | 列出具有可选筛选器(运行状况、日志类型、集成类型)的日志源 | “显示所有运行良好的S3日志源” |
get_http_log_source | 按ID获取特定HTTP日志源的详细信息 | “显示HTTP源'webhook-collector-123'的配置” |
Detections
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
list_detections | 列出Panther的检测结果,并提供全面的过滤支持。支持多种检测类型,并按名称、状态、严重性、标签、日志类型、资源类型、输出ID(目标)等进行过滤。返回每个检测的outputID,显示配置的警报目标 | “显示所有启用的高严重性规则,标记为‘AWS’”/“列出S3资源的禁用策略”/“查找所有具有outputID‘prod-lack’的规则”/“显示向生产目标发出警报的检测” |
get_detection | 获取特定检测的详细信息,包括检测主体和测试。接受具有一种检测类型的列表:\[“rules”\]、\[“scheduled_rules”\]\[“simple_rules”\]或\[“policy”\] | “获取规则ID abc123的详细信息”/“获取策略ID AWS的详细信息.S3.Bucket.PublicReadACP” |
disable_detection | 通过将enabled设置为false来禁用检测。支持规则、scheduled_rules、simple_rules和策略 | “禁用规则abc123”/“禁用策略AWS.S3.Bucket.PublicReadACP” |
Global Helpers
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
list_global_helpers | 列出具有全面过滤选项(名称搜索、创建者、修饰符)的全局帮助函数 | “显示名称中包含'aws'的全局帮助” |
get_global_helper | 获取特定全局助手的详细信息和完整Python代码 | “获取全局助手‘AWSUtilities’的完整代码” |
Data Models
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
list_data_models | 在规则中列出控制UDM映射的数据模型 | “显示所有用于日志解析的数据模型” |
get_data_model | 获取特定数据模型的详细信息 | “获取‘AWS_CloudTrail’数据模型的完整详细信息” |
Schemas
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
list_log_type_schemas | 列出具有可选过滤器的可用日志类型模式 | “显示所有与AWS相关的模式” |
get_log_type_schema_details | 获取特定日志类型模式的详细信息 | “获取AWS.CloudTrail模式的完整详细信息” |
Metrics
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
get_rule_alert_metrics | 获取按规则分组的警报指标 | “按警报计数显示前10条规则” |
get_severity_alert_metrics | 获取按严重性分组的警报指标 | “按严重性显示上周的警报计数” |
get_bytes_processed_metrics | 按日志类型和来源获取数据摄取指标 | “按日志类型显示数据摄取量” |
Users & Access Management
| 工具名称 | 描述 | 示例提示 |
|---|---|---|
list_users | 列出所有支持分页的Panther用户帐户 | “显示所有活动Panther用户”/“列出前25个用户” |
get_user | 获取特定用户的详细信息 | “获取用户ID的详细信息”'" |
get_permissions | 获取当前用户的权限 | “我有哪些权限?” |
list_roles | 列出所有具有筛选选项的角色(名称搜索、角色ID、排序方向) | “显示名称中包含“管理员”的所有角色” |
get_role | 获取特定角色的详细信息,包括权限 | “获取‘管理员’角色的完整详细信息” |
豹配置
按照以下步骤配置API凭据和环境。
- 在Panther中创建API令牌:
- 导航到设置(齿轮图标)→ API令牌
- 创建具有以下权限的新令牌(建议采用只读方式启动):
- View Required Permissions
Screenshot of Panther Token permissions Screenshot of Panther Token permissions
- 安全地存储生成的令牌(例如1Password)
- 从浏览器中复制Panther实例URL(例如。,
https://YOUR-PANTHER-INSTANCE.domain)
- 注:这必须包括 https://
MCP服务器安装
选择以下安装方法之一:
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"
}
}
}
}版本固定: 为了生产稳定性,请固定到特定的版本标签上:
"ghcr.io/panther-labs/mcp-panther:v2.2.0"可用标签可以在 .
紫外线
对于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"
}
}
}
}版本固定: 为了生产稳定性,请固定到特定版本:
"args": ["mcp-panther==2.2.0"]可用版本可以在上找到 PyPI.
MCP客户端设置
光标
请按照此处的说明进行操作 配置您的项目或全局MCP配置。 非常重要的是,您不要将此文件签入版本控制。
配置后,导航到光标设置>MCP以查看正在运行的服务器:
提示:
- 通过使用
@符号,然后键入特定目录。 - 为了在工具使用过程中获得更高的可靠性,请尝试选择特定的型号,如Claude 3.7 Sonnet。
- 如果您的MCP客户端未能从Panther MCP服务器中找到任何工具,请尝试重新启动客户端并确保MCP服务器正在运行。在Cursor中,刷新MCP服务器并开始新的聊天。
克劳德代码
克劳德代码 是Anthropic的官方CLI工具。使用Docker添加Panther MCP服务器:
claude mcp add-json 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-TOKEN"
}
}'或者,使用UVX:
claude mcp add-json panther '{
"command": "uvx",
"args": ["mcp-panther"],
"env": {
"PANTHER_INSTANCE_URL": "https://YOUR-PANTHER-INSTANCE.domain",
"PANTHER_API_TOKEN": "YOUR-API-TOKEN"
}
}'添加后,验证服务器是否已配置:
claude mcp list克劳德桌面版
要与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代理:
# Start Goose with the MCP server
goose session --with-extension "uvx mcp-panther"鹅桌面
与一起使用 鹅桌面,Block的开源AI代理:
从“扩展”->“添加自定义扩展”提供您的配置信息。
运行服务器
MCP Panther服务器支持多种传输协议:
STDIO(默认)
对于本地开发和MCP客户端集成:
uv run python -m mcp_panther.server流式HTTP
要作为持久web服务运行,请使用HTTP传输。这非常适合:
- 长时间运行的服务器部署
- 多个客户端连接到同一服务器
- 通过连续日志监控进行测试和调试
使用Docker运行(分离)
docker run -d \
--name panther-mcp-server \
-p 8000:8000 \
-e PANTHER_INSTANCE_URL=https://YOUR-PANTHER-INSTANCE.domain \
-e PANTHER_API_TOKEN=YOUR-API-TOKEN \
-e MCP_TRANSPORT=streamable-http \
-e MCP_HOST=0.0.0.0 \
-e MCP_PORT=8000 \
-e LOG_LEVEL=INFO \
--restart unless-stopped \
ghcr.io/panther-labs/mcp-panther:latest使用Docker Compose(推荐)
创建 docker-compose.yml 文件:
services:
panther-mcp:
image: ghcr.io/panther-labs/mcp-panther:latest
container_name: panther-mcp-server
ports:
- "8000:8000"
environment:
- PANTHER_INSTANCE_URL=https://YOUR-PANTHER-INSTANCE.domain
- PANTHER_API_TOKEN=YOUR-API-TOKEN
- MCP_TRANSPORT=streamable-http
- MCP_HOST=0.0.0.0
- MCP_PORT=8000
- LOG_LEVEL=INFO
restart: unless-stopped启动服务器:
# Start in detached mode
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the server
docker-compose down将Claude代码连接到HTTP服务器
重要提示: 服务器在HTTP(不是HTTPS)上运行。使用配置Claude代码 http:// 网址:
# Add the HTTP endpoint (note: http:// not https://)
claude mcp add-json panther-http '{
"url": "http://localhost:8000/mcp"
}'
# Verify configuration
claude mcp list测试连接
# Test the HTTP endpoint
curl http://localhost:8000/mcp
# View server logs
docker logs -f panther-mcp-server
# Or with docker-compose:
docker-compose logs -f您还可以使用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"Available tools: {len(tools)}")
asyncio.run(test_connection())流式HTTP故障排除
端口已在使用中
如果你看到 Bind for 0.0.0.0:8000 failed: port is already allocated:
# Check what's using the port
lsof -i :8000
# Stop conflicting containers
docker ps | grep panther
docker stop
# Or use a different port via MCP_PORT environment variable:
-e MCP_PORT=8080
# Then connect to: http://localhost:8080/mcp无效的HTTP请求警告
如果你看到 WARNING: Invalid HTTP request received 在日志中,这通常意味着:
- Claude Code正试图通过HTTPS而不是HTTP连接
- 检查您的配置使用情况
http://不https:// - 通过以下方式进行验证:
claude mcp list
环境变量
MCP_TRANSPORT:设置运输类型(stdio或streamable-http)MCP_PORT:HTTP传输端口(默认值:3000)MCP_HOST:HTTP传输主机(默认值:127.0.0.1)MCP_LOG_FILE:日志文件路径(可选)
安全最佳实践
我们强烈推荐以下MCP安全最佳实践:
- 对Panther API令牌应用严格的最小特权。 将令牌作用于所需的最小权限,并将其绑定到IP允许列表或CIDR范围,这样如果被泄露,它们就毫无用处。按首选间隔(例如,每30天)旋转凭据。
- 将MCP服务器托管在具有只读挂载的锁定沙箱(例如Docker)中。 这将任何妥协限制在最小的爆炸半径内。
- 监控Panther的凭证访问并监控异常情况。 写一条黑豹规则!
- 仅运行受信任的、正式签名的MCP服务器。 运行前验证数字签名或校验和,审核工具代码,避免使用非官方发布商的社区工具。
故障排除
检查服务器日志以了解详细的错误消息: tail -n 20 -F ~/Library/Logs/Claude/mcp*.log。常见问题和解决方案如下。
运行工具
- 如果你得到一个
{"success": false, "message": "Failed to [action]: Request failed (HTTP 403): {\"error\": \"forbidden\"}"}错误,这可能意味着您的API令牌缺少该工具所需的特定权限。 - 确保您的Panther实例URL设置正确。您可以在
config://panther从您的MCP客户端获取资源。
贡献
我们欢迎为改进MCP Panther做出贡献!以下是您可以提供帮助的方式:
- 报告问题:对任何错误或功能请求打开问题
- 提交拉取请求:分叉存储库并提交PR以修复错误或新功能
- 改进文档:帮助我们使文档更清晰、更全面
- 共享用例:让我们知道您是如何使用MCP Panther的,以及有什么可以让它变得更好
请确保您的贡献符合我们的编码标准,并包括适当的测试和文档。
贡献者
查看我们的 贡献者.md 查看完整的贡献者列表。
许可证
此项目在Apache License 2.0下获得许可-有关详细信息,请参阅License文件。
