SuzieQ
Interaja com a plataforma de observabilidade de rede SuzieQ via sua API REST.
Documentação
Servidor MCP para SuzieQ
Este projeto fornece um servidor Model Context Protocol (MCP) que permite que modelos de linguagem e outros clientes MCP interajam com uma instância de observabilidade de rede SuzieQ por meio de sua API REST.
Visão Geral
O servidor expõe os comandos do SuzieQ como ferramentas MCP:
run_suzieq_show: Acesse o comando 'show' para consultar tabelas detalhadas de estado da rederun_suzieq_summarize: Acesse o comando 'summarize' para obter estatísticas agregadas e resumos
Essas ferramentas permitem que clientes (como o Claude Desktop) consultem várias tabelas de estado da rede (por exemplo, interfaces, BGP, rotas) e apliquem filtros, recuperando os resultados diretamente da sua instância SuzieQ.
Pré-requisitos
- Python: Versão 3.8 ou superior é recomendada.
- uv: Um instalador e resolvedor de pacotes Python rápido. (Guia de instalação)
- Instância SuzieQ: Uma instância SuzieQ em execução com sua API REST habilitada e acessível.
- Endpoint e Chave da API SuzieQ: Você precisa da URL da API SuzieQ (por exemplo,
http://your-suzieq-host:8000/api/v2) e de uma chave de API válida (access_token).
Instalação e Configuração
Instalando via Smithery
Para instalar o suzieq-mcp para Claude Desktop automaticamente via Smithery:
npx -y @smithery/cli install @PovedaAqui/suzieq-mcp --client claude
Instalando Manualmente
-
Obtenha o Código: Clone este repositório ou baixe os arquivos
main.pyeserver.pypara um diretório de projeto dedicado. -
Crie o Ambiente Virtual: Navegue até o diretório do seu projeto no terminal e crie um ambiente virtual usando
uv:uv venv -
Ative o Ambiente:
- No macOS/Linux:
source .venv/bin/activate - No Windows:
.venv\Scripts\activate
(Você deve ver
(.venv)antes do seu prompt) - No macOS/Linux:
-
Instale as Dependências: Instale os pacotes Python necessários usando
uv:uv pip install mcp httpx python-dotenvmcp: O SDK do Model Context Protocol.httpx: Um cliente HTTP assíncrono usado para se comunicar com a API SuzieQ.python-dotenv: Usado para carregar variáveis de ambiente de um arquivo.envpara configuração.
Configuração
O servidor precisa do seu endpoint da API SuzieQ e da chave da API. Use um arquivo .env para configuração segura e fácil:
-
Crie o arquivo
.env: Na raiz do diretório do seu projeto (no mesmo local quemain.py), crie um arquivo chamado.env. -
Adicione as Credenciais: Adicione seu endpoint e chave SuzieQ ao arquivo
.env. Certifique-se de que não haja aspas ao redor dos valores, a menos que façam parte da chave/endpoint em si.# .env SUZIEQ_API_ENDPOINT=http://your-suzieq-host:8000/api/v2 SUZIEQ_API_KEY=your_actual_api_keySubstitua os valores de exemplo pelo seu endpoint e chave reais.
-
Proteja o arquivo
.env: Adicione.envao seu arquivo.gitignorepara evitar o commit acidental de segredos.echo ".env" >> .gitignore -
Integração de Código: O
server.pyfornecido usa automaticamentepython-dotenvpara carregar essas variáveis quando o servidor inicia.
Executando o Servidor
Certifique-se de que seu ambiente virtual esteja ativado. O servidor carregará a configuração do arquivo .env no diretório atual.
1. Diretamente
Execute o servidor diretamente do seu terminal:
uv run python main.py
O servidor iniciará, exibirá Starting SuzieQ MCP Server... e escutará conexões MCP na entrada/saída padrão (stdio). Você deve ver logs [INFO] se ele consultar a API com sucesso por meio da ferramenta. Pressione Ctrl+C para interrompê-lo.
2. Com o MCP Inspector (para Depuração)
O MCP Inspector é útil para testar a ferramenta diretamente. Se você tiver as ferramentas CLI mcp instaladas (via uv pip install "mcp[cli]"), execute:
uv run mcp dev main.py
Isso inicia um depurador interativo. Vá para a aba "Ferramentas", selecione run_suzieq_show, insira parâmetros (por exemplo, table: "device") e clique em "Chamar Ferramenta" para testar.
Usando com o Claude Desktop
Integre o servidor com o Claude Desktop para uso contínuo:
-
Encontre a Configuração do Claude Desktop: Localize o arquivo
claude_desktop_config.json.- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Crie o arquivo e o diretório Claude se eles não existirem.
- macOS:
-
Edite o Arquivo de Configuração: Adicione uma entrada para este servidor. Use o caminho absoluto para
main.py. O servidor carrega segredos de.env, então eles não precisam estar nesta configuração.
{
"mcpServers": {
"suzieq-server": {
// Use 'uv' if it's in the system PATH Claude uses,
// otherwise provide the full path to the uv executable.
"command": "uv",
"args": [
"run",
"python",
// --- VERY IMPORTANT: Use the ABSOLUTE path below ---
"/full/path/to/your/project/mcp-suzieq-server/main.py"
],
// 'env' block is not needed here if .env is in the project directory above
"workingDirectory": "/full/path/to/your/project/mcp-suzieq-server/" // Optional, but recommended
}
// Add other servers here if needed
}
}
- Substitua
/full/path/to/your/project/mcp-suzieq-server/main.pypelo caminho absoluto correto no seu sistema. - Substitua
/full/path/to/your/project/mcp-suzieq-server/pelo caminho absoluto do diretório que contémmain.pye.env. DefinirworkingDirectoryajuda a garantir que o arquivo.envseja encontrado. - Se
uvnão for encontrado pelo Claude, substitua"uv"pelo seu caminho absoluto (encontre viawhich uvouwhere uv). - No Windows, você pode precisar de
"env": { "PYTHONUTF8": "1" }se encontrar problemas de codificação de texto.
-
Reinicie o Claude Desktop: Feche e reabra completamente o Claude Desktop.
-
Verifique: Procure o indicador de ferramenta MCP (ícone de martelo 🔨) no Claude Desktop. Clicar nele deve mostrar as ferramentas
run_suzieq_showerun_suzieq_summarize.
Uso da Ferramenta (run_suzieq_show)
run_suzieq_show(table: str, filters: Optional[Dict[str, Any]] = None) -> str
- table: (String, Obrigatório) O nome da tabela SuzieQ (por exemplo, "device", "interface", "bgp").
- filters: (Dicionário, Opcional) Pares chave-valor para filtragem (por exemplo,
"hostname": "leaf01"). Omita ou use{}para nenhum filtro. - Retorna: Uma string JSON com os resultados ou um erro.
Exemplos de Invocação (Conceitual):
Mostrar todos os dispositivos:
{ "table": "device" }
Mostrar vizinhos BGP para o hostname 'spine01':
{ "table": "bgp", "filters": { "hostname": "spine01" } }
Mostrar interfaces 'up' na VRF 'default':
{ "table": "interface", "filters": { "vrf": "default", "state": "up" } }
Uso da Ferramenta (run_suzieq_summarize)
run_suzieq_summarize(table: str, filters: Optional[Dict[str, Any]] = None) -> str
- table: (String, Obrigatório) O nome da tabela SuzieQ para resumir (por exemplo, "device", "interface", "bgp").
- filters: (Dicionário, Opcional) Pares chave-valor para filtragem (por exemplo,
"hostname": "leaf01"). Omita ou use{}para nenhum filtro. - Retorna: Uma string JSON com os resultados resumidos ou um erro.
Exemplos de Invocação (Conceitual):
Resumir todos os dispositivos:
{ "table": "device" }
Resumir sessões BGP por hostname 'spine01':
{ "table": "bgp", "filters": { "hostname": "spine01" } }
Resumir estados de interface na VRF 'default':
{ "table": "interface", "filters": { "vrf": "default" } }
Solução de Problemas
Erro: "Endpoint ou chave da API SuzieQ não configurados...":
- Certifique-se de que o arquivo
.envesteja no mesmo diretório quemain.py. - Verifique se
SUZIEQ_API_ENDPOINTeSUZIEQ_API_KEYestão escritos corretamente e têm valores válidos em.env. - Se estiver usando o Claude Desktop, certifique-se de que o
workingDirectoryemclaude_desktop_config.jsonaponte para o diretório que contém.env.
Erros HTTP (4xx, 5xx):
- Verifique se a chave da API SuzieQ (
SUZIEQ_API_KEY) está correta (erros 401/403). - Verifique se o
SUZIEQ_API_ENDPOINTestá correto e se o servidor da API está em execução.