mcpField
P
Panther MCP Server

Panther MCP Server

ローカル
panther.comセキュリティ471 日前に更新

Panther MCP Server について

Panther MCP Server は、Panther が提供するセキュリティ運用向けの MCP サーバーです。IDE や AI エージェントから検出ルールの作成・調整、自然言語によるセキュリティログの検索、アラートのトリアージを行えます。

主な機能

  1. 01検出ルールの作成と調整
  2. 02自然言語によるセキュリティログ検索
  3. 03アラートのトリアージ、コメント、ステータス更新
  4. 04データレイクに対する SQL クエリ実行
  5. 05アラートとデータ取り込み量のメトリクス確認

活用シーン

  1. 01IDE 内での検出ルールの作成と調整
  2. 02複数アラートの一括解決や担当者変更
  3. 03CloudTrail ログからの失敗したログイン試行の検索

MCP 対応

本プロジェクトは MCP サーバーとして動作し、アラート、データレイク、検出ルール、ログソース、メトリクス、権限などのツールを MCP クライアントに公開します。STDIO と Streamable HTTP の両方のトランスポートに対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"panther": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"PANTHER_INSTANCE_URL",
"-e",
"PANTHER_API_TOKEN",
"ghcr.io/panther-labs/mcp-panther"
],
"env": {
"PANTHER_INSTANCE_URL": "<PANTHER_INSTANCE_URL>",
"PANTHER_API_TOKEN": "<PANTHER_API_TOKEN>"
}
}
}
}
起動コマンドdocker run -i --rm -e PANTHER_INSTANCE_URL -e PANTHER_API_TOKEN ghcr.io/panther-labs/mcp-panther
設定が必要な環境変数
PANTHER_INSTANCE_URL
PANTHER_API_TOKENシークレット

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/panther-labs/mcp-panther

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Panther MCP Server

Ruff

Panther の Model Context Protocol(MCP)サーバーでは、次の機能を利用できます。

  1. IDE から検知ルールを作成・調整する
  2. 自然言語を使ってセキュリティログを対話的に検索する
  3. 1 件以上のアラートをトリアージし、コメントを追加して解決する
Panther Server MCP server

利用可能なツール

アラート
ツール名説明プロンプトの例
add_alert_commentPanther のアラートにコメントを追加します"アラート abc123 にコメント 'かなり深刻そうです' を追加して"
start_ai_alert_triagePanther のアラートに対し、洞察と推奨事項を提示する 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_assignee1 件以上のアラートの担当者を更新します"アラート abc123 と def456 を John に割り当てて"
update_alert_status1 件以上のアラートのステータスを更新します"アラート abc123 と def456 を解決済みにして"
list_alert_comments特定のアラートのコメントをすべて一覧表示します"アラート abc123 のコメントをすべて表示して"
データレイク
ツール名説明プロンプトの例
query_data_lakePanther のデータレイクに対して SQL クエリを実行し、同期的に結果を返します"過去 1 日のログイン失敗について AWS CloudTrail のログを検索して"
get_table_schema特定のテーブルのスキーマ情報を取得します"AWS_CLOUDTRAIL テーブルのスキーマを表示して"
list_databasesPanther で利用可能なデータレイクのデータベースをすべて一覧表示します"利用可能なデータベースをすべて一覧表示して"
list_database_tablesPanther のデータレイクにある特定のデータベースのテーブルをすべて一覧表示します"panther_logs データベースにはどんなテーブルがある?"
get_alert_event_stats複数のアラートのイベントデータを集約し、時間ベースの統計情報を使ってパターンや関連性を分析します"アラート abc123 と def456 のイベントにどんなパターンがあるか表示して"
スケジュール済みクエリ
ツール名説明プロンプトの例
list_scheduled_queriesページネーションに対応し、スケジュール済みクエリをすべて一覧表示します"スケジュール済みクエリをすべて表示して" / "最初の 25 件のスケジュール済みクエリを一覧表示して"
get_scheduled_queryID を指定して、特定のスケジュール済みクエリの詳細情報を取得します"スケジュール済みクエリ 'weekly-security-report' の詳細を取得して"
ソース | ツール名 | 説明 | プロンプトの例 | |-----------|-------------|---------------| | `list_log_sources` | オプションのフィルター(健全性ステータス、ログタイプ、インテグレーションタイプ)を指定してログソースを一覧表示します | 「健全な S3 ログソースをすべて表示してください」 | | `get_http_log_source` | ID を指定して、特定の HTTP ログソースの詳細情報を取得します | 「HTTP ソース『webhook-collector-123』の設定を表示してください」 |
検出
ツール名説明プロンプトの例
list_detectionsPanther の検出を、包括的なフィルタリング機能を使って一覧表示します。複数の検出タイプに対応し、名前、状態、重大度、タグ、ログタイプ、リソースタイプ、出力 ID(送信先)などでフィルタリングできます。各検出について、設定済みのアラート送信先を示す outputIDs を返します「タグ『AWS』が付いた、有効で重大度が HIGH のルールをすべて表示してください」/「S3 リソース向けの無効なポリシーを一覧表示してください」/「outputID『prod-slack』のルールをすべて検索してください」/「本番環境の送信先にアラートを送る検出を表示してください」
get_detection検出本体とテストを含む、特定の検出の詳細情報を取得します。次のいずれか 1 つの検出タイプを含むリストを受け付けます:["rules"]、["scheduled_rules"]、["simple_rules"]、または ["policies"]「ルール ID abc123 の詳細を取得してください」/「ポリシー ID AWS.S3.Bucket.PublicReadACP の詳細を取得してください」
disable_detectionenabled を false に設定して、検出を無効にします。rules、scheduled_rules、simple_rules、policies に対応しています「ルール 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重大度ごとにグループ化したアラートのメトリクスを取得します「過去 1 週間の重大度別アラート数を表示してください」
get_bytes_processed_metricsログタイプとソースごとのデータ取り込みメトリクスを取得します「ログタイプごとのデータ取り込み量を表示してください」
ユーザーとアクセス管理 | ツール名 | 説明 | プロンプトの例 | |-----------|-------------|---------------| | `list_users` | ページネーションに対応して、Panther のすべてのユーザーアカウントを一覧表示します | 「有効な Panther ユーザーをすべて表示して」/「最初の 25 人のユーザーを一覧表示して」 | | `get_user` | 特定のユーザーの詳細情報を取得します | 「ユーザー ID '' の詳細を取得して」 | | `get_permissions` | 現在のユーザーの権限を取得します | 「自分にはどのような権限がありますか?」 | | `list_roles` | フィルタリングオプション(名前検索、ロール ID、並べ替え順)を使って、すべてのロールを一覧表示します | 「名前に 'Admin' を含むロールをすべて表示して」 | | `get_role` | 権限を含む、特定のロールの詳細情報を取得します | 「'Admin' ロールの詳細をすべて取得して」 |

Panther の設定

以下の手順に沿って、API 認証情報と環境を設定してください。

  1. Panther で API トークンを作成します。

    • Settings(歯車アイコン)→ API Tokens に移動します

    • 次の権限を設定して新しいトークンを作成します(まずは読み取り専用の設定を推奨します)。

    • 必要な権限を表示

      Panther トークンの権限のスクリーンショット Panther トークンの権限のスクリーンショット

  2. 生成されたトークンを安全に保管します(例:1Password)。

  3. ブラウザーから Panther インスタンスの URL をコピーします(例:https://YOUR-PANTHER-INSTANCE.domain)。

    • 注:https:// を必ず含めてください。

MCP サーバーのインストール

次のインストール方法から 1 つ選択してください。

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"

利用可能なタグはGitHub Container Registryで確認できます。

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"
      }
    }
  }
}

**バージョンの固定:**本番環境で安定して使用するには、特定のバージョンを指定してください。

"args": ["mcp-panther==2.2.0"]

利用可能なバージョンはPyPIで確認できます。

MCP クライアントの設定

Cursor

こちらの手順に従って、プロジェクトまたはグローバルの MCP 設定を行ってください。このファイルをバージョン管理に含めないことが非常に重要です。

設定後、Cursor Settings > MCP に移動すると、実行中のサーバーを確認できます。

Cursor の MCP 設定のスクリーンショット

ヒント:

  • @ 記号を使ってから特定のディレクトリを入力し、新しいルールを生成する場所を具体的に指定してください。
  • ツールの使用時に信頼性を高めるには、Claude 3.7 Sonnet などの特定のモデルを選択してみてください。
  • MCP クライアントで Panther MCP サーバーのツールが見つからない場合は、クライアントを再起動し、MCP サーバーが実行中であることを確認してください。Cursor では、MCP サーバーを更新して新しいチャットを開始してください。
Claude Code

Claude Codeは 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 で使用するには、claude_desktop_config.json を手動で設定します。

  1. Claude Desktop の設定を開き、Developer タブに移動します。
  2. 「Edit Config」をクリックして設定ファイルを開きます。
  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

Block のオープンソース AI エージェントである Goose CLIで使用します。

# Start Goose with the MCP server
goose session --with-extension "uvx mcp-panther"
Goose Desktop

Block のオープンソース AI エージェントである Goose Desktop で使用できます。

「Extensions」→「Add custom extension」から設定情報を入力します。

README の画像

サーバーの実行

MCP Panther サーバーは複数のトランスポートプロトコルに対応しています。

STDIO(デフォルト)

ローカル開発および MCP クライアントとの連携に使用します。

uv run python -m mcp_panther.server
Streamable HTTP

永続的なウェブサービスとして実行するには、HTTP トランスポートを使用します。次の用途に適しています。

  • 長時間実行するサーバーのデプロイ
  • 複数のクライアントによる同一サーバーへの接続
  • ログを継続的に監視しながらのテストとデバッグ
Docker Run を使う(デタッチモード)
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 Code を HTTP サーバーに接続する

重要: サーバーは HTTP(HTTPS ではありません)で実行されます。http:// URL を使って Claude Code を設定してください。

# 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())
Streamable 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 <container-id>

# 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 で接続しようとしている
  • 設定で https:// ではなく http:// を使用していることを確認する
  • claude mcp list を実行して確認する
環境変数
  • MCP_TRANSPORT:トランスポートタイプを設定します(stdio または streamable-http)
  • MCP_PORT:HTTP トランスポートのポート(デフォルト:3000)
  • MCP_HOST:HTTP トランスポートのホスト(デフォルト:127.0.0.1)
  • MCP_LOG_FILE:ログファイルのパス(任意)
  • MCP_MAX_RESULT_SIZE_CHARS:すべてのツールで _meta["anthropic/maxResultSizeChars"] を通知します。これにより、Claude Code はこの文字数までのテキスト結果をファイルに保存せず、インラインで返します(任意。Claude Code が受け付ける上限は 500,000 です)。

セキュリティのベストプラクティス

以下の MCP セキュリティのベストプラクティスを強く推奨します。

  • Panther API トークンには厳格な最小権限を適用してください。 トークンの権限を必要最小限に制限し、IP 許可リストまたは CIDR 範囲に紐づけることで、流出した場合にも悪用されないようにしてください。推奨する間隔で認証情報をローテーションしてください(例:30 日ごと)。
  • 読み取り専用マウントを使用し、ロックダウンされたサンドボックス(例:Docker)で MCP サーバーをホストしてください。 これにより、侵害が発生した場合の影響範囲を最小限に抑えられます。
  • 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. 問題を報告する: バグや機能のリクエストがあれば、issue を作成してください
  2. プルリクエストを送信する: リポジトリをフォークし、バグ修正や新機能の PR を送信してください
  3. ドキュメントを改善する: ドキュメントをより明確で充実したものにするため、ご協力ください
  4. ユースケースを共有する: MCP-Panther の使用方法や、改善に役立つアイデアをお知らせください

コントリビューションがコーディング規約に従い、適切なテストとドキュメントを含んでいることを確認してください。

コントリビューター

このプロジェクトは、貢献してくださったすべての方々のおかげで成り立っています。Block の Tomasz Tchorz 氏と Glenn Edwards 氏には、Panther と共同でオープンソースの取り組みとして MCP-Panther を立ち上げるうえで中心的な役割を果たしていただき、特に感謝いたします。

コントリビューターの完全な一覧は、CONTRIBUTORS.md をご覧ください。

ライセンス

このプロジェクトは Apache License 2.0 の下でライセンスされています。詳細は LICENSE ファイルをご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。