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
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
| Endpoint | https://mcp.skyaccess.com/mcp |
| Autenticação | Nenhuma. O servidor é gratuito e anônimo: sem conta, cadastro, chave de API ou OAuth. |
| Transporte | HTTP Streamable, somente POST, sem estado. Nenhum Mcp-Session-Id é emitido, então cada solicitação é independente. GET retorna 405 por design. |
| Cabeçalhos obrigatórios | Content-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 resposta | Com 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 protocolo | 2025-06-18. 2025-11-25, 2025-03-26 e 2024-11-05 também são negociados. |
| Limites de taxa | Chamadas 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. |
| Cobertura | Inventário global, a maior parte nos Estados Unidos. Preços e estimativas em USD. |
| Pagamentos | Nenhum. Nenhuma ferramenta aceita pagamento ou possui campo de pagamento. |
| Suporte | contact@skyaccess.com |
| Política de privacidade | https://skyaccess.com/privacy#connector |
| Termos de serviço | https://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.jsondo 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
| Ferramenta | Tipo | O que faz |
|---|---|---|
search_empty_legs | Somente leitura | Pesquisa 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_flight | Somente leitura | Relê um voo por flightId, ou informa que não está mais disponível. |
booking_handoff | Somente leitura | Retorna 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_estimate | Somente leitura | Retorna 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_booking | Gravação | Envia 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
- "Encontre um jato particular de Los Angeles para Las Vegas esta semana para 4 pessoas." (
search_empty_legs) - "Há voos de jato particular baratos de Miami para as Bahamas?" (
search_empty_legs) - "Mostre voos de reposicionamento de Teterboro para Palm Beach e dê o link de reserva para o mais barato." (
search_empty_legs, depoisbooking_handoff) - "Quanto custaria fretar um jato particular de Teterboro para Aspen para 6 pessoas?" (
get_charter_estimate) - "Quais ofertas de jato particular estão saindo de Dallas neste fim de semana?" (
search_empty_legs) - "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/callconta uma vez. A configuração da conexão não é contabilizada:initialize,notifications/initialized,notifications/cancelled,tools/list,pinge oGETque um cliente MCP envia para abrir o fluxo SSE opcional (respondido com405). 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çalhosRateLimit-Policy: 30;w=60,RateLimit-Limit,RateLimit-RemainingeRateLimit-Reset(uma respostarequest_bookingcarrega 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_bookingcontam 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 retornam400.
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
| Sintoma | Causa e correção |
|---|---|
406 Not Acceptable | O 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 -32029 | Um 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. |
405 | A 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á:
- 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.
- 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
~/.cursorem 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-backupantes 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
202nã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.