Skip to content

MCP Инструменты

Обзор

swag2mcp предоставляет 19 MCP инструментов, которые дают LLM-агенту полный доступ к вашим API через протокол Model Context Protocol. Эти инструменты покрывают полный рабочий процесс: обнаружение доступных API, навигацию по иерархии спецификаций, поиск и проверку эндпоинтов, выполнение API-вызовов и работу с большими ответами.

Что решают инструменты

  • Обнаружение — LLM может находить спецификации, коллекции и теги без предварительного знания ID
  • Навигация — спуск от спецификации → коллекции → тега → эндпоинта по структурированной иерархии
  • Поиск — полнотекстовый поиск по всем эндпоинтам, когда нет ID
  • Проверка — получение полного объекта OpenAPI-операции перед вызовом
  • Выполнение — выполнение реальных API-вызовов с автоматической аутентификацией
  • Обработка больших ответов — обзор, сжатие и извлечение фрагментов ответов, которые не помещаются в строку

Только чтение vs Изменяемые

ТипКоличествоИнструменты
Только чтение17Все инструменты обнаружения, эндпоинтов, поиска, проверки, информации и ответов
Изменяемые2invoke (выполняет реальные HTTP-вызовы), auth (получает токены)

Инструменты только для чтения помечены флагами ReadOnlyHint=true и IdempotentHint=true в протоколе MCP, сообщая LLM, что их можно безопасно вызывать без побочных эффектов.

Обработка ошибок

Все инструменты возвращают ошибки в виде структурированных объектов LLMError с машиночитаемым кодом и человекочитаемым сообщением, объясняющим, что пошло не так и что делать дальше:

Код ошибкиЗначение
validation_failedНекорректный ввод (неверный формат ID, отсутствуют обязательные поля)
not_foundСущность не найдена в индексе или рабочей области
rate_limitВторой вызов invoke в течение 10 секунд на том же эндпоинте
invoke_errorОшибка HTTP-вызова, ошибка загрузки
auth_errorОшибка получения токена аутентификации
config_errorОшибка загрузки или сохранения конфигурационного файла
parse_errorОшибка парсинга файла спецификации

Категории

КатегорияИнструментыОписание
Обнаружениеspec_list, spec_by_id, collection_by_spec, collection_by_id, tag_by_spec, tag_by_collection, tag_by_idНавигация по иерархии спецификаций: поиск спецификаций, коллекций и тегов
Эндпоинтыendpoint_by_spec, endpoint_by_collection, endpoint_by_tag, endpoint_by_idПросмотр эндпоинтов на разных уровнях иерархии
Выполнениеsearch, inspect, invokeПоиск, проверка полного контракта и вызов API
Утилитыauth, info, response_outline, response_compress, response_sliceТокены аутентификации, информация о рантайме и обработка больших ответов
НавыкиРуководство по форматированиюНастройка отображения ответов инструментов

Полный список

ИнструментОписание
spec_listСписок всех спецификаций API в рабочей области
spec_by_idДетальная информация о спецификации с коллекциями
collection_by_specСписок коллекций в спецификации
collection_by_idДетали коллекции с тегами
tag_by_specСписок всех тегов в спецификации
tag_by_collectionСписок тегов в коллекции
tag_by_idДетали тега (ID, название, количество методов)
endpoint_by_specСписок всех эндпоинтов в спецификации
endpoint_by_collectionСписок эндпоинтов в коллекции
endpoint_by_tagСписок эндпоинтов в теге
endpoint_by_idКраткая сводка эндпоинта (метод, путь, описание)
searchПолнотекстовый поиск по всем эндпоинтам
inspectПолные детали OpenAPI-операции (параметры, схемы)
invokeВыполнение реального API-вызова
authПолучение токена или заголовков аутентификации для спецификации
infoИнформация о рантайме (версия, спецификации, конфиг)
response_outlineСтруктурная сводка большого файла ответа
response_compressСжатие большого ответа для встраивания в строку
response_sliceИзвлечение фрагмента большого ответа

Иерархия навигации

spec_list
  └── spec_by_id(id)
        └── collection_by_spec(specId)
              └── collection_by_id(id)
                    └── tag_by_collection(collectionId)
                          └── tag_by_id(id)
                                └── endpoint_by_tag(tagId)
                                      └── endpoint_by_id(id)
                                            └── inspect(endpointId)
                                                  └── invoke(endpointId)

Когда у вас нет ID, используйте search для поиска эндпоинтов по запросу. Когда invoke возвращает fileRef (ответ слишком большой), используйте response_outlineresponse_compress или response_slice для изучения данных.