Базовая конфигурация и тестирование локального сервера
Теперь, когда вы установили готовый MCP-сервер, настало время сделать его по-настоящему вашим. Установка — это только первый шаг. Чтобы сервер работал стабильно, был готов к интеграции и легко переносился между окружениями, его нужно правильно настроить. Именно этим мы займёмся сейчас.
В этой теме вы научитесь управлять поведением сервера с помощью конфигурации, увидите, как читать логи и диагностировать проблемы. Эти навыки — основа надёжной и безопасной работы любого ИИ-агента.
Конфигурационный файл: центр управления сервером
Когда вы запускаете MCP-сервер, он должен знать: на каком порту слушать запросы, какие инструменты использовать, насколько подробно вести журнал. Вместо того чтобы прописывать это прямо в коде, мы используем конфигурационный файл — отдельный файл, в котором хранятся все настройки.
Такой подход называется config-as-code и является стандартом в современной разработке. Он позволяет:
- Быстро менять настройки без изменения кода
- Версионировать конфигурации в Git
- Легко переносить сервер между локальной машиной и сервером
Часто конфигурационные файлы пишут в формате YAML или JSON. Мы будем использовать YAML — он более читаемый и удобен для редактирования.
Пример файла config.yaml:
server:
host: "127.0.0.1"
port: 8080
log_level: "info"
tools:
- name: "web_search"
enabled: true
- name: "file_reader"
enabled: false
context:
max_tokens: 4096
history_limit: 10
Каждое поле здесь имеет значение:
port— номер порта, на котором сервер будет принимать запросыlog_level— уровень детализации логов (info,debug,error)tools— список доступных инструментов и их статус
⚠️ Важно: синтаксис YAML чувствителен к отступам. Используйте пробелы, а не табуляцию. Один отступ — 2 пробела.
Запуск сервера с конфигурацией
После создания файла нужно запустить сервер, передав ему путь к конфигурации. Обычно это делается через аргумент командной строки:
python mcp_server.py --config config.yaml
Если всё в порядке, вы увидите сообщение в терминале:
INFO: MCP Server started on http://127.0.0.1:8080
INFO: Loaded 1 active tool(s)
INFO: Log level: info
Если порт занят или в конфигурации ошибка — сервер не запустится. Но не волнуйтесь: мы научимся понимать, что пошло не так.
Логирование: ваше окно в работу сервера
Логирование — это процесс записи событий, происходящих в сервере. Логи помогают понять:
- Запустился ли сервер
- Какие запросы он получает
- Где возникла ошибка
Уровни логов:
INFO— информационные сообщения (сервер запущен, инструмент загружен)DEBUG— подробные данные для разработкиERROR— критические сбои (например, не удалось подключиться к LLM)
При log_level: "info" вы не увидите отладочную информацию, но и не будете перегружены деталями. Это оптимальный выбор для обычной работы.
💡 Совет: при диагностике проблем временно установите
log_level: "debug", чтобы увидеть больше деталей.
Тестирование сервера через HTTP-запросы
Теперь проверим, что сервер работает. Мы будем использовать curl — утилиту для отправки HTTP-запросов. Это простой и надёжный способ протестировать API.
Проверим доступность:
curl http://127.0.0.1:8080/capabilities
Ожидаемый ответ:
{
"version": "1.0",
"tools": [
{
"name": "web_search",
"description": "Инструмент для поиска информации в интернете"
}
]
}
Если вы получили такой JSON — сервер отвечает корректно.
Теперь проверим обработку промпта:
curl -X POST http://127.0.0.1:8080/prompt \
-H "Content-Type: application/json" \
-d '{"prompt": "Привет! Расскажи, что ты умеешь."}'
Если сервер возвращает текст — значит, он готов к интеграции с LLM.
Диагностика ошибок: как находить и исправлять проблемы
Даже при правильной настройке могут возникать ошибки. Главное — не паниковать, а системно анализировать.
Пример 1: порт уже занят
Попробуем запустить сервер на порту 8080, если он уже занят:
ERROR: Error starting server: [Errno 98] Address already in use
Что делать:
- Проверить, какой процесс использует порт:
lsof -i :8080 - Завершить процесс или изменить порт в
config.yaml
Пример 2: ошибка в синтаксисе YAML
Если в конфиге лишняя табуляция:
ERROR: Failed to load config: while scanning a simple key
Что делать:
- Открыть
config.yaml - Проверить отступы — везде должны быть пробелы
- Использовать редактор с подсветкой YAML
Пример 3: 404 при запросе к /prompt
Если сервер запущен, но /prompt не отвечает:
- Убедитесь, что сервер запущен с правильным конфигом
- Проверьте логи: возможно, модуль обработки промптов не загрузился
🔍 Золотое правило диагностики: всегда смотрите логи первыми. Там почти всегда есть подсказка.
Практическое задание
- Создайте файл
config.yamlс портом8081и уровнем логированияdebug - Запустите сервер с этим конфигом
- Отправьте запрос к
/capabilitiesчерезcurl - Намеренно добавьте ошибку в YAML (например, табуляцию) и попробуйте запустить
- Найдите ошибку в логах и исправьте
Теперь вы умеете настраивать сервер, управлять его поведением и находить причины сбоев. Это важный шаг к созданию стабильных ИИ-агентов.
В следующей теме вы узнаете, как упаковать ваш настроенный сервер в Docker-контейнер. Это позволит запускать его на любом компьютере с одинаковым результатом — даже без установки Python или зависимостей. Готовы сделать вашего агента по-настоящему переносимым?