SkyAccess

Pesquise trechos vazios de jatos particulares em tempo real, obtenha estimativas de fretamento e links de reserva. Gratuito, sem necessidade de chave de API.

Servidor MCP hospedado

npx add-mcp 'https://mcp.skyaccess.com/mcp'

Instala no Claude Code, Codex, Cursor e outros

Documentação

SkyAccess

Servidor MCP SkyAccess

SkyAccess é o maior marketplace de voos de reposicionamento (empty legs) do mundo em volume de anúncios. Este servidor MCP gratuito e público permite que qualquer assistente de IA pesquise mais de 5.000 voos de reposicionamento ao vivo de mais de 900 operadores de charter certificados pela FAA Part 135 (e equivalentes internacionais), geralmente 25 a 75% abaixo de um charter completo comparável. Ele também retorna estimativas indicativas de preço de charter e um link de reserva que o viajante pode abrir.

Use o endpoint hospedado. Nada precisa ser instalado.

https://mcp.skyaccess.com/mcp

Detalhes de conexão

Endpointhttps://mcp.skyaccess.com/mcp
AutenticaçãoNenhuma. O servidor é gratuito e anônimo: sem conta, cadastro, chave de API ou OAuth.
TransporteHTTP Streamable, somente POST, sem estado. Nenhum Mcp-Session-Id é emitido, então cada solicitação é independente. GET retorna 405 por design.
Cabeçalhos obrigatóriosContent-Type: application/json. Accept pode ser o valor da especificação MCP application/json, text/event-stream, application/json sozinho, */*, ou omitido. Um valor de Accept que não lista application/json e não é apenas */* (por exemplo, text/html ou text/event-stream sozinho) retorna 406.
Formato de respostaCom Accept: application/json, text/event-stream, cada resposta é uma mensagem Server-Sent Events: event: message, depois data: seguido pela resposta JSON-RPC. Com application/json sozinho, */* ou sem cabeçalho Accept, cada resposta é JSON simples (Content-Type: application/json).
Versão do protocolo2025-06-18. 2025-11-25, 2025-03-26 e 2024-11-05 também são negociados.
Limites de taxaChamadas de ferramentas: 30 solicitações por 60 segundos por IP do cliente. A configuração da conexão não é contabilizada. request_booking: 10 consultas de charter por hora por IP do cliente. Consulte Limites de taxa.
CoberturaInventário global, a maior parte nos Estados Unidos. Preços e estimativas em USD.
PagamentosNenhum. Nenhuma ferramenta aceita pagamento ou possui campo de pagamento.
Suportecontact@skyaccess.com
Política de privacidadehttps://skyaccess.com/privacy#connector
Termos de serviçohttps://skyaccess.com/terms

Conectar a partir de um cliente MCP

Qualquer cliente que suporte servidores MCP remotos via HTTP Streamable pode usar o endpoint diretamente. Deixe a autenticação vazia.

  • Claude (claude.ai e Claude Desktop): Configurações, Conectores, Adicionar conector personalizado e cole https://mcp.skyaccess.com/mcp.

  • Claude Code:

    claude mcp add --transport http skyaccess https://mcp.skyaccess.com/mcp
    
  • Cursor: adicione isto ao ~/.cursor/mcp.json:

    { "mcpServers": { "skyaccess": { "url": "https://mcp.skyaccess.com/mcp" } } }
    
  • Clientes que só falam stdio (por exemplo, o arquivo claude_desktop_config.json do Claude Desktop): use a ponte neste repositório. Consulte Instalador local e ponte stdio.

Experimente com curl

Liste as ferramentas:

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"}'

Pesquise voos de reposicionamento (somente leitura):

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}}}'

O servidor não tem estado, então ambos os comandos funcionam sem um handshake initialize. Clientes MCP ainda enviam um, e o servidor responde normalmente.

Ferramentas

FerramentaTipoO que faz
search_empty_legsSomente leituraPesquisa voos de reposicionamento ao vivo por origin, destination, departureDateFrom, departureDateTo, passengers e max_price (USD), todos opcionais. Retorna até 5 voos com rota, horário de partida, preço total, aeronave, assentos, comodidades, flightId e um link de reserva.
get_flightSomente leituraRelê um voo por flightId, ou informa que não está mais disponível.
booking_handoffSomente leituraRetorna o link da página de reserva da SkyAccess para um flightId. Não cria, retém ou altera nada; o viajante revisa e reserva na página.
get_charter_estimateSomente leituraRetorna uma faixa de preço indicativa em USD por categoria de aeronave, com tempo de voo, para um charter de origin para destination (passengers e aircraftCategory opcionais).
request_bookingGravaçãoEnvia nome, e-mail e detalhes da viagem do viajante (origin, destination, departureDate, passengers, notes opcional) para a SkyAccess. Um especialista da SkyAccess responde por e-mail em breve para confirmar disponibilidade e preço. Não aceita pagamento e não cria reserva.

Um voo com price: null não tem preço publicado (a SkyAccess o exibe como "Contate para preço"). Esses voos podem aparecer mesmo quando max_price está definido, porque o preço é desconhecido.

Toda ferramenta carrega anotações MCP: as quatro ferramentas somente leitura definem readOnlyHint: true, e request_booking define readOnlyHint: false.

Exemplos de prompts

  1. "Encontre um jato particular de Los Angeles para Las Vegas esta semana para 4 pessoas." (search_empty_legs)
  2. "Há voos de jato particular baratos de Miami para as Bahamas?" (search_empty_legs)
  3. "Mostre voos de reposicionamento de Teterboro para Palm Beach e dê o link de reserva para o mais barato." (search_empty_legs, depois booking_handoff)
  4. "Quanto custaria fretar um jato particular de Teterboro para Aspen para 6 pessoas?" (get_charter_estimate)
  5. "Quais ofertas de jato particular estão saindo de Dallas neste fim de semana?" (search_empty_legs)
  6. "Aproximadamente quanto custa um jato particular de Nova York para Londres para 8 passageiros?" (get_charter_estimate)

O inventário muda o tempo todo, então os voos retornados variam a cada execução.

Dados e privacidade

As quatro ferramentas somente leitura não precisam de dados pessoais. request_booking é a única ferramenta que envia dados pessoais: o nome e o e-mail fornecidos pelo viajante, além dos detalhes da viagem e quaisquer notas, vão para a SkyAccess para que um especialista possa responder. Chame-a somente quando o viajante pedir que a SkyAccess entre em contato.

Como a SkyAccess trata esses dados: https://skyaccess.com/privacy#connector

Limites de taxa

Limites atuais, por IP do cliente:

  • Chamadas de ferramentas: 30 solicitações por 60 segundos. Cada solicitação que carrega um tools/call conta uma vez. A configuração da conexão não é contabilizada: initialize, notifications/initialized, notifications/cancelled, tools/list, ping e o GET que um cliente MCP envia para abrir o fluxo SSE opcional (respondido com 405). Uma interação típica do cliente (conectar, listar ferramentas, chamar uma ferramenta) gasta 1 solicitação. Qualquer outro método conta, assim como uma solicitação de configuração acima de 8 KB, em blocos ou compactada, ou um lote que repita um método de configuração. Respostas de chamadas de ferramentas contabilizadas carregam cabeçalhos RateLimit-Policy: 30;w=60, RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset (uma resposta request_booking carrega os valores do limite horário); respostas de configuração não carregam nenhum.
  • 10 consultas de charter por hora. Somente solicitações que chamam request_booking contam para este limite.
  • Por solicitação: um lote JSON-RPC pode conter no máximo 4 chamadas de ferramentas e no máximo 1 chamada request_booking. Lotes maiores retornam 400.

Acima do limite, o servidor responde com HTTP 429 e código de erro JSON-RPC -32029. O cabeçalho RateLimit-Reset informa os segundos até a janela ser redefinida; tente novamente depois disso.

Solução de problemas

SintomaCausa e correção
406 Not AcceptableO cabeçalho Accept não lista application/json e não é apenas */* (por exemplo, text/html ou text/event-stream sozinho). Envie Accept: application/json, text/event-stream, application/json ou */*, ou omita Accept.
429, erro JSON-RPC -32029Um limite de taxa foi atingido. "Máximo de 30 solicitações por minuto" é o limite de chamadas de ferramentas (a configuração da conexão não conta); "Máximo de 10 envios de reserva por hora" é o limite de request_booking. Aguarde RateLimit-Reset segundos e tente novamente.
405A solicitação foi um GET. Envie JSON-RPC via POST. Clientes MCP enviam um GET para abrir um fluxo SSE opcional e leem o 405 como "nenhum fluxo oferecido"; isso é esperado e não conta para o limite de taxa.
400 "Somente uma chamada request_booking é permitida por solicitação" ou "No máximo 4 chamadas de ferramentas são permitidas por solicitação"Divida o lote JSON-RPC em solicitações menores.
"Nenhum voo de reposicionamento publicado corresponde a esse id."O voo não está mais publicado (reservado, retirado ou partido), ou o id está errado. Execute search_empty_legs novamente.
get_charter_estimate responde "Estimativa temporariamente indisponível. Tente novamente."A mesma mensagem é retornada quando um nome de lugar não é reconhecido. Tente novamente com o nome de uma cidade grande ou um código de aeroporto como KTEB.

Instalador local e ponte stdio (pacote npm em breve)

O pacote npm skyaccess-mcp ainda não foi publicado, então npx skyaccess-mcp não funciona hoje. Use o endpoint hospedado acima. Quando publicado, o pacote irá:

  1. Escrever a entrada SkyAccess na configuração dos clientes MCP suportados encontrados na máquina (Cursor e o arquivo de configuração do Claude Desktop), para que ninguém precise editar JSON manualmente.
  2. Fornecer uma ponte stdio para HTTP para clientes que não aceitam uma URL.

Executar a partir de um clone hoje

A verificação de conectividade e a ponte já funcionam a partir de um clone deste repositório. Elas precisam de Node 20 ou posterior e não têm dependências:

git clone https://github.com/sky-access/skyaccess-mcp.git
cd skyaccess-mcp
node bin/skyaccess-mcp.mjs doctor

doctor verifica o endpoint e lista suas ferramentas. Ele sai com código diferente de zero se o endpoint estiver inacessível ou não retornar ferramentas.

Para usar a ponte com um cliente somente stdio, como o claude_desktop_config.json do Claude Desktop, aponte para o caminho absoluto do seu clone:

{
  "mcpServers": {
    "skyaccess": {
      "command": "node",
      "args": ["/absolute/path/to/skyaccess-mcp/bin/skyaccess-mcp.mjs", "bridge"]
    }
  }
}

Não execute o instalador em si (node bin/skyaccess-mcp.mjs sem comando) a partir de um clone ainda. A entrada do Claude Desktop que ele escreve inicia a ponte via npx -y skyaccess-mcp, que falha até o pacote ser publicado.

Comandos quando o pacote for publicado

Estes ainda não estão disponíveis:

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

Opções: --url <url>, --client <cursor|claude-desktop>, --dry-run, --help.

Como o instalador trata seus arquivos de configuração

  • Ele só escreve em um cliente cujo próprio diretório já exista, então nunca cria ~/.cursor em uma máquina sem Cursor.
  • Ele mantém todas as outras chaves no arquivo, então seus outros servidores MCP permanecem como estão.
  • Ele deixa uma configuração que não é JSON válido intocada e a reporta; nunca a sobrescreve.
  • Ele faz backup de uma entrada SkyAccess existente para <config>.skyaccess-backup antes de substituí-la.

Notas de design

  • Sem dependências em tempo de execução, então não há cadeia de suprimentos transitiva para auditar. ESM puro sem etapa de build: o que é enviado é o que está em src/.
  • A ponte escreve somente JSON-RPC na saída padrão, uma mensagem por linha, e envia todo diagnóstico para a saída de erro. Uma escrita acidental na saída padrão corromperia o protocolo.
  • Uma notificação respondida com 202 não produz linha na saída padrão, porque uma resposta que o cliente não pediu é uma violação de protocolo.
  • Uma falha HTTP para uma solicitação se torna um erro JSON-RPC com o mesmo id, para que o cliente falhe rapidamente em vez de esperar para sempre.

Desenvolvimento

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

A suíte ao vivo só envia initialize e tools/list. Ela é mantida fora de npm test porque depende de DNS e da internet pública, nenhum dos quais diz algo sobre se o código está correto.

Licença

MIT. Consulte LICENSE.