К содержанию
Pingera

Оптимизация контекстного окна: фильтрация инструментов в Pingera MCP Server

  • Опубликовано:
  • Обновлено
  • 2 мин чтения
Фильтрация инструментов в Model Context Protocol

В Pingera мы понимаем, что ИИ и агенты меняют правила игры во всех сферах нашей жизни. Именно поэтому мы продолжаем улучшать наш Model Context Protocol (MCP) сервер, который служит для интеграции AI-агентов с нашей платформой. С ростом экосистемы количество доступных инструментов (tools, в контексте MCP) в нашем сервере достигло 79. Когда языковая модель (LLM) получает описание каждого из них, контекстное окно забивается лишними данными, что ведет к росту задержек и стоимости запросов.

Сегодня мы представляем обновление, которое позволяет гибко управлять набором доступных инструментов через фильтрацию. Это критически важно для экономии ресурсов контекстного окна и повышения точности работы моделей.

Зачем фильтровать инструменты?

Передача полного списка из 79 инструментов в модель — это неэффективно. Опыт показывает, что для решения конкретной задачи агенту обычно требуется от 3 до 10 специализированных инструментов.

Ограничение набора инструментов дает два ключевых преимущества:

  1. Экономия токенов: уменьшение объема системного промпта на 60–90%.
  2. Качество ответов: модели проще выбрать нужный инструмент, когда она не отвлекается на десятки нерелевантных описаний. Это снижает вероятность галлюцинаций при вызове функций.

Реализация через Middleware

Мы реализовали механизм фильтрации на базе функционала FastMCP Middleware. Это позволяет динамически ограничивать список инструментов как при локальном запуске (через STDIO), так и при работе по сети (через HTTP/SSE).

Подробнее ознакомиться с нашей реализацией логики фильтрации можно в файле middleware.py нашего репозитория.

1. Локальный режим (STDIO)

Если вы используете сервер локально, достаточно передать флаг –tools при запуске. Это полезно для отладки или работы с узкоспециализированными агентами.

Пример конфигурации:

python main.py --transport-mode=stdio --tools=list_pages,get_page_details,list_checks

2. Сетевой режим (HTTP/SSE)

Для многопользовательского режима, где авторизация и контекст изолированы для каждого запроса, мы добавили поддержку кастомного заголовка X-MCP-Tools. Это позволяет каждому клиенту определять свой набор инструментов «на лету» без перезагрузки сервера.

Пример настройки клиента в LangGraph (можно посмотреть в mcp_client_lg.py):

client = MultiServerMCPClient(
    {
        "pingera": {
            "url": SERVER_URL,
            "transport": "streamable_http",
            "headers": {
                "Authorization": PINGERA_API_KEY,
                "X-MCP-Tools": "list_pages,get_page_details,list_checks"
            },
        }
    }
)

Изоляция и авторизация

Напомним, что в сетевом режиме наш сервер использует утилиту extract_auth_from_request() для извлечения JWT или API-ключа из заголовка Authorization. Теперь, вместе с авторизацией, сервер считывает X-MCP-Tools и через middleware подменяет список доступных методов. Это гарантирует, что пользователь получит доступ только к тем инструментам, которые необходимы для текущей сессии.

Итоги

Фильтрация инструментов — это шаг к созданию более эффективного и дешевого AI-агента. Вместо того чтобы «кормить» модель всем списком из 79 инструментов, вы даете ей только то, что нужно здесь и сейчас.

Читайте также

Проверки · Новости

Cron-расписание для Проверок в Pingera

Запуск проверок Pingera по расписанию cron. Настраивайте мониторинг под бизнес-логику: рабочие часы, старт после бэкенд-задач или проверки в начале месяца.

  • Опубликовано:
  • Обновлено
  • 2 мин чтения

Статус Страницы · Новости

Управление Статус Страницами из терминала: обновление Pingera CLI 0.1.16

В Pingera CLI 0.1.16 добавлено управление статус страницами. Создавайте инциденты, меняйте статусы компонентов и проверяйте доступность сервисов прямо из терминала.

  • Опубликовано:
  • Обновлено
  • 2 мин чтения

Новости · Статус Страницы

Запланированные работы теперь в Статус Страницах

Управление плановым обслуживанием на Статус Странице. Автоматическое информирование пользователей, управление статусами компонентов и сохранение аптайма.

  • Опубликовано:
  • Обновлено
  • 4 мин чтения