log-mcp
log-mcp-python
Сервис удалённого просмотра логов на основе MCP (Model Context Protocol), реализация на Python.
Этот проект является переработкой и реализацией открытого Log-MCP (Java-версии): наружу предоставляется полностью совместимый интерфейс MCP-инструментов (JSON-RPC 2.0, два режима передачи: STDIO / HTTP), внутри архитектура переработана в соответствии с Python-стилем, а «способ получения логов» абстрагирован в подключаемый канал выполнения — конкретные команды для получения логов всегда строит сервис, разнообразны только каналы выполнения команд.
Возможности
Совместимость интерфейса: 5 MCP-инструментов, идентичных оригинальной Java-версии (
search_logs/tail_logs/read_log_file/list_log_files/list_servers), контракты ввода-вывода согласованы.Подключаемые каналы выполнения:
ssh— прямое подключение по SSH-ключу (paramiko, с пулом соединений и автоматическим переподключением)pyinfra— переиспользование существующих активов хостов pyinfra (поддержка спецификаций хостов, таких как@local,root@host:22)local— локальное выполнение (разработка / тестирование)
Единое построение команд: все операции с логами сводятся к одному фрагменту shell-команды, выполняемой на целевом хосте (
grep -n -A -B/tail -n/sed -n/find), что развязывает с каналом выполнения — для нового канала достаточно реализоватьCommandExecutor.execute().Безопасность: проверка параметров, проверка относительных путей, обнаружение опасных символов, экранирование одинарных кавычек в shell, как в оригинале.
Нулевая тяжёлая зависимость: ядро зависит только от
paramiko;pyinfra— опциональная зависимость, устанавливается только при использовании канала pyinfra.
Related MCP server: mcplogview
Архитектура
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)Подробное проектирование см. в docs/DESIGN.md.
Установка
pip install . # 核心功能(ssh + local 通道)
pip install .[pyinfra] # 需要 pyinfra 通道时
pip install .[dev] # 运行测试Конфигурация
См. config.example.json. Структура совместима с config.json оригинальной Java-версии, с расширениями:
Для каждого сервера через поле
connectorнезависимо указывается канал выполнения:ssh(по умолчанию) /pyinfra/localКанал pyinfra поддерживает
pyinfraHost(полная спецификация хоста, напримерroot@192.168.5.20:22или@local) иpyinfraData(данные хоста, передаваемые в pyinfra, напримерssh_key)Строки поддерживают плейсхолдеры переменных окружения
${VAR}(если не определены, остаются как есть)
{
"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"
}Описание ключевых полей:
Поле | Описание |
| Канал выполнения: |
| Корневой каталог логов (база для проверки относительных путей) |
| Шаблон имени файла лога, плейсхолдеры |
| Пул SSH-соединений (лимит числа соединений / таймаут / повторные попытки) |
| Значения по умолчанию и лимиты запросов (maxResults / maxReadLines / contextLines и др.) |
Запуск
# STDIO 模式(MCP 客户端拉起,默认)
log-mcp --config config.json
# HTTP 模式(独立部署,端口默认 8892,路径 / 与 /mcp,健康检查 GET /health)
log-mcp --config config.json --transport http --port 8892Также поддерживаются переменные окружения: LOG_CONFIG, TRANSPORT_MODE, SERVER_PORT.
Подключение к MCP-клиенту (на примере режима HTTP):
{
"mcpServers": {
"log-mcp": {
"url": "http://your-host:8892/mcp"
}
}
}Подключение в режиме STDIO:
{
"mcpServers": {
"log-mcp": {
"command": "log-mcp",
"args": ["--config", "/path/to/config.json"]
}
}
}MCP-инструменты
Инструмент | Описание |
| Поиск логов по ключевому слову (опционально регулярное выражение) по датам и уровням, с контекстом до и после |
| Получение последних N строк лога указанного уровня |
| Чтение диапазона строк указанного файла лога |
| Список доступных файлов логов на сервере (размер / время изменения) |
| Список всех настроенных серверов |
Пример вызова (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"]}}}'Тестирование
python -m pytest tests/ -qПокрытие тестами: проверка параметров/путей, экранирование shell, построение команд, разбор вывода grep (включая детерминированный разбор известных файлов), обработка протокола JSON-RPC, а также сквозные интеграционные тесты для каналов local / pyinfra(@local) (всего 100 тестов).
Лицензия
Apache-2.0
This server cannot be installed
Maintenance
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
- AlicenseNot gradedqualityCmaintenanceAn 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.113MIT
- AlicenseNot gradedqualityCmaintenanceExposes configured log files as MCP tools, enabling agents to list, query, and follow logs from local and SSH sources.MIT
- FlicenseNot gradedqualityCmaintenanceMCP 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
- AlicenseAqualityCmaintenanceProvides a standardized MCP interface for querying Graylog logs, enabling AI agents to search, diagnose, and correlate runtime logs with code via configurable profiles.5MIT
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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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