Cli client for testing mcp servers
Описание
- Реализован и расширен MCP Client - универсальный CLI-инструмент для тестирования MCP-серверов
- Создан MCP клиент в examples/mcp_client/
- В README есть инструкция запуска
Реализовано
-
cli.py - Точка входа CLI: парсинг аргументов, вывод результатов, коды возврата. Добавлена поддержка новых аргументов (--url, --stdio, --smoke, --smoke-file), обновлена логика выбора транспорта.
-
client.py - Клиентская логика: инициализация, вызовы tools, работа с протоколом. Адаптирован для работы с разными транспортами, добавлена нормализация ответов.
-
mcp_http.py - (бывший http.py) HTTP запросы: обработка статусов, тайм-аутов, чтение тела ответа. Переименован для избежания конфликта со стандартным модулем.
-
parser.py - Парсеры: обработка JSON и SSE-ответов.
-
formatter.py - Форматирование: преобразование данных для вывода.
-
exceptions.py - Исключения и коды возврата. Добавлен новый класс SmokeTestError.
-
transport/base.py - Базовый класс для всех транспортов.
-
transport/http.py - HTTP транспорт (переиспользована существующая логика).
-
transport/stdio.py - Новый Stdio транспорт для запуска сервера как процесса.
-
smoke.py - Модуль для smoke-тестов: дефолтный сценарий (initialize → tools/list) и выполнение произвольных сценариев из JSON-файла.
-
tests/ - Добавлено тестовое покрытие:
- test_http.py - тесты HTTP режима
- test_stdio.py - тесты stdio режима
- test_smoke.py - тесты smoke-режимов
- test_errors.py - тесты ошибок и exit codes
- test_integration.py - интеграционные тесты
Чеклист:
- Описание MR:
-
Из описания MR ясно кому и зачем нужны правки -
Указаны ссылки на связанные issues -
Указаны дополнительные материалы (если есть)
-
- Проверка:
-
Изменения протестированы -
Проверено поведение в dev (если применимо)
-
- Changelog:
-
Добавлен новый файл вchangelogs/unreleased -
Добавлено описание всех изменений -
Указаны изменения в переменных окружения -
Указаны ссылки на GitLab Issues, связанные с MR
-
- Документация:
-
Обновлены инструкции в CONTRIBUTING.md (если применимо) -
Обновлен README (если применимо)
-