Linux Diagnostics MCP Server
MCP-сервер диагностики Linux — Демонстрация лекции
Адаптация оригинального учебного репозитория MCPDemo для Python/Linux. Этот репозиторий теперь достигает паритета с Milestone 4 для публичного учебного потока: компактная проверка системы, детальный анализ процессов Linux, снимки журналов в качестве ресурсов, рабочие процессы и аутентифицированный MCP по HTTP на /mcp.
Что показывает эта демонстрация
Эта лекционная демонстрация теперь включает:
✅ Инструменты: инструменты диагностики Linux только для чтения для
get_system_info,get_process_list,get_process_by_idиget_process_by_name✅ Ресурсы: постраничные ресурсы снимков журналов
syslog://snapshot/...✅ Подсказки (Prompts): рабочие процессы MCP для анализа ошибок, исследования загрузки ЦП, проверки безопасности и диагностики состояния системы
✅ 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
✅ Несколько методов тестирования
⏳ Выявление (Elicitation), выборка (sampling) и корни (roots) запланированы на будущее
Быстрый старт
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работает между запросамиОбнаруживает инструменты, подсказки и шаблоны ресурсов
Выполняет потоки системы, процессов и снимков журналов
Проверяет, что клиент чата для лекции корректно завершает работу при отсутствии настроек 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Сохраняет учебный поток «сначала список, затем детали» из оригинальной демонстрации
Снимки журналов
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}— Читает конкретную страницу из сохраненного снимка
Каждое чтение ресурса возвращает:
метаданные снимка
захваченные строки
метаданные постраничной разбивки (
total_count,returned_count,limit,offset,has_more,next_offset)
Подсказки (Prompts)
AnalyzeRecentApplicationErrors— Рабочий процесс анализа журналов, сфокусированный на ошибкахExplainHighCpu— Сопоставление процессов с высокой нагрузкой на ЦП с журналами LinuxDetectSecurityAnomalies— Проверка подозрительных процессов плюс доказательства из журналов аутентификации/безопасностиDiagnoseSystemHealth— Сквозной рабочий процесс диагностики состояния системы
Проекты
src/mcp_linux_diag_server/server.py
Аутентифицированный HTTP-сервер MCP, предоставляющий инструменты диагностики Milestone 1-4, ресурсы журналов и рабочие процессы.
src/mcp_linux_diag_server/client.py
Клиент чата для лекции, который:
запускает локальный HTTP-сервер
подключается через потоковый HTTP с демонстрационным API-ключом
предоставляет API подсказок/ресурсов MCP в качестве вспомогательных инструментов для модели
выполняет вызовы инструментов
Методы тестирования
Метод | Визуально | Интерактивно | LLM | Лучше всего для |
| ❌ Нет | ❌ Нет | ❌ Нет | быстрой проверки поведения сервера M1-M4 |
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
│ ├── 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+ - Выявление, выборка и корни
Лицензия
MIT. См. LICENSE.txt.
Ресурсы
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/alonf/MCPPythonDemo'
If you have feedback or need assistance with the MCP directory API, please join our Discord server