API ВЕГА

SkyAccess MCP server

SkyAccess — крупнейшая в мире площадка с объявлениями о пустых перелётах. Этот бесплатный публичный MCP-сервер позволяет любому AI-ассистенту искать более 5 000 актуальных предложений от более чем 900 сертифицированных чартерных операторов FAA Part 135 и их международных аналогов. Такие перелёты часто обходятся на 25–75% дешевле сопоставимого полноценного чартера. Сервер также предоставляет ориентировочные оценки стоимости чартера и ссылку для бронирования, которую путешественник может открыть.

Используйте размещённую версию сервера. Устанавливать ничего не нужно.

https://mcp.skyaccess.com/mcp

Установка

Каждый из вариантов ниже добавляет размещённый сервер в клиент. На вашем устройстве ничего не запускается; учётная запись, регистрация и API key не требуются.

  • Claude Code:
claude mcp add --transport http skyaccess https://mcp.skyaccess.com/mcp
  • Плагин Claude Code (тот же сервер и дополнительный навык, который подсказывает Claude, когда использовать каждый инструмент):
claude plugin marketplace add sky-access/skyaccess-mcp
claude plugin install skyaccess@skyaccess
  • Gemini CLI:
gemini extensions install https://github.com/sky-access/skyaccess-mcp
  • VS Code (GitHub Copilot): воспользуйтесь кнопкой выше или выполните команду:
code --add-mcp '{"name":"skyaccess","type":"http","url":"https://mcp.skyaccess.com/mcp"}'
  • Claude (claude.ai и Claude Desktop), Cursor и другие клиенты: см. раздел «Подключение из MCP-клиента».

Другие клиенты

В этом репозитории также есть пакет для каждого клиента из списка ниже. Все пакеты подключаются к одному и тому же размещённому серверу и ничего не запускают на вашем устройстве.

Kiro

В панели Powers выберите Add Custom Power, затем Import power from GitHub и укажите https://github.com/sky-access/skyaccess-mcp. Power из powers/skyaccess добавляет сервер и навык, который подсказывает агенту Kiro, когда использовать каждый инструмент.

Gemini CLI
gemini extensions install https://github.com/sky-access/skyaccess-mcp

Настройки расширения находятся в gemini-extension.json и GEMINI.md.

Google Antigravity

Добавьте сервер в ~/.gemini/config/mcp_config.json или в .agents/mcp_config.json рабочей области. Antigravity использует serverUrl, а не url:

{ "mcpServers": { "skyaccess": { "serverUrl": "https://mcp.skyaccess.com/mcp" } } }

Либо установите папку плагина из клона этого репозитория командой /plugin install /integrations/antigravity/skyaccess. Подробнее: integrations/antigravity/skyaccess.

GitHub Copilot CLI
copilot plugin marketplace add sky-access/skyaccess-mcp
copilot plugin install skyaccess@skyaccess

Эта команда устанавливает plugins/skyaccess. В папке находятся файлы plugin.json и mcp.json формата Agent Plugins, а также манифесты Claude Code.

Параметры подключения

Endpointhttps://mcp.skyaccess.com/mcp
АутентификацияНе требуется. Сервер бесплатный и анонимный: учётная запись, регистрация, API key и OAuth не нужны.
ТранспортStreamable HTTP, только POST, без сохранения состояния. Заголовок Mcp-Session-Id не выдаётся, поэтому каждый запрос обрабатывается отдельно. GET намеренно возвращает 405.
Обязательные заголовкиContent-Type: application/json. В заголовке Accept можно указать значение из спецификации MCP application/json, text/event-stream, только application/json, */* или не передавать его вовсе. Если в значении Accept не указано application/json и это не просто */* (например, text/html или только text/event-stream), сервер вернёт 406.
Формат ответаПри Accept: application/json, text/event-stream каждый ответ представляет собой одно сообщение Server-Sent Events: event: message, затем data: и JSON-RPC-ответ. Если указан только application/json, */* или заголовок Accept отсутствует, сервер возвращает обычный JSON (Content-Type: application/json).
Версия протокола2025-06-18. Также согласуются версии 2025-11-25, 2025-03-26 и 2024-11-05.
Ограничения частоты запросовДля вызовов инструментов — 30 запросов за 60 секунд с одного IP-адреса клиента. Подключение не учитывается. Для request_booking — 10 запросов на чартер за час с одного IP-адреса клиента. Подробнее см. Ограничения частоты запросов.
ГеографияПредложения доступны по всему миру, большая часть — в США. Цены и оценки указаны в USD.
ОплатаНе предусмотрена. Ни один инструмент не принимает оплату и не содержит поля для оплаты.
Поддержкаcontact@skyaccess.com
Политика конфиденциальностиhttps://skyaccess.com/privacy#connector
Условия использованияhttps://skyaccess.com/terms

Подключение из MCP-клиента

Сервер можно подключить напрямую из любого клиента, который поддерживает удалённые MCP-серверы через Streamable HTTP. Оставьте поле аутентификации пустым.

  • Claude (claude.ai и Claude Desktop): откройте Settings, выберите Connectors, Add custom connector и вставьте https://mcp.skyaccess.com/mcp.

  • Claude Code, Gemini CLI и VS Code: см. раздел «Установка».

  • Cursor: добавьте следующий код в ~/.cursor/mcp.json:

{ "mcpServers": { "skyaccess": { "url": "https://mcp.skyaccess.com/mcp" } } }
  • VS Code, вручную: добавьте следующий код в .vscode/mcp.json рабочей области:
{ "servers": { "skyaccess": { "type": "http", "url": "https://mcp.skyaccess.com/mcp" } } }
  • Клиенты, поддерживающие только stdio (например, Claude Desktop с файлом claude_desktop_config.json): используйте мост из этого репозитория. См. раздел «Локальный установщик и мост stdio».

Проверка с помощью curl

Получить список инструментов:

curl -sS https://mcp.skyaccess.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Найти пустые перелёты (только чтение):

curl -sS https://mcp.skyaccess.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_empty_legs","arguments":{"origin":"Los Angeles","destination":"Las Vegas","passengers":4}}}'

Сервер не сохраняет состояние, поэтому обе команды работают без предварительного рукопожатия initialize. MCP-клиенты всё равно отправляют такой запрос, и сервер обрабатывает его обычным образом.

Инструменты

ИнструментТипОписание
search_empty_legsТолько чтениеИщет актуальные пустые перелёты по параметрам origin, destination, departureDateFrom, departureDateTo, passengers и max_price (USD). Все параметры необязательны. Возвращает до 5 вариантов с маршрутом, временем вылета, стоимостью всего воздушного судна (налоги и сборы отображаются при оформлении заказа), данными о самолёте, количеством мест, удобствами, flightId и ссылкой для бронирования.
get_flightТолько чтениеПовторно получает сведения о перелёте по flightId или сообщает, что он больше недоступен.
booking_handoffТолько чтениеВозвращает ссылку на страницу бронирования SkyAccess для указанного flightId. Инструмент ничего не создаёт, не резервирует и не изменяет: путешественник самостоятельно проверяет данные и оформляет бронирование на странице.
get_charter_estimateТолько чтениеВозвращает ориентировочный диапазон цен в USD для каждой категории воздушных судов, а также продолжительность перелёта по маршруту из origin в destination. Параметры passengers и aircraftCategory необязательны.
request_bookingЗаписьОтправляет в SkyAccess имя и адрес электронной почты путешественника, а также данные поездки (origin, destination, departureDate, passengers и необязательные notes). Вскоре специалист SkyAccess свяжется по электронной почте, чтобы подтвердить доступность и стоимость. Оплата не взимается, бронирование не создаётся.

Если у перелёта указано price: null, значит опубликованной цены нет (SkyAccess отображает такой вариант как «Уточните цену»). Такие перелёты могут появляться в результатах даже при заданном max_price, поскольку их стоимость неизвестна.

Для каждого инструмента заданы аннотации MCP: у четырёх инструментов только для чтения установлено readOnlyHint: true, а у request_booking — readOnlyHint: false.

Примеры запросов

  • «Найди частный самолёт из Лос-Анджелеса в Лас-Вегас на этой неделе для четырёх человек». (search_empty_legs)

  • «Есть ли недорогие рейсы на частном самолёте из Майами на Багамы?» (search_empty_legs)

  • «Покажи пустые перелёты из Тетерборо в Палм-Бич и дай ссылку для бронирования самого дешёвого варианта». (search_empty_legs, затем booking_handoff)

  • «Сколько будет стоить чартер частного самолёта из Тетерборо в Аспен для шести человек?» (get_charter_estimate)

  • «Какие выгодные предложения на частные самолёты вылетают из Далласа в эти выходные?» (search_empty_legs)

  • «Сколько примерно стоит перелёт на частном самолёте из Нью-Йорка в Лондон для восьми пассажиров?» (get_charter_estimate)

Предложения постоянно меняются, поэтому результаты поиска могут отличаться при каждом запуске.

Данные и конфиденциальность

Для четырёх инструментов только для чтения персональные данные не нужны. request_booking — единственный инструмент, который передаёт персональные данные: указанное путешественником имя и адрес электронной почты, а также сведения о поездке и заметки отправляются в SkyAccess, чтобы специалист мог ответить. Вызывайте этот инструмент только по просьбе путешественника связаться с ним через SkyAccess.

Подробнее о том, как SkyAccess обрабатывает эти данные: https://skyaccess.com/privacy#connector

Ограничения частоты запросов

Текущие ограничения на IP-адрес клиента:

  • Вызовы инструментов: 30 запросов за 60 секунд. Каждый запрос с вызовом tools/call учитывается один раз. Установка соединения не учитывается: initialize, notifications/initialized, notifications/cancelled, tools/list, ping, а также GET-запрос MCP-клиента для открытия необязательного потока SSE (в ответ возвращается 405). Таким образом, типичный цикл клиента (подключение, получение списка инструментов, вызов одного инструмента) расходует 1 запрос. Любой другой метод учитывается; учитываются также установочные запросы размером более 8 КБ, переданные частями или сжатые, и пакетные запросы с повторяющимися установочными методами. В ответах на учитываемые вызовы инструментов передаются заголовки RateLimit-Policy: 30;w=60, RateLimit-Limit, RateLimit-Remaining и RateLimit-Reset (в ответе request_booking передаются значения часового ограничения); в ответах на установочные запросы таких заголовков нет.

  • 10 запросов на чартер в час. Это ограничение распространяется только на запросы с вызовом request_booking.

  • На один запрос: пакет JSON-RPC может содержать не более 4 вызовов инструментов и не более 1 вызова request_booking. Для более крупных пакетов сервер возвращает 400.

При превышении лимита сервер возвращает HTTP 429 с кодом ошибки JSON-RPC -32029. Заголовок RateLimit-Reset указывает, сколько секунд осталось до сброса лимита; повторите запрос после этого времени.

Устранение неполадок

СимптомПричина и решение
406 Not AcceptableВ заголовке Accept не указано application/json, а его значение не равно только */* (например, указано только text/html или text/event-stream). Передайте Accept: application/json, text/event-stream, application/json или */* либо не указывайте заголовок Accept.
429, ошибка JSON-RPC -32029Достигнут лимит запросов. «Max 30 requests per minute» — это ограничение на вызовы инструментов (установка соединения в него не входит); «Max 10 booking submissions per hour» — ограничение на вызовы request_booking. Подождите указанное в RateLimit-Reset количество секунд, затем повторите запрос.
405Запрос был отправлен методом GET. Передавайте JSON-RPC через POST. MCP-клиенты отправляют один GET, чтобы открыть необязательный поток SSE, и воспринимают ответ 405 как сообщение о том, что поток не предоставляется. Это ожидаемое поведение, и такой запрос не учитывается при подсчёте лимита.
400 "Only one request_booking call is allowed per request" или "At most 4 tool calls are allowed per request"Разбейте пакет JSON-RPC на несколько запросов меньшего размера.
"No published empty leg flight matches that id."Рейс больше не опубликован (забронирован, снят с публикации или уже вылетел) либо указан неверный идентификатор. Повторно выполните search_empty_legs.
get_charter_estimate возвращает "Estimate temporarily unavailable. Please try again."Это же сообщение возвращается, если название места не распознано. Повторите запрос, указав название крупного города или код аэропорта, например KTEB.

Локальный установщик и stdio-мост (npm-пакет)

npm-пакет skyaccess-mcp выполняет две задачи. Для его работы требуется Node версии 20 или выше; зависимостей времени выполнения у него нет.

  • Пакет добавляет запись SkyAccess в конфигурации поддерживаемых MCP-клиентов, найденных на компьютере (Cursor и файл конфигурации Claude Desktop). Редактировать JSON вручную не требуется.

  • Пакет предоставляет мост от stdio к HTTP для клиентов, которые не поддерживают URL.

npx -y skyaccess-mcp              # register with every supported client found on this machine
npx -y skyaccess-mcp --dry-run    # show what would be written, write nothing
npx -y skyaccess-mcp doctor       # check the endpoint and list its tools
npx -y skyaccess-mcp bridge       # the stdio to HTTP bridge (clients spawn this)

Команда doctor проверяет конечную точку и выводит список её инструментов. Она завершается с ненулевым кодом, если конечная точка недоступна или не возвращает инструменты.

Чтобы вручную подключить мост к клиенту, который поддерживает только stdio, например Claude Desktop через claude_desktop_config.json, используйте такую конфигурацию:

{
  "mcpServers": {
    "skyaccess": {
      "command": "npx",
      "args": ["-y", "skyaccess-mcp", "bridge"]
    }
  }
}

Те же команды можно выполнять из клона этого репозитория с помощью node bin/skyaccess-mcp.mjs .

Параметры: --url , --client , --dry-run, --help.

Как установщик работает с файлами конфигурации

  • Установщик изменяет конфигурацию клиента, только если соответствующая папка уже существует. Поэтому он не создаёт ~/.cursor на компьютере без Cursor.

  • Установщик сохраняет все остальные ключи файла, поэтому настройки других MCP-серверов остаются без изменений.

  • Если файл конфигурации не удаётся разобрать как JSON, установщик оставляет его без изменений и сообщает об этом. Существующие файлы конфигурации не перезаписываются.

  • Перед заменой существующей записи SkyAccess установщик сохраняет её резервную копию в .skyaccess-backup.

Примечания по реализации

  • Зависимостей времени выполнения нет, поэтому не требуется проверять транзитивную цепочку поставок. Используется обычный ESM без этапа сборки: поставляемый код совпадает с содержимым src/.

  • Мост записывает в stdout только JSON-RPC — по одному сообщению в строке; все диагностические сообщения отправляются в stderr. Любая посторонняя запись в stdout нарушит работу протокола.

  • Если на уведомление получен ответ 202, мост не выводит строку в stdout, поскольку ответ, которого клиент не запрашивал, нарушает протокол.

  • Если HTTP-запрос завершается ошибкой, мост возвращает ошибку JSON-RPC с тем же id. Благодаря этому клиент сразу получает ошибку, а не ждёт ответа бесконечно.

Разработка

npm install          # installs vitest, the only dev dependency
npm test             # offline suite against a real local HTTP server, no network
npm run test:live    # opt-in live suite against https://mcp.skyaccess.com/mcp

Набор тестов test:live отправляет только initialize и tools/list. Он не входит в npm test, поскольку зависит от DNS и публичного интернета, которые не позволяют судить о корректности кода.

Манифесты интеграций

Эти файлы указывают клиентам адрес размещённой конечной точки. Ни один из них не запускает код.

ФайлИспользуется
gemini-extension.json, GEMINI.mdРасширение Gemini CLI (gemini extensions install) и каталог расширений Gemini CLI
.claude-plugin/marketplace.jsonКаталог плагинов Claude Code (claude plugin marketplace add sky-access/skyaccess-mcp)
plugins/skyaccess/Сам плагин Claude Code: .claude-plugin/plugin.json, .mcp.json, навык empty-legs и его README
plugins/skyaccess/plugin.json, plugins/skyaccess/mcp.jsonТот же плагин в формате Agent Plugins версии 1.0.0 для GitHub Copilot CLI, VS Code и каталога Awesome Copilot
powers/skyaccess/Power для Kiro в формате Agent Plugins: plugin.json, mcp.json, навык empty-legs и его README
integrations/antigravity/skyaccess/Плагин Google Antigravity: plugin.json (только название и описание) и mcp_config.json (serverUrl)
integrations/dify/Исходный код плагина инструментов Dify для Dify Marketplace: четыре инструмента только для чтения, упакованные в .difypkg

При изменении версии сервера одновременно обновите version в gemini-extension.json, plugins/skyaccess/.claude-plugin/plugin.json, plugins/skyaccess/plugin.json и powers/skyaccess/plugin.json. В манифесте Antigravity поле версии отсутствует. Для плагина Dify собственная версия указана в integrations/dify/manifest.yaml. Проверьте файлы Claude Code с помощью claude plugin validate . и claude plugin validate ./plugins/skyaccess, а расширение Gemini — с помощью gemini extensions validate ..

Лицензия

MIT. См. LICENSE.