Skip to content

Инструменты-утилиты

Инструменты-утилиты предоставляют вспомогательную функциональность: получение токенов аутентификации, информации о рантайме и работу с большими ответами API, которые не помещаются в строку.


auth

Назначение

Получение токена аутентификации, заголовков или query-параметров для конкретной спецификации. Это даёт LLM доступ к учётным данным, которые можно использовать вне swag2mcp (например, для генерации curl-команды).

Когда использовать

  • Только когда пользователь явно запрашивает сырой токен или учётные данные
  • При генерации curl-команды или фрагмента кода, требующего аутентификацию
  • Когда пользователь хочет увидеть, какой метод аутентификации настроен

Когда НЕ использовать

  • Не вызывайте auth перед inspect или invokeinvoke автоматически получает и применяет аутентификацию
  • Не вызывайте auth просто для проверки, настроена ли аутентификация — используйте info

Как работает

Ищет конфигурацию аутентификации спецификации и выполняет поток аутентификации (обмен токена, выполнение скрипта и т.д.) для получения текущих учётных данных.

Параметры

ПараметрТипОбязательныйОписание
specIdstringДа32-символьный MD5-хеш спецификации

Ответ

json
{
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "headers": {
    "Authorization": "Bearer eyJhbGciOiJIUzI1NiIs...",
    "X-API-Key": "my-api-key"
  },
  "queryParams": {
    "api_key": "my-api-key"
  }
}
ПолеТипОписание
tokenstringСырое значение токена (bearer-токен, API-ключ и т.д.)
headersobjectHTTP-заголовки для включения в запросы
queryParamsobjectQuery-параметры для включения в запросы

Нюансы

  • Отключён по умолчанию в продакшене: Флаг --disable-llm-auth (по умолчанию: true) полностью удаляет инструмент auth из списка MCP-инструментов. LLM не может видеть или запрашивать токены. Установите --disable-llm-auth=false для включения при отладке или для короткоживущих токенов.
  • invoke обрабатывает аутентификацию автоматически: Не нужно вызывать auth перед invoke. Сервис invoke автоматически получает и применяет правильную аутентификацию.
  • Поддерживает 9 методов аутентификации: none, basic, bearer, digest, hmac, oauth2-cc (client credentials), oauth2-pwd (password), api-key, script.
  • Возвращает auth_error, если метод аутентификации не сработал (например, недоступна конечная точка OAuth2-токена, ошибка выполнения скрипта).

info

Назначение

Возвращает комплексную сводку рантайма swag2mcp: версию, путь рабочей области, активные спецификации, настройки HTTP-клиента, конфигурацию MCP-транспорта, методы аутентификации и статус режима моков.

Когда использовать

  • Когда пользователь спрашивает о конфигурации системы
  • Когда нужно проверить настройки рантайма (таймаут, лимит размера ответа, транспорт)
  • Когда нужно узнать, какие методы аутентификации доступны
  • При устранении проблем с конфигурацией

Как работает

Возвращает предварительно вычисленный снимок состояния рантайма. Параметры не требуются.

Параметры

Нет.

Ответ

json
{
  "version": "v1.2.0",
  "workspace": "~/.swag2mcp",
  "uptime": "2h 15m",
  "specs": {
    "total": 4,
    "active": 3,
    "disabled": 1,
    "collections": 6,
    "endpoints": 42
  },
  "http_client": {
    "timeout": "30s",
    "max_response_size": "1 MB",
    "follow_redirects": true,
    "max_redirects": 10,
    "randomize": false,
    "proxy": null,
    "headers": {},
    "cookies": []
  },
  "mcp": {
    "transport": "stdio",
    "addr": ":8080",
    "path": "/mcp",
    "auth_enabled": false
  },
  "auth": {
    "methods": ["bearer", "api-key"]
  },
  "mock": {
    "enabled": false
  }
}
ПолеТипОписание
versionstringВерсия swag2mcp
workspacestringПуть к директории рабочей области
uptimestringВремя работы сервера (человекочитаемое)
specsobjectСводка спецификаций: всего, активно, отключено, коллекций, эндпоинтов
http_clientobjectКонфигурация HTTP-клиента
http_client.max_response_sizestringМаксимальный размер ответа в человекочитаемом формате (например, "1 MB")
mcpobjectКонфигурация MCP-сервера
authobjectДоступные методы аутентификации
mockobjectСтатус мок-сервера

Нюансы

  • max_response_size отображается в человекочитаемом формате (например, "1 KB", "2 MB")
  • uptime вычисляется из времени запуска сервера
  • Данные — это снимок, сделанный при загрузке; он отражает состояние на момент запуска MCP-сервера

response_outline

Назначение

Получение высокоуровневой структурной сводки большого JSON-файла ответа, который был сохранён на диск инструментом invoke. Возвращает форму данных — ключи, типы, длины массивов и подсказки для навигации — без возврата фактических значений.

Когда использовать

  • Сразу после того, как invoke вернул fileRef (ответ слишком большой для встраивания в строку)
  • Это обязательный первый шаг в рабочем процессе с большими ответами

Как работает

Читает сохранённый файл ответа и анализирует его структуру: тип верхнего уровня, ключи, длины массивов, глубину вложенности и подсказки для сжатия.

Параметры

ПараметрТипОбязательныйОписание
pathstringДаАбсолютный путь из fileRef.path
maxDepthintНетМаксимальная глубина рекурсии (по умолчанию: 3)
maxArrayItemsintНетСколько элементов массива проверять (по умолчанию: 5)

Ответ

json
{
  "outline": {
    "type": "object",
    "size": 1572864,
    "lineCount": 12500,
    "depth": 3,
    "structure": {
      "type": "object",
      "keys": ["data", "meta", "error"],
      "data": {
        "type": "array",
        "length": 500,
        "items": {
          "type": "object",
          "keys": ["id", "name", "status", "createdAt"]
        }
      }
    },
    "schemaHint": "object with 3 keys: data (array[500]), meta (object), error (null)",
    "keys": ["data", "meta", "error"],
    "itemCount": 500,
    "itemType": "object",
    "compressionHints": [
      "response_compress(path, 'first_of_array', 'data')",
      "response_compress(path, 'sample_array', 'data', arrayHead=3, arrayTail=2)",
      "response_compress(path, 'keys_only', 'data')",
      "response_compress(path, 'select_keys', 'data', selectKeys=[id, name])"
    ],
    "navigationHints": {
      "topLevelPaths": [
        {"path": "data", "type": "array"},
        {"path": "meta", "type": "object"},
        {"path": "error", "type": "null"}
      ],
      "arrayPaths": [
        {"path": "data", "length": 500, "itemType": "object"}
      ]
    }
  }
}
ПолеТипОписание
typestringТип верхнего уровня: "object" или "array"
sizeintРазмер файла в байтах
lineCountintКоличество строк в файле
depthintМаксимальная проверенная глубина вложенности
structureobjectРекурсивная структура с ключами, типами, длинами массивов
schemaHintstringОднострочная сводка формы верхнего уровня
keysarrayКлючи верхнего уровня (для объектов)
itemCountintДлина массива (для массивов)
compressionHintsarrayПредлагаемые вызовы response_compress с параметрами
navigationHintsobjectПути верхнего уровня и массивы с длинами

Нюансы

  • Возвращает validation_failed, если путь некорректен или не находится внутри директории responses
  • Возвращает not_found, если файл не существует
  • Возвращает validation_failed, если файл не является валидным JSON
  • Поле compressionHints предоставляет готовые к использованию предложения для вызовов response_compress

response_compress

Назначение

Уменьшение JSON-значения внутри сохранённого файла ответа, чтобы оно поместилось в лимит размера ответа и могло быть возвращено LLM в строке. Несколько режимов сжатия позволяют выбрать правильный баланс между размером и информацией.

Когда использовать

  • После response_outline для понимания структуры
  • Когда нужно получить данные из большого ответа в строке
  • Когда response_slice слишком узок и нужен более широкий обзор

Как работает

Читает сохранённый файл ответа, переходит к указанному JSON-пути, применяет режим сжатия и возвращает сжатый результат. Если результат всё ещё превышает лимит размера, он сохраняется в новый файл.

Параметры

ПараметрТипОбязательныйОписание
pathstringДаАбсолютный путь из fileRef.path
jsonPathstringНетПуть к значению для сжатия (например, data или data.0)
modestringДаРежим сжатия (см. таблицу ниже)
arrayHeadintНетНачальные элементы для сохранения в режиме sample_array (по умолчанию: 3)
arrayTailintНетКонечные элементы для сохранения в режиме sample_array (по умолчанию: 2)
stringLenintНетМаксимальная длина строки в режиме truncate_strings (по умолчанию: 80)
selectKeysarrayНетКлючи для сохранения в режиме select_keys

Режимы сжатия

РежимОписаниеЛучше всего для
first_of_arrayСохранить только первый элемент массиваКогда все элементы имеют одинаковую структуру
sample_arrayСохранить начало и конец массиваКогда нужно увидеть диапазон значений
truncate_stringsУкоротить каждую строку до stringLen символовКогда строки очень длинные, но структура важна
keys_onlyЗаменить значения объектов на имена их типовКогда нужна только структура
select_keysСохранить только указанные ключи в каждом объектеКогда нужны конкретные поля из многих объектов

Ответ

json
{
  "body": [
    { "id": 1, "name": "Rex", "status": "available" },
    { "id": 2, "name": "Max", "status": "pending" }
  ],
  "hint": "Compressed array from 500 to 2 items using first_of_array mode"
}
ПолеТипОписание
bodyanyСжатое JSON-значение (присутствует, когда в пределах лимита размера)
fileRefobjectСсылка на файл (присутствует, когда всё ещё слишком большой)
hintstringОбъяснение того, что было сжато

Нюансы

  • Если сжатый результат всё ещё превышает max_response_size, он сохраняется в новый файл и возвращается FileReference
  • Значения по умолчанию: arrayHead=3, arrayTail=2, stringLen=80
  • Возвращает validation_failed для неверного пути, неверного JSONPath или не-JSON файла
  • Возвращает not_found, если файл не существует или JSONPath не совпадает

response_slice

Назначение

Извлечение конкретного фрагмента сохранённого JSON-файла ответа по логическому JSON-пути или по диапазону строк. В отличие от response_compress, возвращает сырые, неизменённые данные.

Когда использовать

  • Когда нужен конкретный элемент или значение из большого ответа
  • Когда response_compress не даёт достаточно деталей
  • Когда нужно перемещаться по ответу шаг за шагом

Как работает

Читает сохранённый файл ответа и извлекает фрагмент по JSON-пути (например, data.3.name) или по диапазону строк (например, 120-240). Возвращает подсказки для навигации по массивам и объектам.

Параметры

ПараметрТипОбязательныйОписание
pathstringДаАбсолютный путь из fileRef.path
jsonPathstringНетЛогический путь к значению (например, data.3.name)
lineintНетНомер строки (начиная с 1) для центрирования фрагмента
rangestringНетДиапазон строк в формате start-end (например, 120-240)
aroundintНетСтрок для включения вокруг line (по умолчанию: 20)

Ответ

json
{
  "slice": {
    "lines": [120, 130],
    "fragment": "{\n  \"id\": 1,\n  \"name\": \"Rex\"\n}",
    "value": {
      "id": 1,
      "name": "Rex"
    },
    "jsonPath": "data.0",
    "context": "object",
    "isComplete": true,
    "nextLine": 131,
    "prevLine": 119,
    "nextPath": "data.1",
    "prevPath": null
  }
}
ПолеТипОписание
linesarrayДиапазон строк [начало, конец] (начиная с 1)
fragmentstringСырой JSON-текст (когда достаточно мал)
valueanyИзвлечённое JSON-значение
jsonPathstringИспользованный JSON-путь
contextstring"object", "array" или "value"
isCompleteboolTrue, когда значение является валидным JSON-фрагментом
nextLineintПредлагаемая следующая строка для построчной навигации
prevLineintПредлагаемая предыдущая строка
nextPathstringПредлагаемый следующий JSON-путь для навигации по массиву
prevPathstringПредлагаемый предыдущий JSON-путь

Нюансы

  • Предпочитайте jsonPath номерам строк — JSON-пути стабильны и описательны, номера строк меняются при перегенерации файла
  • Если извлечённый фрагмент превышает max_response_size, он сохраняется в новый файл и возвращается FileReference
  • По умолчанию around равен 20 строкам
  • Ответ включает nextPath/prevPath для навигации по массивам и nextLine/prevLine для построчной навигации
  • Возвращает validation_failed для неверного пути, неверного JSONPath, неверной строки/диапазона или не-JSON файла
  • Возвращает not_found, если файл не существует или JSONPath не совпадает