SkyAccess

Busca tramos vacíos de jets privados en vivo, obtén estimaciones de chárter y enlaces de reserva. Gratis, sin clave de API.

Servidor MCP alojado

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

Se instala en Claude Code, Codex, Cursor y más

Documentación

SkyAccess

Servidor MCP de SkyAccess

SkyAccess es el mercado de vuelos vacíos más grande del mundo por volumen de anuncios. Este servidor MCP gratuito y público permite a cualquier asistente de IA buscar más de 5,000 vuelos vacíos en vivo de más de 900 operadores de chárter certificados por la FAA Parte 135 (y equivalentes internacionales), a menudo entre un 25% y un 75% por debajo de un chárter completo comparable. También devuelve estimaciones indicativas de precios de chárter y un enlace de reserva que el viajero puede abrir.

Usa el endpoint alojado. No es necesario instalar nada.

https://mcp.skyaccess.com/mcp

Detalles de conexión

Endpointhttps://mcp.skyaccess.com/mcp
AutenticaciónNinguna. El servidor es gratuito y anónimo: sin cuenta, registro, clave API ni OAuth.
TransporteHTTP transmisible, solo POST, sin estado. No se emite Mcp-Session-Id, por lo que cada solicitud es independiente. GET devuelve 405 por diseño.
Encabezados requeridosContent-Type: application/json. Accept puede ser el valor de especificación MCP application/json, text/event-stream, application/json solo, */*, u omitirse. Un valor de Accept que no incluya application/json y no sea solo */* (por ejemplo, text/html o text/event-stream solo) devuelve 406.
Formato de respuestaCon Accept: application/json, text/event-stream, cada respuesta es un mensaje de Server-Sent Events: event: message, luego data: seguido de la respuesta JSON-RPC. Con application/json solo, */* o sin encabezado Accept, cada respuesta es JSON plano (Content-Type: application/json).
Versión del protocolo2025-06-18. También se negocian 2025-11-25, 2025-03-26 y 2024-11-05.
Límites de velocidadLlamadas a herramientas: 30 solicitudes por 60 segundos por IP de cliente. La configuración de conexión no se cuenta. request_booking: 10 consultas de chárter por hora por IP de cliente. Consulta Límites de velocidad.
CoberturaInventario global, la mayor parte en Estados Unidos. Los precios y estimaciones están en USD.
PagosNinguno. Ninguna herramienta acepta pagos ni tiene un campo de pago.
Soportecontact@skyaccess.com
Política de privacidadhttps://skyaccess.com/privacy#connector
Términos de serviciohttps://skyaccess.com/terms

Conectarse desde un cliente MCP

Cualquier cliente que admita servidores MCP remotos sobre HTTP transmisible puede usar el endpoint directamente. Deja la autenticación vacía.

  • Claude (claude.ai y Claude Desktop): Configuración, Conectores, Agregar conector personalizado, luego pega https://mcp.skyaccess.com/mcp.

  • Claude Code:

    claude mcp add --transport http skyaccess https://mcp.skyaccess.com/mcp
    
  • Cursor: agrega esto a ~/.cursor/mcp.json:

    { "mcpServers": { "skyaccess": { "url": "https://mcp.skyaccess.com/mcp" } } }
    
  • Clientes que solo hablan stdio (por ejemplo, el archivo claude_desktop_config.json de Claude Desktop): usa el puente en este repositorio. Consulta Instalador local y puente stdio.

Pruébalo con curl

Lista las herramientas:

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

Busca vuelos vacíos (solo lectura):

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

El servidor no tiene estado, por lo que ambos comandos funcionan sin un protocolo de enlace initialize. Los clientes MCP aún envían uno, y el servidor lo responde normalmente.

Herramientas

HerramientaTipoQué hace
search_empty_legsSolo lecturaBusca vuelos vacíos en vivo por origin, destination, departureDateFrom, departureDateTo, passengers y max_price (USD), todos opcionales. Devuelve hasta 5 vuelos con ruta, hora de salida, precio total, aeronave, asientos, comodidades, flightId y un enlace de reserva.
get_flightSolo lecturaVuelve a leer un vuelo por flightId, o indica que ya no está disponible.
booking_handoffSolo lecturaDevuelve el enlace de la página de reserva de SkyAccess para un flightId. No crea, retiene ni cambia nada; el viajero revisa y reserva en la página.
get_charter_estimateSolo lecturaDevuelve un rango de precios indicativo en USD por categoría de aeronave, con tiempo de vuelo, para un chárter desde origin hasta destination (passengers y aircraftCategory opcionales).
request_bookingEscrituraEnvía el nombre, correo electrónico y detalles del viaje del viajero (origin, destination, departureDate, passengers, notes opcional) a SkyAccess. Un especialista de SkyAccess hace seguimiento por correo electrónico poco después para confirmar disponibilidad y precio. No acepta pagos ni crea reservas.

Un vuelo con price: null no tiene precio publicado (SkyAccess lo muestra como "Contactar para precio"). Estos vuelos pueden aparecer incluso cuando max_price está configurado, porque su precio es desconocido.

Cada herramienta lleva anotaciones MCP: las cuatro herramientas de solo lectura establecen readOnlyHint: true, y request_booking establece readOnlyHint: false.

Ejemplos de indicaciones

  1. "Encuéntrame un jet privado de Los Ángeles a Las Vegas esta semana para 4 personas." (search_empty_legs)
  2. "¿Hay vuelos de jet privado baratos de Miami a las Bahamas?" (search_empty_legs)
  3. "Muéstrame vuelos vacíos de Teterboro a Palm Beach y dame el enlace de reserva para el más barato." (search_empty_legs, luego booking_handoff)
  4. "¿Cuánto costaría alquilar un jet privado de Teterboro a Aspen para 6 personas?" (get_charter_estimate)
  5. "¿Qué ofertas de jet privado salen de Dallas este fin de semana?" (search_empty_legs)
  6. "¿Cuánto cuesta aproximadamente un jet privado de Nueva York a Londres para 8 pasajeros?" (get_charter_estimate)

El inventario cambia constantemente, por lo que los vuelos devueltos difieren de una ejecución a otra.

Datos y privacidad

Las cuatro herramientas de solo lectura no necesitan datos personales. request_booking es la única herramienta que envía datos personales: el nombre y correo electrónico que el viajero proporciona, junto con los detalles del viaje y cualquier nota, van a SkyAccess para que un especialista pueda responder. Llámala solo cuando el viajero pida que SkyAccess se comunique con ellos.

Cómo maneja SkyAccess estos datos: https://skyaccess.com/privacy#connector

Límites de velocidad

Límites actuales, por IP de cliente:

  • Llamadas a herramientas: 30 solicitudes por 60 segundos. Cada solicitud que lleva un tools/call cuenta una vez. La configuración de conexión no se cuenta: initialize, notifications/initialized, notifications/cancelled, tools/list, ping y el GET que un cliente MCP envía para abrir el flujo SSE opcional (respondido 405). Un turno típico de cliente (conectar, listar herramientas, llamar a una herramienta) gasta 1 solicitud. Cualquier otro método cuenta, y también cuenta una solicitud de configuración de más de 8 KB, fragmentada o comprimida, o un lote que repita un método de configuración. Las respuestas de llamadas a herramientas contadas llevan encabezados RateLimit-Policy: 30;w=60, RateLimit-Limit, RateLimit-Remaining y RateLimit-Reset (una respuesta request_booking lleva los valores del límite por hora en su lugar); las respuestas de configuración no llevan ninguno.
  • 10 consultas de chárter por hora. Solo las solicitudes que llaman a request_booking cuentan para este límite.
  • Por solicitud: un lote JSON-RPC puede llevar como máximo 4 llamadas a herramientas y como máximo 1 llamada a request_booking. Los lotes más grandes devuelven 400.

Al superar un límite, el servidor responde HTTP 429 con código de error JSON-RPC -32029. El encabezado RateLimit-Reset indica los segundos hasta que se restablezca la ventana; reintenta después de eso.

Solución de problemas

SíntomaCausa y solución
406 Not AcceptableEl encabezado Accept no incluye application/json y no es solo */* (por ejemplo, text/html o text/event-stream solo). Envía Accept: application/json, text/event-stream, application/json o */*, u omite Accept.
429, error JSON-RPC -32029Se alcanzó un límite de velocidad. "Máximo 30 solicitudes por minuto" es el límite de llamadas a herramientas (la configuración de conexión no cuenta); "Máximo 10 envíos de reserva por hora" es el límite de request_booking. Espera RateLimit-Reset segundos y reintenta.
405La solicitud fue un GET. Envía JSON-RPC sobre POST. Los clientes MCP envían un GET para abrir un flujo SSE opcional y leen el 405 como "no se ofreció flujo"; eso es esperado y no cuenta para el límite de velocidad.
400 "Solo se permite una llamada request_booking por solicitud" o "Se permiten como máximo 4 llamadas a herramientas por solicitud"Divide el lote JSON-RPC en solicitudes más pequeñas.
"Ningún vuelo vacío publicado coincide con ese id."El vuelo ya no está publicado (reservado, retirado o salido), o el id es incorrecto. Ejecuta search_empty_legs nuevamente.
get_charter_estimate responde "Estimación temporalmente no disponible. Inténtalo de nuevo."El mismo mensaje se devuelve cuando un nombre de lugar no se reconoce. Reintenta con el nombre de una ciudad importante o un código de aeropuerto como KTEB.

Instalador local y puente stdio (paquete npm próximamente)

El paquete npm skyaccess-mcp aún no está publicado, por lo que npx skyaccess-mcp no funciona hoy. Usa el endpoint alojado anterior. Una vez publicado, el paquete:

  1. Escribirá la entrada de SkyAccess en la configuración de los clientes MCP compatibles encontrados en la máquina (Cursor y el archivo de configuración de Claude Desktop), para que nadie tenga que editar JSON manualmente.
  2. Proporcionará un puente de stdio a HTTP para clientes que no pueden aceptar una URL.

Ejecútalo desde un clon hoy

La verificación de conectividad y el puente ya funcionan desde un clon de este repositorio. Necesitan Node 20 o posterior y no tienen dependencias:

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

doctor verifica el endpoint y lista sus herramientas. Sale con código distinto de cero si el endpoint es inalcanzable o no devuelve herramientas.

Para usar el puente con un cliente solo stdio como el claude_desktop_config.json de Claude Desktop, apúntalo a la ruta absoluta de tu clon:

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

No ejecutes el instalador en sí (node bin/skyaccess-mcp.mjs sin comando) desde un clon todavía. La entrada de Claude Desktop que escribe inicia el puente a través de npx -y skyaccess-mcp, que falla hasta que el paquete esté publicado.

Comandos una vez que el paquete esté publicado

Estos aún no están disponibles:

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)

Opciones: --url <url>, --client <cursor|claude-desktop>, --dry-run, --help.

Cómo trata el instalador tus archivos de configuración

  • Solo escribe en un cliente cuyo propio directorio ya exista, por lo que nunca crea ~/.cursor en una máquina sin Cursor.
  • Conserva todas las demás claves en el archivo, por lo que tus otros servidores MCP permanecen como están.
  • Deja intacta una configuración que no se analice como JSON y la reporta; nunca la sobrescribe.
  • Hace una copia de seguridad de una entrada existente de SkyAccess en <config>.skyaccess-backup antes de reemplazarla.

Notas de diseño

  • Sin dependencias en tiempo de ejecución, por lo que no hay cadena de suministro transitiva que auditar. ESM plano sin paso de compilación: lo que se envía es lo que está en src/.
  • El puente escribe solo JSON-RPC en stdout, un mensaje por línea, y envía cada diagnóstico a stderr. Una escritura accidental en stdout corrompería el protocolo.
  • Una notificación respondida con 202 no produce una línea en stdout, porque una respuesta que el cliente nunca pidió es una violación del protocolo.
  • Un salto HTTP fallido para una solicitud se convierte en un error JSON-RPC con el mismo id, para que el cliente falle rápidamente en lugar de esperar para siempre.

Desarrollo

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

La suite en vivo solo envía initialize y tools/list. Se mantiene fuera de npm test porque depende de DNS e internet público, ninguno de los cuales dice nada sobre si el código es correcto.

Licencia

MIT. Consulta LICENCIA.