返回市场
MCP-豹猫服务器

MCP-豹猫服务器

作者:panther-labs34 星标更新:2025-11-13

项目介绍

Panther MCP Server

Ruff

Panther 的模型上下文协议 (MCP) 服务器提供了以下功能:

  1. 从IDE编写和调整检测规则
  2. 使用自然语言交互式查询安全日志
  3. 分类、评论并解决一个或多个警报
<a href="https://glama.ai/mcp/servers/@panther-labs/mcp-panther"> <img width="380" height="200" src="https://gips2.baidu.com/it/u=3540862285,786521814&fm=3081&app=3081&f=PNG?w=760&h=400" alt="Panther Server MCP 服务器" /> </a>

可用工具

<details> <summary><strong>警报</strong></summary>
工具名称描述示例提示
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 的所有评论"
</details> <details> <summary><strong>数据湖</strong></summary>
工具名称描述示例提示
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 的事件模式"
</details> <details> <summary><strong>计划查询</strong></summary>
工具名称描述示例提示
list_scheduled_queries列出所有计划查询,并支持分页"显示所有计划查询" / "列出前25个计划查询"
get_scheduled_query通过 ID 获取特定计划查询的详细信息"获取计划查询 'weekly-security-report' 的详细信息"
</details> <details> <summary><strong>来源</strong></summary>
工具名称描述示例提示
list_log_sources列出日志来源,并可选地应用过滤器(健康状态、日志类型、集成类型)"显示所有健康的 S3 日志来源"
get_http_log_source通过 ID 获取特定 HTTP 日志来源的详细信息"显示 HTTP 源 'webhook-collector-123' 的配置"
</details> <details> <summary><strong>检测</strong></summary>
工具名称描述示例提示
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"
</details> <details> <summary><strong>全局辅助函数</strong></summary>
工具名称描述示例提示
list_global_helpers列出全局辅助函数,并支持全面的过滤选项(名称搜索、创建者、修改者)"显示名称中包含 'aws' 的全局辅助函数"
get_global_helper获取特定全局辅助函数的详细信息及完整的 Python 代码"获取全局辅助函数 'AWSUtilities' 的完整代码"
</details> <details> <summary><strong>数据模型</strong></summary>
工具名称描述示例提示
list_data_models列出控制规则中 UDM 映射的数据模型"显示所有用于日志解析的数据模型"
get_data_model获取特定数据模型的详细信息"获取 'AWS_CloudTrail' 数据模型的完整详细信息"
</details> <details> <summary><strong>模式</strong></summary>
工具名称描述示例提示
list_log_type_schemas列出可用的日志类型模式,并可选地应用过滤器"显示所有与 AWS 相关的模式"
get_log_type_schema_details获取特定日志类型模式的详细信息"获取 AWS.CloudTrail 模式的完整详细信息"
</details> <details> <summary><strong>指标</strong></summary>
工具名称描述示例提示
get_rule_alert_metrics获取按规则分组的警报指标"显示按警报数量排名的前10条规则"
get_severity_alert_metrics获取按严重性分组的警报指标"显示过去一周按严重性划分的警报数量"
get_bytes_processed_metrics获取按日志类型和来源的数据摄入指标"显示按日志类型的数据摄入量"
</details> <details> <summary><strong>用户与访问管理</strong></summary>
工具名称描述示例提示
list_users列出所有 Panther 用户账户,并支持分页"显示所有活跃的 Panther 用户" / "列出前25个用户"
get_user获取特定用户的详细信息"获取用户 ID 'john.doe@company.com' 的详细信息"
get_permissions获取当前用户的权限"我有哪些权限?"
list_roles列出所有角色,并支持过滤选项(名称搜索、角色 ID、排序方向)"显示名称中包含 'Admin' 的所有角色"
get_role获取特定角色的详细信息,包括权限"获取 'Admin' 角色的完整详细信息"
</details>

Panther 配置

按照以下步骤配置您的 API 凭据和环境。

  1. 在 Panther 中创建一个 API 令牌:

    • 导航到设置(齿轮图标)→ API 令牌

    • 创建一个新的令牌,并授予以下权限(推荐从只读开始):

    • <details> <summary><strong>查看所需权限</strong></summary>

      Panther 令牌权限截图 Panther 令牌权限截图

      </details>
  2. 安全存储生成的令牌(例如,1Password)

  3. 复制 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"
      }
    }
  }
}

UVX

对于 Python 用户,您可以使用 uvx 从 PyPI 直接运行:

  1. 安装 UV

  2. 配置您的 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 配置。非常重要的是您不要将此文件提交到版本控制系统中。

配置完成后,导航到 Cursor 设置 > MCP 查看正在运行的服务器:

<img src=".github/panther-mcp-cursor-config.png" width="500" alt="Cursor MCP 配置截图" />

提示:

  • 使用 @ 符号并指定具体目录,明确指出您希望在哪里生成新规则。
  • 为了在工具使用期间提高可靠性,尝试选择一个特定的模型,如 Claude 3.7 Sonnet。
  • 如果您的 MCP 客户端无法找到来自 Panther MCP 服务器的任何工具,请尝试重启客户端并确保 MCP 服务器正在运行。在 Cursor 中,刷新 MCP 服务器并开始新的聊天。

Claude Desktop

要与 Claude Desktop 一起使用,请手动配置您的 claude_desktop_config.json

  1. 打开 Claude Desktop 设置并导航到开发者选项卡
  2. 点击“编辑配置”以打开配置文件
  3. 添加以下配置:
{
  "mcpServers": {
    "mcp-panther": {
      "command": "uvx",
      "args": ["mcp-panther"],
      "env": {
        "PANTHER_INSTANCE_URL": "https://YOUR-PANTHER-INSTANCE.domain",
        "PANTHER_API_TOKEN": "YOUR-PANTHER-API-TOKEN"
      }
    }
  }
}
  1. 保存文件并重新启动 Claude Desktop

如果遇到任何问题,请尝试此处的故障排除步骤

Goose CLI

Goose CLI 一起使用,Block 的开源 AI 代理:

# 使用 MCP 服务器启动 Goose
goose session --with-extension "uvx mcp-panther"

Goose Desktop

Goose Desktop 一起使用,Block 的开源 AI 代理:

从“扩展”->“添加自定义扩展”提供您的配置信息。

<img src=".github/panther-mcp-goose-desktop-config.png" width="500" />

运行服务器

MCP Panther 服务器支持多种传输协议:

STDIO(默认)

适用于本地开发和 MCP 客户端集成:

uv run python -m mcp_panther.server

Streamable HTTP

作为持久的 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:设置传输类型(stdiostreamable-http
  • MCP_PORT:HTTP 传输的端口(默认:3000)
  • MCP_HOST:HTTP 传输的主机(默认:127.0.0.1)
  • MCP_LOG_FILE:日志文件路径(可选)

安全最佳实践

我们强烈建议采用以下 MCP 安全最佳实践:

  • 对 Panther API 令牌应用严格的最小权限原则。 将令牌的作用域限制为所需的最小权限,并将其绑定到 IP 允许列表或 CIDR 范围,以便即使被泄露也无用。根据偏好间隔(例如每30天)轮换凭据。
  • 将 MCP 服务器托管在一个锁定的沙箱(例如 Docker)中,并使用只读挂载。 这将任何潜在的妥协限制在最小范围内。
  • 监控对 Panther 的凭据访问,并监控异常情况。 编写一个 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 正确设置。您可以在 MCP 客户端中的 config://panther 资源中查看此信息。

贡献

我们欢迎贡献以改进 MCP-Panther!这里是如何帮助的方法:

  1. 报告问题:为任何错误或功能请求打开一个问题
  2. 提交拉取请求:分叉仓库并为错误修复或新功能提交 PR
  3. 改进文档:帮助我们使文档更清晰和更全面
  4. 分享用例:让我们知道您如何使用 MCP-Panther 以及如何使其更好

请确保您的贡献遵循我们的编码标准,并包含适当的测试和文档。

贡献者

这个项目得益于所有贡献者的努力。特别感谢 Tomasz TchorzGlenn Edwards 来自 Block,他们在与 Panther 的联合开源工作中发挥了核心作用。

请参阅我们的 CONTRIBUTORS.md 以获取完整的贡献者名单。

许可证

本项目根据 Apache 许可证 2.0 授权 - 详情请参见 LICENSE 文件。