Linux Diagnostics MCP Server
MCP-сервер диагностики Linux — Демонстрация лекции
Адаптация оригинального учебного репозитория MCPDemo для Python/Linux. Этот репозиторий теперь достигает паритета с Milestone 7 для публичного учебного потока: компактная проверка системы, детальный анализ процессов Linux, снимки журналов в качестве ресурсов, рабочие процессы, аутентифицированный MCP через HTTP на /mcp, явный запрос подтверждения перед завершением процесса, диагностика Linux с помощью сэмплирования и разрешенные снимки /proc и /sys с правами root.
Что показывает эта демонстрация
Эта лекционная демонстрация теперь включает:
✅ Инструменты: инструменты диагностики Linux для
get_system_info,get_process_list,get_process_by_id,get_process_by_nameиkill_processс подтверждением✅ Ресурсы: постраничные ресурсы снимков журналов
syslog://snapshot/...✅ Подсказки (Prompts): рабочие процессы MCP для анализа ошибок, исследования CPU, проверки безопасности и диагностики состояния
✅ HTTP-транспорт: потоковый MCP через
http://127.0.0.1:5000/mcp✅ Аутентификация по API-ключу: заголовок
X-API-Keyили?apiKey=secure-mcp-key✅ Клиент чата с ИИ: Python-клиент Azure OpenAI, который запускает локальный HTTP-сервер, позволяет модели вызывать инструменты, подсказки и ресурсы MCP, а также обрабатывает локальные формы подтверждения в терминале
✅ Реализация на Python 3.12 с использованием официального SDK MCP для Python
✅ Множественные методы тестирования
✅ Подтверждение Milestone 5 для
kill_process✅ Диагностика Linux с помощью сэмплирования (Milestone 6)
✅ Корневые пути Milestone 7 для снимков
/procи/sysтолько для чтения
Related MCP server: troubleshooting-mcp-server
Быстрый старт
1. Установка
Установка только сервера:
python3 -m pip install --user --break-system-packages -e .Установка дополнительных компонентов клиента чата:
python3 -m pip install --user --break-system-packages -e '.[llm]'2. Быстрая проверка работоспособности (без LLM)
python3 scripts/smoke_test.pyЭтот скрипт:
Запускает локальный HTTP MCP-сервер
Проверяет
401 Unauthorizedбез API-ключаВыполняет рукопожатие инициализации MCP на
/mcpПодтверждает, что поток
mcp-session-idработает между запросамиОбнаруживает инструменты, подсказки и шаблоны ресурсов
Проверяет потоки системы, процессов, снимков журналов, снимков proc и диагностики с помощью сэмплирования
Проверяет, что
kill_processбезопасно завершается с ошибкой, если клиент не поддерживает подтверждениеПроверяет, что клиент чата корректно завершается с ошибкой при отсутствии настроек Azure OpenAI
3. Запуск сервера вручную
python3 -m mcp_linux_diag_serverСервер слушает на:
эндпоинт:
http://127.0.0.1:5000/mcpдемо API-ключ:
secure-mcp-key
4. Тестирование с помощью MCP Inspector или конфигурации VS Code MCP
Запустите сервер в одном терминале, затем подключитесь, используя HTTP-эндпоинт выше.
Этот репозиторий включает .vscode/mcp.json с необходимым заголовком:
{
"servers": {
"linux-diag-demo": {
"url": "http://127.0.0.1:5000/mcp",
"headers": {
"X-API-Key": "secure-mcp-key"
}
}
}
}Если ваш инспектор принимает URL напрямую, эта форма строки запроса также работает:
http://127.0.0.1:5000/mcp?apiKey=secure-mcp-key5. Использование клиента чата для лекций
Скопируйте файл примера окружения и заполните свои локальные настройки Azure OpenAI:
cp .env.example .env.local
$EDITOR .env.local
python3 -m mcp_linux_diag_server.client --prompt "Summarize this machine."Чтобы более точно отразить оригинальный поток учетных данных .NET, установите:
MCP_DEMO_AZURE_OPENAI_USE_DEFAULT_CREDENTIAL=trueи опустите API-ключ.
Запустите интерактивный чат:
python3 -m mcp_linux_diag_server.clientИли выполните одну подсказку:
python3 -m mcp_linux_diag_server.client --prompt "What is the system information?"Инструменты
Системная информация
get_system_info- Возвращает компактный снимок системы Linux или WSLИмя хоста
Текущий пользователь
Описание дистрибутива Linux
Версия ядра
Архитектура
Количество логических процессоров
Среда выполнения Python
Текущая рабочая директория
Время работы (uptime)
Средняя нагрузка
Сводка по памяти
Флаг обнаружения WSL
Инспекция процессов
get_process_list- Возвращает легкий список запущенных процессов с именами и PIDget_process_by_id- Возвращает подробную информацию о процессе Linux для одного PIDget_process_by_name- Возвращает постраничную подробную информацию о процессе по его имениПо умолчанию
page_number=1По умолчанию
page_size=5Сохраняет учебный поток «сначала список, потом детали» из оригинальной демонстрации
kill_process- Завершает процесс Linux только после явного подтвержденияЕсли
process_idопущен, сервер выбирает процессы с наибольшим потреблением CPU и просит клиента выбрать один из нихСервер всегда требует ввода фразы подтверждения
CONFIRM PID {pid}Лекционный клиент обрабатывает эти запросы локально в терминале, когда stdin/stdout интерактивны
troubleshoot_linux_diagnostics- Использует сэмплирование для преобразования вопроса диагностики Linux на естественном языке в проверенное чтение/procили/sysСервер проверяет сэмплированный путь и поле по списку разрешенных перед чтением
Точная адаптация Python: сэмплированный запрос — это одна безопасная строка
PATHилиPATH | grep FIELDвместо WQLЗатем сервер снова выполняет сэмплирование, чтобы обобщить наблюдение для пользователя
create_proc_snapshot- Создает неизменяемый снимок только для чтения из разрешенного пути/procили/sysи возвращает URI ресурсовСнимки файлов постранично отображают содержимое
Снимки директорий постранично отображают детерминированные метаданные дочерних элементов без перехода по символическим ссылкам
Принудительно требует явных разрешенных корней перед чтением
request_proc_access- Использует подтверждение для запроса доступа только для чтения к дополнительному корню/procили/sysДобавляет одобренный корень в список разрешенных в памяти сервера
Позволяет модели проактивно запрашивать доступ перед попыткой заблокированного снимка
Снимки журналов
create_log_snapshot- Создает неизменяемый снимок из обычного файла журнала Linux и возвращает URI ресурсовПоддерживает группы журналов
system,security,kernelиpackageОпциональный
filter_textсужает снимок до соответствующих строкВозвращает базовый URI ресурса плюс шаблон постраничного ресурса
Ресурсы
syslog://snapshot/{snapshot_id}- Читает сохраненный снимок журнала Linux с постраничной разбивкой по умолчаниюsyslog://snapshot/{snapshot_id}?limit={limit}&offset={offset}- Читает конкретную страницу из сохраненного снимкаproc://snapshot/{snapshot_id}- Читает сохраненный снимок proc/sys с постраничной разбивкой по умолчаниюproc://snapshot/{snapshot_id}?limit={limit}&offset={offset}- Читает конкретную страницу из сохраненного снимка proc/sys
Каждое чтение ресурса возвращает:
метаданные снимка
захваченные записи
метаданные пагинации (
total_count,returned_count,limit,offset,has_more,next_offset)
Подсказки (Prompts)
AnalyzeRecentApplicationErrors- Рабочий процесс анализа журналов, сфокусированный на ошибкахExplainHighCpu- Сопоставление процессов с высокой нагрузкой на CPU с журналами LinuxDetectSecurityAnomalies- Проверка подозрительных процессов плюс доказательства из журналов аутентификации/безопасностиDiagnoseSystemHealth- Комплексный рабочий процесс диагностики состояния системыTroubleshootLinuxComponent- Сфокусированный рабочий процесс глубокого анализа, который направляет агента кtroubleshoot_linux_diagnostics
Проекты
src/mcp_linux_diag_server/server.py
Аутентифицированный HTTP MCP-сервер, предоставляющий инструменты диагностики, ресурсы и рабочие процессы Milestone 1-7.
src/mcp_linux_diag_server/client.py
Клиент чата для лекций, который:
запускает локальный HTTP-сервер
подключается через потоковый HTTP с демо API-ключом
предоставляет API подсказок/ресурсов MCP в качестве вспомогательных инструментов для модели
выполняет подтверждение форм MCP в локальном терминале, когда модель запускает
kill_processвыполняет запросы сэмплирования MCP, чтобы сервер мог синтезировать безопасные запросы диагностики Linux и сводки
обучает модель запрашивать доступ к proc/sys перед созданием снимков заблокированных путей
выполняет вызовы инструментов
Методы тестирования
Метод | Визуально | Интерактивно | LLM | Лучше всего для |
| ❌ Нет | ❌ Нет | ❌ Нет | быстрой проверки поведения сервера M1-M7 |
MCP Inspector / | ✅ Да | ✅ Да | ❌ Нет | разработки, отладки, обучения |
| ❌ Нет | ✅ Да | ✅ Да | лекционного демонстрационного потока |
Для контрольного списка проверки Milestone 1, который до сих пор лежит в основе базового лекционного потока, см. M1_VALIDATION_GUIDE.md.
Структура проекта
MCPPythonDemo/
├── README.md
├── LICENSE.txt
├── pyproject.toml
├── .env.example
├── .vscode/
│ └── mcp.json
├── scripts/
│ └── smoke_test.py
├── src/
│ └── mcp_linux_diag_server/
│ ├── __main__.py
│ ├── client.py
│ ├── http_config.py
│ ├── server.py
│ └── tools/
│ ├── log_snapshots.py
│ ├── proc_snapshots.py
│ ├── processes.py
│ └── system_info.py
├── tests/
│ ├── http_harness.py
│ ├── test_client.py
│ ├── test_m1_smoke.py
│ ├── test_m2_smoke.py
│ ├── test_m3_smoke.py
│ ├── test_m4_http.py
│ ├── test_log_snapshots.py
│ ├── test_processes.py
│ └── test_system_info.pyТребования
Python 3.12+
mcp[cli]Azure OpenAI только если вы хотите запустить клиент чата для лекций
Вехи (Milestones)
✅ Milestone 1 - Минимальный инструмент диагностики через stdio плюс клиент чата для лекций
✅ Milestone 2 - Инспекция процессов
✅ Milestone 3 - Ресурсы снимков журналов и подсказки
✅ Milestone 4 - HTTP-транспорт и безопасность
✅ Milestone 5 - kill_process с подтверждением
✅ Milestone 6 - Диагностика Linux с помощью сэмплирования
✅ Milestone 7 - Корневые пути и снимки proc/sys
Лицензия
MIT. См. LICENSE.txt.
Ресурсы
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
- AlicenseBqualityBmaintenanceAn MCP server for read-only Linux system administration and diagnostics on RHEL-based systems via SSH. It enables users to troubleshoot remote hosts by accessing system information, services, logs, and network configurations through natural language.Last updated19272Apache 2.0
- Alicense-qualityDmaintenanceA comprehensive MCP server that provides system troubleshooting and diagnostic tools, enabling LLMs to diagnose system issues, monitor resources, check logs, and test connectivity.Last updated1MIT
- Alicense-qualityBmaintenanceA read-only MCP server for Linux and macOS system administration, diagnostics, and troubleshooting, supporting remote SSH execution and multi-host management.Last updatedApache 2.0

masaro-infra-mcpofficial
Flicense-qualityCmaintenanceA secure MCP server providing read-only tools to interact with Cloudflare, Coolify, and other infrastructure services, enabling AI clients to safely diagnose and validate environments.Last updated
Related MCP Connectors
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
Operate your Linux servers from your LLM. Every action runs through an auditable allowlist.
Security-first WordPress MCP server. 129 tools for Claude, ChatGPT, Gemini. Free on wp.org.
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/alonf/MCPPythonDemo'
If you have feedback or need assistance with the MCP directory API, please join our Discord server