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étodo | Melhor Para | Transporte |
|---|---|---|
| Local (stdio) | Claude Desktop / Cursor na mesma máquina | stdio |
| Servidor HTTP | Acesso remoto, servidor de equipe compartilhado | StreamableHTTP |
| Docker | Implantações conteinerizadas / produção | StreamableHTTP |
Configuração do Claude Desktop
MCP Dinâmico (Recomendado)
-
Localize o arquivo de configuração do Claude:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
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.
-
Reinicie o Claude Desktop (Saia completamente e reabra)
-
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
- INSTALL.md - Guia de instalação detalhado (macOS e Windows)
- QUICKSTART.md - Comece rapidamente com exemplos
- README-DYNAMIC.md - Detalhes técnicos do MCP dinâmico
- COMPARISON.md - Compare abordagens manual vs dinâmica
- UPDATE_GUIDE.md - Mantenha seu MCP atualizado com as APIs mais recentes
- OPTIMIZATIONS.md - Recursos de desempenho e segurança
Como Funciona
O MCP Dinâmico fornece duas maneiras de acessar as APIs Meraki:
-
Ferramentas pré-registradas (12 operações mais comuns):
getOrganizations,getOrganizationAdmins,getOrganizationNetworksgetNetworkClients,getNetworkEvents,getDeviceSwitchPorts- E mais 6 operações comuns
-
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=trueemparameters
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
- Problemas: GitHub Issues
- Documentação da API Meraki: developer.cisco.com/meraki/api-v1
- Protocolo MCP: modelcontextprotocol.io
Contribuindo
Contribuições são bem-vindas! Por favor:
- Faça um fork do repositório
- Crie um branch de funcionalidade
- 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
- Ferramentas de Gerenciamento de Organização
- Ferramentas de Gerenciamento de Rede
- Ferramentas de Gerenciamento de Dispositivos
- Ferramentas de Gerenciamento Wireless
- Ferramentas de Gerenciamento de Switch
- Ferramentas de Gerenciamento de Appliance
- Ferramentas de Gerenciamento de Câmeras
- Ferramentas de Automação de Rede
- Ferramentas Avançadas de Monitoramento
- 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 acessoget_organization_details(org_id)- Obter detalhes de uma organização específicaget_organization_status(org_id)- Obter o status e a saúde de uma organizaçãoget_organization_inventory(org_id)- Obter o inventário de uma organizaçãoget_organization_license(org_id)- Obter o estado de licenciamento de uma organizaçãoget_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çãocreate_organization_admin(org_id, email, name, org_access, tags, networks)- Criar um novo administrador de organizaçãoget_organization_api_requests(org_id, timespan)- Obter histórico de solicitações de API da organizaçãoget_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 Merakicreate_network(name, tags, productTypes, org_id, copyFromNetworkId)- Criar uma nova rededelete_network(network_id, confirm_destructive_action)- Excluir uma rede no Merakiget_network_details(network_id)- Obter detalhes de uma rede específicaupdate_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 redeget_network_event_types(network_id)- Obter tipos de eventos de rede disponíveisget_network_alerts_history(network_id, timespan)- Obter histórico de alertas da redeget_network_alerts_settings(network_id)- Obter configurações de alertas da redeupdate_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 redeget_client_details(network_id, client_id)- Obter detalhes de um cliente específicoget_client_usage(network_id, client_id)- Obter o histórico de uso de um clienteget_client_policy(network_id, client_id)- Obter a política de um cliente específicoupdate_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 Merakiget_network_devices(network_id)- Obter uma lista de dispositivos em uma rede específicaget_device_details(serial)- Obter detalhes de um dispositivo específico pelo número de sérieget_device_status(serial)- Obter o status atual de um dispositivoget_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 Merakiclaim_devices(network_id, serials)- Reivindicar um ou mais dispositivos em uma rede Merakiremove_device(network_id, serial, confirm_destructive_action)- Remover um dispositivo de sua redereboot_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 outroget_device_ping_results(serial, ping_id)- Obter resultados de um teste de ping de dispositivocable_test_device(serial, ports)- Executar teste de cabo nas portas do dispositivoget_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çãowake_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 redeupdate_wireless_ssid(network_id, ssid_number, ssid_settings)- Atualizar um SSID wirelessget_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 redecreate_wireless_rf_profile(network_id, name, band_selection_type, **kwargs)- Criar um perfil RF wirelessget_wireless_channel_utilization(network_id, timespan)- Obter histórico de utilização de canal wirelessget_wireless_signal_quality(network_id, timespan)- Obter histórico de qualidade de sinal wirelessget_wireless_connection_stats(network_id, timespan)- Obter estatísticas de conexão wirelessget_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 switchupdate_switch_port(serial, port_id, name, tags, enabled, vlan)- Atualizar uma porta de switchget_switch_vlans(network_id)- Obter VLANs de uma redecreate_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 switchcycle_switch_ports(serial, ports)- Ciclar (reiniciar) portas do switchget_switch_access_control_lists(network_id)- Obter listas de controle de acesso do switchupdate_switch_access_control_lists(network_id, rules)- Atualizar listas de controle de acesso do switchget_switch_qos_rules(network_id)- Obter regras de QoS do switchcreate_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 redeget_vpn_status(network_id)- Obter status de VPN de uma redeget_firewall_rules(network_id)- Obter regras de firewall de uma redeupdate_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 applianceupdate_appliance_vpn_site_to_site(network_id, mode, hubs, subnets)- Atualizar configuração de VPN site-to-site do applianceget_appliance_content_filtering(network_id)- Obter configurações de filtragem de conteúdo do applianceupdate_appliance_content_filtering(network_id, **kwargs)- Atualizar configurações de filtragem de conteúdo do applianceget_appliance_security_events(network_id, timespan)- Obter eventos de segurança do applianceget_appliance_traffic_shaping(network_id)- Obter configurações de modelagem de tráfego do applianceupdate_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âmeraget_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 vivoget_camera_analytics_overview(serial, timespan)- Obter visão geral de análises de câmeraget_camera_analytics_zones(serial)- Obter zonas de análises de câmeragenerate_camera_snapshot(serial, timestamp)- Gerar um snapshot de câmeraget_camera_sense(serial)- Obter configuração de sense da câmeraupdate_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 massaget_action_batch_status(org_id, batch_id)- Obter status do lote de açõesget_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 fioFirewallRule- Configuração de regras de firewallDeviceUpdateSchema- Parâmetros de atualização de dispositivosNetworkUpdateSchema- Parâmetros de atualização de redeAdminCreationSchema- Parâmetros de criação de administradoresActionBatchSchema- Configuração de lote de açõesVpnSiteToSiteSchema- Configuração de VPN site-to-siteContentFilteringSchema- Configurações de filtragem de conteúdoTrafficShapingSchema- Configuração de modelagem de tráfegoCameraSenseSchema- Configurações de sense da câmeraSwitchQosRuleSchema- Configuração de regras de QoS do switch
Melhores Práticas
- Tratamento de Erros: Sempre verifique as respostas da API em busca de erros
- Limitação de Taxa: A API do Meraki possui limites de taxa; use atrasos apropriados (ou use MCP dinâmico com cache)
- Operações em Lote: Use lotes de ações para operações em massa
- Validação: Use os esquemas fornecidos para validação de dados
- Monitoramento: Verifique regularmente eventos e alertas de rede
- Segurança: Mantenha as chaves de API seguras e rotacione-as regularmente
Solução de Problemas
Problemas Comuns
- Erros de Autenticação: Verifique se sua chave de API está correta e possui as permissões adequadas
- Limitação de Taxa: Se encontrar limitação de taxa, implemente atrasos entre as solicitações (ou use MCP dinâmico com cache)
- Rede Não Encontrada: Certifique-se de que o ID da rede está correto e acessível
- 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.