Panther
Interaja com a plataforma de segurança Panther para escrever detecções, consultar logs em linguagem natural e gerenciar alertas.
Documentação
Servidor MCP Panther
O servidor Model Context Protocol (MCP) do Panther fornece funcionalidades para:
- Escrever e ajustar detecções a partir do seu IDE
- Consultar interativamente logs de segurança usando linguagem natural
- Triar, comentar e resolver um ou vários alertas
Ferramentas Disponíveis
Alertas
| Nome da Ferramenta | Descrição | Exemplo de Prompt |
|---|---|---|
add_alert_comment | Adicionar um comentário a um alerta do Panther | "Adicionar comentário 'Parece muito ruim' ao alerta abc123" |
start_ai_alert_triage | Iniciar uma análise de triagem com IA para um alerta do Panther, com insights e recomendações inteligentes | "Iniciar triagem de IA para o alerta abc123" / "Gerar uma análise detalhada de IA do alerta def456" |
get_ai_alert_triage_summary | Recuperar o resumo de triagem de IA mais recente gerado anteriormente para um alerta específico | "Obter o resumo de triagem de IA para o alerta abc123" / "Mostre-me a análise de IA para o alerta def456" |
get_alert | Obter informações detalhadas sobre um alerta específico | "Qual é o status do alerta 8def456?" |
get_alert_events | Obter uma pequena amostra de eventos para um determinado alerta | "Mostre-me eventos associados ao alerta 8def456" |
list_alerts | Listar alertas com opções abrangentes de filtragem (intervalo de datas, gravidade, status, etc.) | "Mostre-me todos os alertas de alta gravidade das últimas 24 horas" |
bulk_update_alerts | Atualizar em massa vários alertas com alterações de status, responsável e/ou comentário | "Atualize os alertas abc123, def456 e ghi789 para o status resolvido e adicione o comentário 'Corrigido'" |
update_alert_assignee | Atualizar o responsável de um ou mais alertas | "Atribua os alertas abc123 e def456 a John" |
update_alert_status | Atualizar o status de um ou mais alertas | "Marque os alertas abc123 e def456 como resolvidos" |
list_alert_comments | Listar todos os comentários de um alerta específico | "Mostre-me todos os comentários para o alerta abc123" |
Data Lake
| Nome da Ferramenta | Descrição | Exemplo de Prompt |
|---|---|---|
query_data_lake | Executar consultas SQL no data lake do Panther com resultados síncronos | "Consultar logs do AWS CloudTrail para tentativas de login falhas no último dia" |
get_table_schema | Obter informações de esquema para uma tabela específica | "Mostre-me o esquema da tabela AWS_CLOUDTRAIL" |
list_databases | Listar todos os bancos de dados disponíveis no data lake do Panther | "Listar todos os bancos de dados disponíveis" |
list_database_tables | Listar todas as tabelas disponíveis para um banco de dados específico no data lake do Panther | "Quais tabelas estão no banco de dados panther_logs" |
get_alert_event_stats | Analisar padrões e relacionamentos entre vários alertas agregando seus dados de eventos em estatísticas baseadas em tempo | "Mostre-me padrões em eventos dos alertas abc123 e def456" |
Consultas Agendadas
| Nome da Ferramenta | Descrição | Exemplo de Prompt |
|---|---|---|
list_scheduled_queries | Listar todas as consultas agendadas com suporte a paginação | "Mostre-me todas as consultas agendadas" / "Liste as primeiras 25 consultas agendadas" |
get_scheduled_query | Obter informações detalhadas sobre uma consulta agendada específica por ID | "Obter detalhes da consulta agendada 'weekly-security-report'" |
Fontes
| Nome da Ferramenta | Descrição | Exemplo de Prompt |
|---|---|---|
list_log_sources | Listar fontes de log com filtros opcionais (status de saúde, tipos de log, tipo de integração) | "Mostre-me todas as fontes de log S3 saudáveis" |
get_http_log_source | Obter informações detalhadas sobre uma fonte de log HTTP específica por ID | "Mostre-me a configuração da fonte HTTP 'webhook-collector-123'" |
Detecções
| Nome da Ferramenta | Descrição | Exemplo de Prompt |
|---|---|---|
list_detections | Listar detecções do Panther com suporte abrangente a filtros. Suporta múltiplos tipos de detecção e filtragem por nome, estado, gravidade, tags, tipos de log, tipos de recurso, IDs de saída (destinos) e mais. Retorna outputIDs para cada detecção mostrando os destinos de alerta configurados | "Mostre-me todas as regras habilitadas de alta gravidade com a tag 'AWS'" / "Liste políticas desabilitadas para recursos S3" / "Encontre todas as regras com outputID 'prod-slack'" / "Mostre-me detecções que alertam para destinos de produção" |
get_detection | Obter informações detalhadas sobre uma detecção específica, incluindo o corpo da detecção e testes. Aceita uma lista com um tipo de detecção: ["rules"], ["scheduled_rules"], ["simple_rules"] ou ["policies"] | "Obter detalhes da regra ID abc123" / "Obter detalhes da política ID AWS.S3.Bucket.PublicReadACP" |
disable_detection | Desabilitar uma detecção definindo enabled como false. Suporta rules, scheduled_rules, simple_rules e policies | "Desabilitar regra abc123" / "Desabilitar política AWS.S3.Bucket.PublicReadACP" |
Auxiliares Globais
| Nome da Ferramenta | Descrição | Exemplo de Prompt |
|---|---|---|
list_global_helpers | Listar funções auxiliares globais com opções abrangentes de filtragem (busca por nome, criador, modificador) | "Mostre-me auxiliares globais contendo 'aws' no nome" |
get_global_helper | Obter informações detalhadas e o código Python completo para um auxiliar global específico | "Obter o código completo do auxiliar global 'AWSUtilities'" |
Modelos de Dados
| Nome da Ferramenta | Descrição | Exemplo de Prompt |
|---|---|---|
list_data_models | Listar modelos de dados que controlam mapeamentos UDM em regras | "Mostre-me todos os modelos de dados para análise de logs" |
get_data_model | Obter informações detalhadas sobre um modelo de dados específico | "Obter os detalhes completos do modelo de dados 'AWS_CloudTrail'" |
Esquemas
| Nome da Ferramenta | Descrição | Exemplo de Prompt |
|---|---|---|
list_log_type_schemas | Listar esquemas de tipos de log disponíveis com filtros opcionais | "Mostre-me todos os esquemas relacionados à AWS" |
get_log_type_schema_details | Obter informações detalhadas para esquemas de tipos de log específicos | "Obter detalhes completos do esquema AWS.CloudTrail" |
Métricas
| Nome da Ferramenta | Descrição | Exemplo de Prompt |
|---|---|---|
get_rule_alert_metrics | Obter métricas sobre alertas agrupados por regra | "Mostre as 10 principais regras por contagem de alertas" |
get_severity_alert_metrics | Obter métricas sobre alertas agrupados por gravidade | "Mostre contagens de alertas por gravidade na última semana" |
get_bytes_processed_metrics | Obter métricas de ingestão de dados por tipo de log e fonte | "Mostre-me o volume de ingestão de dados por tipo de log" |
Usuários e Gerenciamento de Acesso
| Nome da Ferramenta | Descrição | Exemplo de Prompt |
|---|---|---|
list_users | Listar todas as contas de usuário do Panther com suporte a paginação | "Mostre-me todos os usuários ativos do Panther" / "Liste os primeiros 25 usuários" |
get_user | Obter informações detalhadas sobre um usuário específico | "Obter detalhes do usuário ID 'john.doe@company.com'" |
get_permissions | Obter as permissões do usuário atual | "Quais permissões eu tenho?" |
list_roles | Listar todos os papéis com opções de filtragem (busca por nome, IDs de papel, direção de ordenação) | "Mostre-me todos os papéis contendo 'Admin' no nome" |
get_role | Obter informações detalhadas sobre um papel específico, incluindo permissões | "Obter detalhes completos do papel 'Admin'" |
Configuração do Panther
Siga estas etapas para configurar suas credenciais de API e ambiente.
-
Crie um token de API no Panther:
-
Navegue até Configurações (ícone de engrenagem) → Tokens de API
-
Crie um novo token com as seguintes permissões (abordagem somente leitura recomendada para começar):
-
Ver Permissões Necessárias

-
-
Armazene o token gerado com segurança (ex.: 1Password)
-
Copie a URL da instância do Panther do seu navegador (ex.:
https://YOUR-PANTHER-INSTANCE.domain)- Nota: Isso deve incluir
https://
- Nota: Isso deve incluir
Instalação do Servidor MCP
Escolha um dos seguintes métodos de instalação:
Docker (Recomendado)
A maneira mais fácil de começar é usando nossa imagem Docker pré-construída:
{
"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"
}
}
}
}
Fixação de versão: Para estabilidade em produção, fixe uma tag de versão específica:
"ghcr.io/panther-labs/mcp-panther:v2.2.0"
As tags disponíveis podem ser encontradas no Registro de Contêineres do GitHub.
UVX
Para usuários de Python, você pode executar diretamente do PyPI usando uvx:
-
Configure seu cliente 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"
}
}
}
}
Fixação de versão: Para estabilidade em produção, fixe uma versão específica:
"args": ["mcp-panther==2.2.0"]
As versões disponíveis podem ser encontradas no PyPI.
Configuração do Cliente MCP
Cursor
Siga as instruções aqui para configurar seu projeto ou a configuração global do MCP. É MUITO IMPORTANTE que você não inclua este arquivo no controle de versão.
Depois de configurado, navegue até Configurações do Cursor > MCP para ver o servidor em execução:
Dicas:
- Seja específico sobre onde deseja gerar novas regras usando o símbolo
@e digitando um diretório específico. - Para mais confiabilidade durante o uso da ferramenta, tente selecionar um modelo específico, como Claude 3.7 Sonnet.
- Se o seu Cliente MCP não estiver encontrando ferramentas do Servidor MCP Panther, tente reiniciar o Cliente e garantir que o servidor MCP esteja em execução. No Cursor, atualize o Servidor MCP e inicie um novo chat.
Claude Code
Claude Code é a ferramenta CLI oficial da Anthropic. Adicione o servidor MCP Panther usando Docker:
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"
}
}'
Alternativamente, usando 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"
}
}'
Após adicionar, verifique se o servidor está configurado:
claude mcp list
Claude Desktop
Para usar com o Claude Desktop, configure manualmente seu claude_desktop_config.json:
- Abra as configurações do Claude Desktop e navegue até a aba Desenvolvedor
- Clique em "Editar Config" para abrir o arquivo de configuração
- Adicione a seguinte configuração:
{
"mcpServers": {
"mcp-panther": {
"command": "uvx",
"args": ["mcp-panther"],
"env": {
"PANTHER_INSTANCE_URL": "https://YOUR-PANTHER-INSTANCE.domain",
"PANTHER_API_TOKEN": "YOUR-PANTHER-API-TOKEN"
}
}
}
}
- Salve o arquivo e reinicie o Claude Desktop
Se você encontrar algum problema, tente as etapas de solução de problemas aqui.
Goose CLI
Use com Goose CLI, o agente de IA de código aberto da Block:
# Start Goose with the MCP server
goose session --with-extension "uvx mcp-panther"
Goose Desktop
Use com Goose Desktop, o agente de IA de código aberto da Block:
Em 'Extensões' -> 'Adicionar extensão personalizada', forneça suas informações de configuração.
Executando o Servidor
O servidor MCP Panther suporta múltiplos protocolos de transporte:
STDIO (Padrão)
Para desenvolvimento local e integração com cliente MCP:
uv run python -m mcp_panther.server
HTTP Transmissível
Para executar como um serviço web persistente, use o transporte HTTP. Isso é ideal para:
- Implantações de servidor de longa duração
- Múltiplos clientes conectando-se ao mesmo servidor
- Testes e depuração com monitoramento contínuo de logs
Usando Docker Run (Desanexado)
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
Usando Docker Compose (Recomendado)
Crie um arquivo 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
Inicie o servidor:
# Start in detached mode
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the server
docker-compose down
Conectando o Claude Code ao Servidor HTTP
Importante: O servidor roda em HTTP (não HTTPS). Configure o Claude Code com a URL 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
Testando a Conexão
# 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
Você também pode testar usando o cliente 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())
Solução de Problemas do Streamable HTTP
Porta Já em Uso
Se você vir 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
Avisos de Solicitação HTTP Inválida
Se você vir WARNING: Invalid HTTP request received nos logs, isso geralmente significa:
- O Claude Code está tentando conectar via HTTPS em vez de HTTP
- Verifique se sua configuração usa
http://e nãohttps:// - Verifique com:
claude mcp list
Variáveis de Ambiente
MCP_TRANSPORT: Define o tipo de transporte (stdiooustreamable-http)MCP_PORT: Porta para transporte HTTP (padrão: 3000)MCP_HOST: Host para transporte HTTP (padrão: 127.0.0.1)MCP_LOG_FILE: Caminho do arquivo de log (opcional)
Boas Práticas de Segurança
Recomendamos fortemente as seguintes boas práticas de segurança do MCP:
- Aplique privilégio mínimo estrito aos tokens da API do Panther. Escope os tokens às permissões mínimas necessárias e vincule-os a uma lista de permissões de IP ou intervalo CIDR para que sejam inúteis se exfiltrados. Gire as credenciais em um intervalo preferido (por exemplo, a cada 30 dias).
- Hospede o servidor MCP em uma sandbox restrita (por exemplo, Docker) com montagens somente leitura. Isso confina qualquer comprometimento a um raio de explosão mínimo.
- Monitore o acesso de credenciais ao Panther e monitore anomalias. Escreva uma regra do Panther!
- Execute apenas servidores MCP confiáveis e oficialmente assinados. Verifique assinaturas digitais ou checksums antes de executar, audite o código das ferramentas e evite ferramentas da comunidade de editores não oficiais.
Solução de Problemas
Verifique os logs do servidor para mensagens de erro detalhadas: tail -n 20 -F ~/Library/Logs/Claude/mcp*.log. Problemas comuns e soluções estão listados abaixo.
Executando ferramentas
- Se você receber um erro
{"success": false, "message": "Failed to [action]: Request failed (HTTP 403): {\"error\": \"forbidden\"}"}, provavelmente significa que seu token de API não possui a permissão específica necessária para a ferramenta. - Certifique-se de que a URL da sua instância do Panther esteja configurada corretamente. Você pode visualizá-la no recurso
config://pantherdo seu Cliente MCP.
Contribuindo
Aceitamos contribuições para melhorar o MCP-Panther! Veja como você pode ajudar:
- Relate Problemas: Abra uma issue para quaisquer bugs ou solicitações de recursos
- Envie Pull Requests: Faça um fork do repositório e envie PRs para correções de bugs ou novos recursos
- Melhore a Documentação: Ajude-nos a tornar a documentação mais clara e abrangente
- Compartilhe Casos de Uso: Conte-nos como você está usando o MCP-Panther e o que poderia torná-lo melhor
Certifique-se de que suas contribuições sigam nossos padrões de codificação e incluam testes e documentação adequados.
Contribuidores
Este projeto existe graças a todas as pessoas que contribuem. Agradecimentos especiais a Tomasz Tchorz e Glenn Edwards da Block, que desempenharam um papel fundamental no lançamento do MCP-Panther como um esforço conjunto de código aberto com a Panther.
Consulte nosso CONTRIBUTORS.md para uma lista completa de contribuidores.
Licença
Este projeto é licenciado sob a Apache License 2.0 - consulte o arquivo LICENSE para obter detalhes.