Skip to main content

mcp-elk

Servidor MCP de leitura para o ELK (Elasticsearch + Kibana): busca, contagem com agrupamento, consultas prontas do Kibana e exportação CSV. É agnóstico: índice, campos (ex.: sistema, categoria) e consultas do projeto chegam como parâmetro.

Credenciais e servidores

SO Arquivo
Linux/Mac ~/.config/mcp-elk/elk.properties
Windows %APPDATA%\mcp-elk\elk.properties

Para usar outro caminho, defina a variável de ambiente MCP_ELK_CONFIG.

[DEFAULT]
user = SEU_USUARIO
password = SUA_SENHA
prod = https://logs.SEU-SERVIDOR
homol = https://hlogs.SEU-SERVIDOR
dev = https://dlogs.SEU-SERVIDOR

prod, homol e dev são as URLs do Kibana; só prod é obrigatória. Opcionalmente, es_prod, es_homol e es_dev são as URLs do Elasticsearch direto: quando presentes, o MCP usa as APIs REST oficiais (_search, _field_caps, PIT). Sem elas, a busca passa pelo Kibana em POST /internal/search/es, uma API interna do Kibana e o primeiro ponto a revalidar num upgrade.

Certificados: o MCP confia nas CAs instaladas na máquina (no Windows, as do repositório do Windows) e, se existir, em elk-bundle.pem, na mesma pasta do elk.properties: a cadeia PEM do Kibana, quando a CA não estiver instalada. REQUESTS_CA_BUNDLE também funciona. Se o certificado não for aceito, a tool devolve uma mensagem dizendo onde gravar a cadeia. A sessão aceita as cifras padrão do OpenSSL, porque alguns Kibana só oferecem AES256-SHA256, que a lista do Python exclui.

Instalação

Publicado no PyPI; requer o uv (uvx no PATH). No cliente MCP (mcp.json):

{
  "mcpServers": {
    "elk": {
      "type": "stdio",
      "command": "uvx",
      "args": ["mcp-elk@latest"],
      "env": { "UV_SYSTEM_CERTS": "true" }
    }
  }
}

UV_SYSTEM_CERTS faz o uvx usar as CAs da máquina para baixar o pacote (proxy corporativo).

Desenvolvimento:

uv sync
uv run pytest
uv run mcp dev mcp_elk/server.py   # MCP Inspector

Tools (só leitura)

Parâmetros comuns:

  • ambiente: prod/produção (padrão), homol/homologação/hml ou dev/desenvolvimento;
  • inicio/fim: now-15m ou ISO 8601. inicio é obrigatório;
  • campo_tempo: padrão @timestamp.
Tool Para quê
elk_buscar_logs(indice, inicio, consulta?, campos?, filtros?, limite≤100, retornar?) Investigar: itens achatados ({"a.b": v}), textos cortados em 2000 caracteres
elk_contar(..., agrupar_por?, top=10) Dimensionar; os valores mais frequentes de um campo
elk_exportar_csv(..., arquivo, retornar?, max_linhas=100000) Volume grande: pagina e grava o CSV em disco, sem passar documentos pela conversa
elk_listar_consultas(busca?, espaco?, limite=50) Buscas salvas do Discover e saved queries do Kibana (todos os spaces, ou só espaco), com consulta, filtros (DSL) e indice prontos para reuso
elk_listar_indices(busca?, espaco?) Data views (padrão de índice e campo de tempo)
elk_listar_campos(indice, busca?) Campos, tipo e se são agregáveis
  • consulta é Lucene (query_string): campo:valor AND msg:*timeout*. O KQL do Kibana é convertido no navegador e o ES 8.15 não o entende. Por isso o MCP passa and/or/not para maiúsculas fora de aspas: sem isso, a: x and b: y virava OR e trazia centenas de vezes mais documentos. campo:{...} aninhado continua sem suporte.
  • campos = filtros exatos {campo: valor} (term); filtros = Query DSL crua.
  • Exportação: com ES direto, usa PIT + search_after (consistente). Só com o Kibana, usa search_after por campo_tempo e descarta os _id repetidos na virada da página. Com documentos demais no mesmo timestamp, dá erro e pede es_<ambiente>. A página cresce para acomodar os documentos repetidos, e o erro só aparece quando passa de 10.000 documentos no mesmo timestamp.

Metadata

Release files for mcp-elk 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcp-elk 1.0.2
File Size Uploaded
mcp_elk-1.0.2.tar.gz 15.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mcp-elk 1.0.2
File Interpreter ABI Platform
mcp_elk-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 28.4 kB

Release files / mcp_elk-1.0.2.tar.gz

Download URL mcp_elk-1.0.2.tar.gz
Size 15.1 kB
Tags Source
SHA-256 checksum
How to use checksums
a32b9b72d506d76e84297b4aa0fa47adfba9076eaf1a9d3215bcd49d109916b4
BLAKE2b-256 checksum
How to use checksums
6a0e2c968b226e5b80dfbeda871657af46f9fdfb47ff8b9665273f066f07d2a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / mcp_elk-1.0.2-py3-none-any.whl

Download URL mcp_elk-1.0.2-py3-none-any.whl
Size 13.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
296fb96437ed2ad229ced39f5284148f5eaa8f09764aa9b1859608ecf135c13a
BLAKE2b-256 checksum
How to use checksums
fa26c863f21bf2434302b8e6a627333052df4835fcf1d2ed096e785446f015bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

1.0.3

2 release files

This release

1.0.2 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page