Meraki Magic MCP

Um servidor MCP baseado em Python para o Cisco Meraki Dashboard, fornecendo ferramentas para consultar a API para descobrir, monitorar e gerenciar seu ambiente Meraki.

Documentação

Meraki Magic MCP

Meraki Magic é um servidor MCP (Model Context Protocol) baseado em Python para o Cisco Meraki Dashboard. O Meraki Magic fornece ferramentas para consultar a API do Meraki Dashboard para descobrir, monitorar e gerenciar seu ambiente Meraki.

Duas Versões Disponíveis

🚀 MCP Dinâmico (Recomendado) - meraki-mcp-dynamic.py

  • ~804 endpoints de API expostos automaticamente
  • 100% de cobertura do SDK - todos os métodos da API Meraki disponíveis
  • Atualizações automáticas quando você atualiza o SDK Meraki
  • Nenhuma codificação manual necessária para novos endpoints

📋 MCP Manual - meraki-mcp.py

  • 40 endpoints selecionados com esquemas detalhados
  • Type-safe com validação Pydantic
  • Lógica de negócios personalizada para casos de uso específicos
  • Documentação limpa para operações comuns

Recursos

O MCP Dinâmico inclui:

  • Todo o gerenciamento da organização (administradores, redes, dispositivos, inventário, licenciamento)
  • Gerenciamento completo de wireless (SSIDs, perfis RF, Air Marshal, análises)
  • Gerenciamento completo de switches (portas, VLANs, stacks, QoS, políticas de acesso)
  • Segurança/appliances avançados (todos os tipos de firewall, NAT, VPN, modelagem de tráfego)
  • Gerenciamento de câmeras (análises, qualidade, agendamentos, permissões)
  • Monitoramento de rede (eventos, alertas, saúde, desempenho)
  • Ferramentas de solução de problemas ao vivo (ping, teste de cabo, tabela ARP)
  • Webhooks e automação (perfis de alerta, lotes de ações)
  • E mais de 700 outros endpoints...

O MCP Manual inclui:

  • Descoberta e gerenciamento de redes
  • Descoberta e configuração de dispositivos
  • Descoberta de clientes e gerenciamento de políticas
  • Gerenciamento de SSIDs wireless
  • Configuração de portas de switch e VLANs
  • Regras básicas de firewall
  • Configurações de câmera

Instalação Rápida

Pré-requisitos

  • Python 3.13+
  • Claude Desktop (ou qualquer cliente compatível com MCP)
  • Chave da API do Meraki Dashboard
  • ID da Organização Meraki

Caminho Rápido

macOS:

git clone https://github.com/CiscoDevNet/meraki-magic-mcp-community.git
cd meraki-magic-mcp-community
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# Set credentials in the MCP client env block (see Configuration)

Windows (PowerShell):

git clone https://github.com/CiscoDevNet/meraki-magic-mcp-community.git
cd meraki-magic-mcp-community
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
# Set credentials in the MCP client env block (see Configuration)

📖 Para instruções detalhadas passo a passo, consulte INSTALL.md

Configuração

O servidor lê as credenciais do ambiente do processo. Não crie um arquivo de projeto .env.

Para Claude Desktop / Cursor (stdio), coloque-os no bloco env da configuração do cliente:

"env": {
  "MERAKI_API_KEY": "your_api_key_here",
  "MERAKI_ORG_ID": "your_org_id_here",
  "MERAKI_BASE_URL": "https://api.meraki.com/api/v1",
  "MERAKI_PYTHON_SDK_CALLER": "MagicMCP CiscoDevNet",
  "READ_ONLY_MODE": "true"
}

Para CLI, HTTP ou Docker, exporte as mesmas variáveis no seu shell:

export MERAKI_API_KEY="your_api_key_here"
export MERAKI_ORG_ID="your_org_id_here"
export MERAKI_BASE_URL="https://api.meraki.com/api/v1"
export MERAKI_PYTHON_SDK_CALLER="MagicMCP CiscoDevNet"
export READ_ONLY_MODE=true

Ajustes opcionais: ENABLE_CACHING, CACHE_TTL_SECONDS, ENABLE_FILE_CACHING, MAX_RESPONSE_TOKENS, MAX_PER_PAGE, RESPONSE_CACHE_DIR.

Obtenha sua chave de API em: Meraki Dashboard → Organization → Settings → Dashboard API access

READ_ONLY_MODE tem como padrão true para bloquear operações de criar/atualizar/deletar/remover. Defina READ_ONLY_MODE=false somente quando pretender fazer alterações. Chamadas de deletar/remover também exigem confirm_destructive_action=true.

Use MERAKI_BASE_URL para apontar o servidor MCP para outra região Meraki ou URI base compatível com a API do Dashboard.

As chamadas de API identificam este servidor com o chamador padrão MagicMCP CiscoDevNet. Defina MERAKI_PYTHON_SDK_CALLER no bloco env do cliente MCP ou no ambiente do processo para usar seu próprio identificador de aplicativo e fornecedor. Siga o formato de user agent Meraki.

Opções de Implantação

Existem três maneiras de implantar o Meraki Magic MCP:

MétodoMelhor ParaTransporte
Local (stdio)Claude Desktop / Cursor na mesma máquinastdio
Servidor HTTPAcesso remoto, servidor de equipe compartilhadoStreamableHTTP
DockerImplantações conteinerizadas / produçãoStreamableHTTP

Configuração do Claude Desktop

MCP Dinâmico (Recomendado)

  1. Localize o arquivo de configuração do Claude:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. Edite a configuração com seus caminhos:

Exemplo macOS:

{
  "mcpServers": {
    "Meraki_Magic_MCP": {
      "command": "/path/to/meraki-magic-mcp-community/.venv/bin/fastmcp",
      "args": [
        "run",
        "-t", "stdio",
        "/path/to/meraki-magic-mcp-community/meraki-mcp-dynamic.py"
      ],
      "env": {
        "MERAKI_API_KEY": "your_api_key_here",
        "MERAKI_ORG_ID": "your_org_id_here",
        "MERAKI_BASE_URL": "https://api.meraki.com/api/v1",
        "MERAKI_PYTHON_SDK_CALLER": "MagicMCP CiscoDevNet",
        "READ_ONLY_MODE": "true"
      }
    }
  }
}

Exemplo Windows:

{
  "mcpServers": {
    "Meraki_Magic_MCP": {
      "command": "C:/Users/YourName/meraki-magic-mcp-community/.venv/Scripts/fastmcp.exe",
      "args": [
        "run",
        "-t", "stdio",
        "C:/Users/YourName/meraki-magic-mcp-community/meraki-mcp-dynamic.py"
      ],
      "env": {
        "MERAKI_API_KEY": "your_api_key_here",
        "MERAKI_ORG_ID": "your_org_id_here",
        "MERAKI_BASE_URL": "https://api.meraki.com/api/v1",
        "MERAKI_PYTHON_SDK_CALLER": "MagicMCP CiscoDevNet",
        "READ_ONLY_MODE": "true"
      }
    }
  }
}

Substitua /path/to/ pelo seu caminho de instalação real. Usuários Windows: use barras normais / e inclua .exe.

  1. Reinicie o Claude Desktop (Saia completamente e reabra)

  2. Verifique: Pergunte ao Claude "Quais servidores MCP estão disponíveis?"

📖 Instruções detalhadas de configuração: INSTALL.md

MCP Manual (Original)

Use meraki-mcp.py em vez de meraki-mcp-dynamic.py na configuração acima.

Ambos os MCPs (Avançado)

Você pode executar ambos simultaneamente:

{
  "mcpServers": {
    "Meraki_Curated": {
      "command": "/path/to/meraki-magic-mcp-community/.venv/bin/fastmcp",
      "args": ["run", "-t", "stdio", "/path/to/meraki-magic-mcp-community/meraki-mcp.py"],
      "env": {
        "MERAKI_API_KEY": "your_api_key_here",
        "MERAKI_ORG_ID": "your_org_id_here",
        "READ_ONLY_MODE": "true"
      }
    },
    "Meraki_Full_API": {
      "command": "/path/to/meraki-magic-mcp-community/.venv/bin/fastmcp",
      "args": ["run", "-t", "stdio", "/path/to/meraki-magic-mcp-community/meraki-mcp-dynamic.py"],
      "env": {
        "MERAKI_API_KEY": "your_api_key_here",
        "MERAKI_ORG_ID": "your_org_id_here",
        "READ_ONLY_MODE": "true"
      }
    }
  }
}

Transporte HTTP

Execute o servidor MCP via HTTP para acesso remoto ou uso compartilhado pela equipe:

export MERAKI_API_KEY="your_api_key_here"
export MERAKI_ORG_ID="your_org_id_here"
export MCP_TRANSPORT=http
export MCP_HOST=127.0.0.1  # Use 0.0.0.0 for remote access
export MCP_PORT=8000

python meraki-mcp-dynamic.py
# Server available at http://127.0.0.1:8000/mcp

Conecte o Claude Desktop a um servidor HTTP usando mcp-remote (requer Node.js):

{
  "mcpServers": {
    "Meraki_Magic_MCP": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://127.0.0.1:8000/mcp"]
    }
  }
}

Implantação com Docker

A maneira mais rápida de implantar remotamente:

export MERAKI_API_KEY="your_api_key_here"
export MERAKI_ORG_ID="your_org_id_here"
docker compose up -d
# Server available at http://localhost:8000/mcp

📖 Instruções completas de HTTP e Docker: INSTALL.md

Mantendo-se Atualizado

O MCP dinâmico permanece automaticamente atualizado com a API do Meraki:

# Manually update SDK
pip install --upgrade meraki

Em seguida, reinicie o Claude Desktop. Consulte UPDATE_GUIDE.md para detalhes.

Recursos de Desempenho e Segurança

O MCP dinâmico inclui várias otimizações:

✅ Cache de Respostas - Operações somente leitura armazenadas em cache por 5 minutos (reduz chamadas de API em 50-90%) ✅ Modo Somente Leitura - Modo de segurança opcional que bloqueia operações de escrita ✅ Repetição Automática - Repetição automática em falhas (3 tentativas) ✅ Tratamento de Limite de Taxa - Aguarda automaticamente quando o limite de taxa é atingido ✅ Rotulagem de Operações - Ferramentas rotuladas como [READ], [WRITE] ou [MISC]

Consulte OPTIMIZATIONS.md para detalhes.

Documentação

Como Funciona

O MCP Dinâmico fornece duas maneiras de acessar as APIs Meraki:

  1. Ferramentas pré-registradas (12 operações mais comuns):

    • getOrganizations, getOrganizationAdmins, getOrganizationNetworks
    • getNetworkClients, getNetworkEvents, getDeviceSwitchPorts
    • E mais 6 operações comuns
  2. Chamador de API genérico (call_meraki_api):

    • Acesse TODOS os 804+ métodos da API Meraki
    • Exemplo: call_meraki_api(section="appliance", method="getNetworkApplianceFirewallL3FirewallRules", parameters={"networkId": "L_123"})
    • Métodos destrutivos exigem confirm_destructive_action=true em parameters

Exemplo de Uso

Get all admins in my organization

Show me firewall rules for network "Main Office"

Update switch port 12 on device ABC123 to enable BPDU guard

Get wireless clients from the last hour

Create a new network named "Branch Office"

Suporte

Contribuindo

Contribuições são bem-vindas! Por favor:

  1. Faça um fork do repositório
  2. Crie um branch de funcionalidade
  3. Envie um pull request

Referência de Ferramentas do MCP Manual

As seguintes ferramentas estão disponíveis no MCP manual (meraki-mcp.py). O MCP dinâmico fornece acesso a estas e a mais de 760 endpoints adicionais através da ferramenta genérica call_meraki_api.

Guia de Ferramentas de Rede

Este guia fornece uma visão geral abrangente das ferramentas de rede selecionadas disponíveis no MCP manual, organizadas por categoria e funcionalidade.

Índice

  1. Ferramentas de Gerenciamento de Organização
  2. Ferramentas de Gerenciamento de Rede
  3. Ferramentas de Gerenciamento de Dispositivos
  4. Ferramentas de Gerenciamento Wireless
  5. Ferramentas de Gerenciamento de Switch
  6. Ferramentas de Gerenciamento de Appliance
  7. Ferramentas de Gerenciamento de Câmeras
  8. Ferramentas de Automação de Rede
  9. Ferramentas Avançadas de Monitoramento
  10. Ferramentas de Dispositivos ao Vivo

Ferramentas de Gerenciamento de Organização

Operações Básicas de Organização

  • get_organizations() - Obter uma lista de organizações às quais o usuário tem acesso
  • get_organization_details(org_id) - Obter detalhes de uma organização específica
  • get_organization_status(org_id) - Obter o status e a saúde de uma organização
  • get_organization_inventory(org_id) - Obter o inventário de uma organização
  • get_organization_license(org_id) - Obter o estado de licenciamento de uma organização
  • get_organization_conf_change(org_id) - Obter o estado de alteração da organização

Gerenciamento Avançado de Organização

  • get_organization_admins(org_id) - Obter uma lista de administradores da organização
  • create_organization_admin(org_id, email, name, org_access, tags, networks) - Criar um novo administrador de organização
  • get_organization_api_requests(org_id, timespan) - Obter histórico de solicitações de API da organização
  • get_organization_webhook_logs(org_id, timespan) - Obter logs de webhook da organização

Gerenciamento de Rede

  • get_networks(org_id) - Obter uma lista de redes do Meraki
  • create_network(name, tags, productTypes, org_id, copyFromNetworkId) - Criar uma nova rede
  • delete_network(network_id, confirm_destructive_action) - Excluir uma rede no Meraki
  • get_network_details(network_id) - Obter detalhes de uma rede específica
  • update_network(network_id, update_data) - Atualizar as propriedades de uma rede

Ferramentas de Gerenciamento de Rede

Monitoramento de Rede

  • get_network_events(network_id, timespan, per_page) - Obter histórico de eventos da rede
  • get_network_event_types(network_id) - Obter tipos de eventos de rede disponíveis
  • get_network_alerts_history(network_id, timespan) - Obter histórico de alertas da rede
  • get_network_alerts_settings(network_id) - Obter configurações de alertas da rede
  • update_network_alerts_settings(network_id, defaultDestinations, alerts) - Atualizar configurações de alertas da rede

Gerenciamento de Clientes

  • get_clients(network_id, timespan) - Obter uma lista de clientes de uma rede
  • get_client_details(network_id, client_id) - Obter detalhes de um cliente específico
  • get_client_usage(network_id, client_id) - Obter o histórico de uso de um cliente
  • get_client_policy(network_id, client_id) - Obter a política de um cliente específico
  • update_client_policy(network_id, client_id, device_policy, group_policy_id) - Atualizar a política de um cliente

Tráfego e Análise de Rede

  • get_network_traffic(network_id, timespan) - Obter dados de análise de tráfego de uma rede

Ferramentas de Gerenciamento de Dispositivos

Informações do Dispositivo

  • get_devices(org_id) - Obter uma lista de dispositivos do Meraki
  • get_network_devices(network_id) - Obter uma lista de dispositivos em uma rede específica
  • get_device_details(serial) - Obter detalhes de um dispositivo específico pelo número de série
  • get_device_status(serial) - Obter o status atual de um dispositivo
  • get_device_uplink(serial) - Obter o status de uplink de um dispositivo

Operações de Dispositivo

  • update_device(serial, device_settings) - Atualizar um dispositivo na organização Meraki
  • claim_devices(network_id, serials) - Reivindicar um ou mais dispositivos em uma rede Meraki
  • remove_device(network_id, serial, confirm_destructive_action) - Remover um dispositivo de sua rede
  • reboot_device(serial) - Reiniciar um dispositivo

Monitoramento de Dispositivo

  • get_device_clients(serial, timespan) - Obter clientes conectados a um dispositivo específico

Ferramentas de Dispositivos ao Vivo

Diagnóstico de Rede

  • ping_device(serial, target_ip, count) - Enviar ping de um dispositivo para outro
  • get_device_ping_results(serial, ping_id) - Obter resultados de um teste de ping de dispositivo
  • cable_test_device(serial, ports) - Executar teste de cabo nas portas do dispositivo
  • get_device_cable_test_results(serial, cable_test_id) - Obter resultados de um teste de cabo de dispositivo

Controle de Dispositivo

  • blink_device_leds(serial, duration) - Piscar LEDs do dispositivo para identificação
  • wake_on_lan_device(serial, mac) - Enviar pacote wake-on-LAN para um dispositivo

Ferramentas de Gerenciamento Wireless

Operações Wireless Básicas

  • get_wireless_ssids(network_id) - Obter SSIDs wireless de uma rede
  • update_wireless_ssid(network_id, ssid_number, ssid_settings) - Atualizar um SSID wireless
  • get_wireless_settings(network_id) - Obter configurações wireless de uma rede

Gerenciamento Wireless Avançado

  • get_wireless_rf_profiles(network_id) - Obter perfis RF wireless de uma rede
  • create_wireless_rf_profile(network_id, name, band_selection_type, **kwargs) - Criar um perfil RF wireless
  • get_wireless_channel_utilization(network_id, timespan) - Obter histórico de utilização de canal wireless
  • get_wireless_signal_quality(network_id, timespan) - Obter histórico de qualidade de sinal wireless
  • get_wireless_connection_stats(network_id, timespan) - Obter estatísticas de conexão wireless
  • get_wireless_client_connectivity_events(network_id, client_id, timespan) - Obter eventos de conectividade de clientes wireless

Ferramentas de Gerenciamento de Switch

Operações Básicas de Switch

  • get_switch_ports(serial) - Obter portas de um switch
  • update_switch_port(serial, port_id, name, tags, enabled, vlan) - Atualizar uma porta de switch
  • get_switch_vlans(network_id) - Obter VLANs de uma rede
  • create_switch_vlan(network_id, vlan_id, name, subnet, appliance_ip) - Criar uma VLAN de switch

Gerenciamento Avançado de Switch

  • get_switch_port_statuses(serial) - Obter status das portas do switch
  • cycle_switch_ports(serial, ports) - Ciclar (reiniciar) portas do switch
  • get_switch_access_control_lists(network_id) - Obter listas de controle de acesso do switch
  • update_switch_access_control_lists(network_id, rules) - Atualizar listas de controle de acesso do switch
  • get_switch_qos_rules(network_id) - Obter regras de QoS do switch
  • create_switch_qos_rule(network_id, vlan, protocol, src_port, **kwargs) - Criar uma regra de QoS do switch

Ferramentas de Gerenciamento de Appliance

Operações Básicas de Appliance

  • get_security_center(network_id) - Obter informações de segurança de uma rede
  • get_vpn_status(network_id) - Obter status de VPN de uma rede
  • get_firewall_rules(network_id) - Obter regras de firewall de uma rede
  • update_firewall_rules(network_id, rules) - Atualizar regras de firewall de uma rede

Gerenciamento Avançado de Appliance

  • get_appliance_vpn_site_to_site(network_id) - Obter configuração de VPN site-to-site do appliance
  • update_appliance_vpn_site_to_site(network_id, mode, hubs, subnets) - Atualizar configuração de VPN site-to-site do appliance
  • get_appliance_content_filtering(network_id) - Obter configurações de filtragem de conteúdo do appliance
  • update_appliance_content_filtering(network_id, **kwargs) - Atualizar configurações de filtragem de conteúdo do appliance
  • get_appliance_security_events(network_id, timespan) - Obter eventos de segurança do appliance
  • get_appliance_traffic_shaping(network_id) - Obter configurações de modelagem de tráfego do appliance
  • update_appliance_traffic_shaping(network_id, global_bandwidth_limits) - Atualizar configurações de modelagem de tráfego do appliance

Ferramentas de Gerenciamento de Câmeras

Operações Básicas de Câmera

  • get_camera_video_settings(network_id, serial) - Obter configurações de vídeo de uma câmera
  • get_camera_quality_settings(network_id) - Obter configurações de qualidade e retenção das câmeras

Gerenciamento Avançado de Câmeras

  • get_camera_analytics_live(serial) - Obter análises de câmera ao vivo
  • get_camera_analytics_overview(serial, timespan) - Obter visão geral de análises de câmera
  • get_camera_analytics_zones(serial) - Obter zonas de análises de câmera
  • generate_camera_snapshot(serial, timestamp) - Gerar um snapshot de câmera
  • get_camera_sense(serial) - Obter configuração de sense da câmera
  • update_camera_sense(serial, sense_enabled, mqtt_broker_id, audio_detection) - Atualizar configuração de sense da câmera

Ferramentas de Automação de Rede

Lotes de Ações

  • create_action_batch(org_id, actions, confirmed, synchronous) - Criar um lote de ações para operações em massa
  • get_action_batch_status(org_id, batch_id) - Obter status do lote de ações
  • get_action_batches(org_id) - Obter todos os lotes de ações de uma organização

Definições de Esquemas

O MCP manual inclui esquemas Pydantic abrangentes para validação de dados:

  • SsidUpdateSchema - Configuração de SSID sem fio
  • FirewallRule - Configuração de regras de firewall
  • DeviceUpdateSchema - Parâmetros de atualização de dispositivos
  • NetworkUpdateSchema - Parâmetros de atualização de rede
  • AdminCreationSchema - Parâmetros de criação de administradores
  • ActionBatchSchema - Configuração de lote de ações
  • VpnSiteToSiteSchema - Configuração de VPN site-to-site
  • ContentFilteringSchema - Configurações de filtragem de conteúdo
  • TrafficShapingSchema - Configuração de modelagem de tráfego
  • CameraSenseSchema - Configurações de sense da câmera
  • SwitchQosRuleSchema - Configuração de regras de QoS do switch

Melhores Práticas

  1. Tratamento de Erros: Sempre verifique as respostas da API em busca de erros
  2. Limitação de Taxa: A API do Meraki possui limites de taxa; use atrasos apropriados (ou use MCP dinâmico com cache)
  3. Operações em Lote: Use lotes de ações para operações em massa
  4. Validação: Use os esquemas fornecidos para validação de dados
  5. Monitoramento: Verifique regularmente eventos e alertas de rede
  6. Segurança: Mantenha as chaves de API seguras e rotacione-as regularmente

Solução de Problemas

Problemas Comuns

  1. Erros de Autenticação: Verifique se sua chave de API está correta e possui as permissões adequadas
  2. Limitação de Taxa: Se encontrar limitação de taxa, implemente atrasos entre as solicitações (ou use MCP dinâmico com cache)
  3. Rede Não Encontrada: Certifique-se de que o ID da rede está correto e acessível
  4. Dispositivo Não Encontrado: Verifique se o número de série do dispositivo está correto e se o dispositivo está online

Informações de Depuração

Ative o registro de depuração definindo o nível de log apropriado no seu ambiente.


⚠️ Aviso Legal

IMPORTANTE: AVISO DE USO EM PRODUÇÃO

Este software é fornecido "COMO ESTÁ", sem garantia de qualquer tipo, expressa ou implícita. Os autores e colaboradores não fazem representações ou garantias quanto à adequação, confiabilidade, disponibilidade, precisão ou integridade deste software para qualquer finalidade.

USE POR SUA CONTA E RISCO: Este servidor MCP foi projetado para fins de desenvolvimento, teste e educacionais. Executar este software em ambientes de produção é feito inteiramente por sua conta e risco. Os autores e colaboradores não são responsáveis por quaisquer danos, perda de dados, interrupções de serviço ou outros problemas que possam surgir do uso deste software em ambientes de produção.

CONSIDERAÇÕES DE SEGURANÇA: Este software requer acesso às suas credenciais da API do Meraki. Certifique-se de que:

  • As chaves de API sejam armazenadas com segurança e não sejam commitadas no controle de versão
  • As chaves de API tenham permissões adequadas e sejam rotacionadas regularmente
  • O acesso à rede esteja devidamente protegido
  • Auditorias de segurança regulares sejam realizadas

SEM GARANTIA: Os autores renunciam a todas as garantias, incluindo, mas não se limitando a, garantias de comercialização, adequação a uma finalidade específica e não violação. Em nenhum caso os autores serão responsáveis por qualquer reclamação, danos ou outra responsabilidade decorrente do uso deste software.

SUPORTE: Este é um projeto de código aberto. Para uso em produção, considere implementar mecanismos adicionais de teste, monitoramento e suporte adequados ao seu ambiente.

Licença

Consulte o arquivo LICENSE para obter detalhes.