Skip to main content
Glama
Amos666
by Amos666

log-mcp-python

Auf MCP (Model Context Protocol) basierender Remote-Logabfragedienst, implementiert in Python.

Dieses Projekt ist die Neugestaltung und Neuimplementierung des Open-Source-Projekts Log-MCP (Java-Version): Nach außen hin werden vollständig identische MCP-Tool-Schnittstellen bereitgestellt (JSON-RPC 2.0, STDIO / HTTP als zwei Übertragungsmodi), nach innen wurde die Gesamtarchitektur gemäß Python-Konventionen neu strukturiert, und die „Art der Logabfrage" wurde als steckbarer Ausführungskanal abstrahiert – die konkreten Befehle zum Abrufen von Logs werden einheitlich vom Dienst erstellt, nur die Kanäle zur Befehlsausführung sind vielfältig.

Eigenschaften

  • Schnittstellenkompatibilität: Die 5 MCP-Tools der ursprünglichen Java-Version (search_logs / tail_logs / read_log_file / list_log_files / list_servers) mit übereinstimmenden Ein-/Ausgabe-Kontrakten.

  • Steckbare Ausführungskanäle:

    • ssh — Direktverbindung per SSH-Private-Key (paramiko, mit Verbindungspool und automatischer Wiederverbindung)

    • pyinfra — Wiederverwendung vorhandener pyinfra-Host-Assets (unterstützt Host-Specs wie @local, root@host:22 usw.)

    • local — Lokale Ausführung (Entwicklung / Tests)

  • Einheitliche Befehlserstellung: Alle Logoperationen werden auf ein Shell-Kommando normalisiert, das auf dem Zielrechner ausgeführt wird (grep -n -A -B / tail -n / sed -n / find), entkoppelt vom Ausführungskanal – ein neuer Kanal muss lediglich CommandExecutor.execute() implementieren.

  • Sicherheit: Parameterprüfung, Prüfung relativer Pfade, Erkennung gefährlicher Zeichen, Shell-Single-Quote-Escaping wie in der Originalversion.

  • Minimale Abhängigkeiten: Der Kern hängt nur von paramiko ab; pyinfra ist eine optionale Abhängigkeit und wird nur installiert, wenn der pyinfra-Kanal verwendet wird.

Related MCP server: mcplogview

Architektur

MCP 客户端(AI 助手 / IDE)
        │  JSON-RPC 2.0
        ▼
mcp/            传输与协议层(stdio_server / http_server / handler)
        ▼
tools.py        5 个工具的声明式定义(名称 + JSON Schema + 处理函数)
        ▼
service/        业务编排层(参数校验 → 文件推导 → 命令构建 → 解析)
        ▼
executors/      可插拔执行通道(ssh_key / pyinfra_exec / local + registry)
        ▼
目标服务器上的 shell 命令(grep / tail / sed / find)

Detailliertes Design siehe docs/DESIGN.md.

Installation

pip install .            # 核心功能(ssh + local 通道)
pip install .[pyinfra]   # 需要 pyinfra 通道时
pip install .[dev]       # 运行测试

Konfiguration

Siehe config.example.json. Die Struktur ist mit der config.json der ursprünglichen Java-Version kompatibel und wurde wie folgt erweitert:

  • Jeder Server gibt über das Feld connector unabhängig seinen Ausführungskanal an: ssh (Standard) / pyinfra / local

  • Der pyinfra-Kanal unterstützt pyinfraHost (vollständige Host-Spec, z. B. root@192.168.5.20:22 oder @local) und pyinfraData (Host-Daten, die an pyinfra durchgereicht werden, z. B. ssh_key)

  • Zeichenketten unterstützen ${VAR}-Umgebungsvariablen-Platzhalter (bleiben unverändert, wenn nicht definiert)

{
  "servers": [
    {
      "name": "ssh-server",
      "connector": "ssh",
      "host": "192.168.5.169",
      "port": 22,
      "username": "root",
      "privateKeyPath": "${SSH_KEY_PATH}",
      "logRootPath": "/home/docker/logs/myapp/",
      "default": true
    },
    {
      "name": "pyinfra-server",
      "connector": "pyinfra",
      "pyinfraHost": "root@192.168.5.20:22",
      "pyinfraData": { "ssh_key": "/root/.ssh/id_rsa" },
      "logRootPath": "/var/logs/app/"
    },
    {
      "name": "dev-local",
      "connector": "local",
      "logRootPath": "/tmp/logs/"
    }
  ],
  "logLevels": ["info", "warn", "error", "debug"],
  "logFilePattern": "{level}/log-{level}-{date}.{seq}.log"
}

Erläuterung der wichtigsten Felder:

Feld

Beschreibung

connector

Ausführungskanal: ssh / pyinfra / local

logRootPath

Log-Wurzelverzeichnis (Basis für die Prüfung relativer Pfade)

logFilePattern

Benennungsmuster für Logdateien, mit {level}/{date}/{seq}-Platzhaltern

sshPool

SSH-Verbindungspool (maximale Verbindungsanzahl / Timeout / Wiederholungsversuche)

queryDefaults

Standardwerte und Obergrenzen für Abfragen (maxResults / maxReadLines / contextLines usw.)

Ausführung

# STDIO 模式(MCP 客户端拉起,默认)
log-mcp --config config.json

# HTTP 模式(独立部署,端口默认 8892,路径 / 与 /mcp,健康检查 GET /health)
log-mcp --config config.json --transport http --port 8892

Es werden auch Umgebungsvariablen unterstützt: LOG_CONFIG, TRANSPORT_MODE, SERVER_PORT.

Anbindung an einen MCP-Client (am Beispiel des HTTP-Modus):

{
  "mcpServers": {
    "log-mcp": {
      "url": "http://your-host:8892/mcp"
    }
  }
}

Anbindung im STDIO-Modus:

{
  "mcpServers": {
    "log-mcp": {
      "command": "log-mcp",
      "args": ["--config", "/path/to/config.json"]
    }
  }
}

MCP-Tools

Tool

Beschreibung

search_logs

Durchsucht Logs nach Schlüsselwörtern (optional regulärer Ausdruck) über Datums- und Ebenengrenzen hinweg, mit vorherigem und nachfolgendem Kontext

tail_logs

Ruft die neuesten N Zeilen der Logs der angegebenen Ebene ab

read_log_file

Liest einen Zeilenbereich der angegebenen Logdatei

list_log_files

Listet die auf dem Server verfügbaren Logdateien auf (Größe / Änderungszeit)

list_servers

Listet alle konfigurierten Server auf

Aufrufbeispiel (HTTP):

curl -s -X POST http://127.0.0.1:8892/mcp -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"search_logs","arguments":{"keyword":"ERROR","levels":["error","info"]}}}'

Tests

python -m pytest tests/ -q

Die Tests decken ab: Parameter-/Pfadprüfung, Shell-Escaping, Befehlserstellung, grep-Ausgabe-Parsing (einschließlich deterministischem Parsing bekannter Dateien), JSON-RPC-Protokollverarbeitung sowie End-to-End-Integrationstests für die beiden Kanäle local / pyinfra(@local) (insgesamt 100 Testfälle).

Lizenz

Apache-2.0

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that connects Claude (or any MCP compatible client) to your existing log infrastructure. Query, summarize, and trace logs in plain English across GCP Cloud Logging, AWS CloudWatch, Azure Log Analytics, Grafana Loki, and Elasticsearch without writing filter expressions or leaving your editor.
    11
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Exposes configured log files as MCP tools, enabling agents to list, query, and follow logs from local and SSH sources.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server for infrastructure discovery and remote management, enabling SSH command execution, file transfer, log tailing, and machine/service inventory with a companion web dashboard.
    1
  • A
    license
    A
    quality
    C
    maintenance
    Provides a standardized MCP interface for querying Graylog logs, enabling AI agents to search, diagnose, and correlate runtime logs with code via configurable profiles.
    5
    MIT

View all related MCP servers

Related MCP Connectors

  • Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.

  • Scans MCP servers for tool poisoning, prompt injection and supply chain risks.

  • A paid remote MCP for hosted MCP server, built to return verdicts, receipts, usage logs, and audit-r

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Amos666/log-mcp-python'

If you have feedback or need assistance with the MCP directory API, please join our Discord server