One command to add the SkyAccess private-jet empty-leg MCP server to Claude, Cursor, or any MCP client.
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Documented (README)
claude mcp add skyaccess-mcp -- npx -y skyaccess-mcp{
"mcpServers": {
"skyaccess-mcp": {
"command": "npx",
"args": ["-y", "skyaccess-mcp"]
}
}
}Resumen de MCP Servers
<img src="assets/icon.png" alt="SkyAccess" width="72" height="72">
# SkyAccess MCP server
SkyAccess is the world's largest empty leg marketplace by listing volume. This free, public MCP server lets any AI assistant search 5,000+ live empty leg flights from 900+ FAA Part 135 (and international equivalent) certified charter operators, often 25 to 75% below a comparable full charter. It also returns indicative charter price estimates and a booking link the traveler can open.
Use the hosted endpoint. Nothing needs to be installed.
```text
https://mcp.skyaccess.com/mcp
```
## Connection details
| | |
|---|---|
| Endpoint | `https://mcp.skyaccess.com/mcp` |
| Authentication | None. The server is free and anonymous: no account, sign-up, API key or OAuth. |
| Transport | Streamable HTTP, `POST` only, stateless. No `Mcp-Session-Id` is issued, so every request stands alone. `GET` returns `405` by design. |
| Required headers | `Content-Type: application/json`. `Accept` can be the MCP spec value `application/json, text/event-stream`, `application/json` alone, `*/*`, or left out. An `Accept` value that does not list `application/json` and is not just `*/*` (for example `text/html` or `text/event-stream` alone) returns `406`. |
| Response format | With `Accept: application/json, text/event-stream`, each reply is one Server-Sent Events message: `event: message`, then `data:` followed by the JSON-RPC response. With `application/json` alone, `*/*` or no `Accept` header, each reply is plain JSON (`Content-Type: application/json`). |
| Protocol version | `2025-06-18`. `2025-11-25`, `2025-03-26` and `2024-11-05` are also negotiated. |
| Rate limits | Tool calls: 30 requests per 60 seconds per client IP. Connection setup is not counted. `request_booking`: 10 charter enquiries per hour per client IP. See [Rate limits](#rate-limits). |
| Coverage | Global inventory, most of it in the United States. Prices and estimates are in USD. |
| Payments | None. No tool takes a payment or has a payment field. |
| Support | contact@skyaccess.com |
| Privacy policy | https://skyaccess.com/privacy#connector |
| Terms of service | https://skyaccess.com/terms |
## Connect from an MCP client
Any client that supports remote MCP servers over Streamable HTTP can use the endpoint directly. Leave authentication empty.
- **Claude (claude.ai and Claude Desktop):** Settings, Connectors, Add custom connector, then paste `https://mcp.skyaccess.com/mcp`.
- **Claude Code:**
```bash
claude mcp add --transport http skyaccess https://mcp.skyaccess.com/mcp
```
- **Cursor:** add this to `~/.cursor/mcp.json`:
```json
{ "mcpServers": { "skyaccess": { "url": "https://mcp.skyaccess.com/mcp" } } }
```
- **Clients that only speak stdio** (for example Claude Desktop's `claude_desktop_config.json` file): use the bridge in this repository. See [Local installer and stdio bridge](#local-installer-and-stdio-bridge-npm-package-coming-soon).
## Try it with curl
List the tools:
```bash
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"}'
```
Search empty legs (read-only):
```bash
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}}}'
```
The server is stateless, so both commands work without an `initialize` handshake. MCP clients still send one, and the server answers it normally.
## Tools
| Tool | Type | What it does |
|---|---|---|
| `search_empty_legs` | Read-only | Searches live empty leg flights by `origin`, `destination`, `departureDateFrom`, `departureDateTo`, `passengers` and `max_price` (USD), all optional. Returns up to 5 flights with route, departure time, all-in price, aircraft, seats, amenities, `flightId` and a booking link. |
| `get_flight` | Read-only | Re-reads one flight by `flightId`, or says it is no longer available. |
| `booking_handoff` | Read-only | Returns the SkyAccess booking page link for a `flightId`. It creates, holds or changes nothing; the traveler reviews and books on the page. |
| `get_charter_estimate` | Read-only | Returns an indicative USD price range per aircraft category, with flight time, for a charter from `origin` to `destination` (optional `passengers` and `aircraftCategory`). |
| `request_booking` | **Write** | Sends the traveler's name, email and trip details (`origin`, `destination`, `departureDate`, `passengers`, optional `notes`) to SkyAccess. A SkyAccess specialist follows up by email shortly to confirm availability and price. It takes no payment and creates no booking. |
A flight with `price: null` has no published price (SkyAccess shows it as "Contact for price"). Such flights can appear even when `max_price` is set, because their price is unknown.
Every tool carries MCP annotations: the four read-only tools set `readOnlyHint: true`, and `request_booking` sets `readOnlyHint: false`.
## Example prompts
1. "Find me a private jet from Los Angeles to Las Vegas this week for 4 people." (`search_empty_legs`)
2. "Are there any cheap private jet flights from Miami to the Bahamas?" (`search_empty_legs`)
3. "Show me empty legs from Teterboro to Palm Beach and give me the booking link for the cheapest one." (`search_empty_legs`, then `booking_handoff`)
4. "How much would it cost to charter a private jet from Teterboro to Aspen for 6 people?" (`get_charter_estimate`)
5. "What private jet deals are leaving Dallas this weekend?" (`search_empty_legs`)
6. "Roughly what does a private jet from New York to London cost for 8 passengers?" (`get_charter_estimate`)
Inventory changes all the time, so the flights returned differ from run to run.
## Data and privacy
The four read-only tools need no personal data. `request_booking` is the only tool that sends personal data: the name and email the traveler gives, plus the trip details and any notes, go to SkyAccess so a specialist can reply. Call it only when the traveler asks SkyAccess to contact them.
How SkyAccess handles this data: https://skyaccess.com/privacy#connector
## Rate limits
Current limits, per client IP:
- **Tool calls: 30 requests per 60 seconds.** Each request that carries a `tools/call` counts once. Connection setup is not counted: `initialize`, `notifications/initialized`, `notifications/cancelled`, `tools/list`, `ping`, and the `GET` an MCP client sends to open the optional SSE stream (answered `405`). A typical client turn (connect, list tools, call one tool) therefore spends 1 request. Any other method counts, and so does a setup request that is over 8 KB, chunked or compressed, or a batch that repeats a setup method. Counted tool-call responses carry `RateLimit-Policy: 30;w=60`, `RateLimit-Limit`, `RateLimit-Remaining` and `RateLimit-Reset` headers (a `request_booking` response carries the hourly limit's values instead); setup responses carry none.
- **10 charter enquiries per hour.** Only requests that call `request_booking` count toward this limit.
- **Per request:** a JSON-RPC batch may carry at most 4 tool calls, and at most 1 `request_booking` call. Larger batches return `400`.
Over a limit, the server answers HTTP `429` with JSON-RPC error code `-32029`. The `RateLimit-Reset` header gives the seconds until the window resets; retry after that.
## Troubleshooting
| Symptom | Cause and fix |
|---|---|
| `406 Not Acceptable` | The `Accept` header does not list `application/json` and is not just `*/*` (for example `text/html` or `text/event-stream` alone). Send `Accept: application/json, text/event-stream`, `application/json` or `*/*`, or leave `Accept` out. |
| `429`, JSON-RPC error `-32029` | A rate limit was reached. "Max 30 requests per minute" is the tool-call limit (connection setup does not count toward it); "Max 10 booking submissions per hour" is the `request_booking` limit. Wait `RateLimit-Reset` seconds, then retry. |
| `405` | The request was a `GET`. Send JSON-RPC over `POST`. MCP clients send one `GET` to open an optional SSE stream and read the `405` as "no stream offered"; that is expected and does not count toward the rate limit. |
| `400` "Only one request_booking call is allowed per request" or "At most 4 tool calls are allowed per request" | Split the JSON-RPC batch into smaller requests. |
| "No published empty leg flight matches that id." | The flight is no longer published (booked, withdrawn or departed), or the id is wrong. Run `search_empty_legs` again. |
| `get_charter_estimate` answers "Estimate temporarily unavailable. Please try again." | The same message is returned when a place name is not recognised. Retry with a major city name or an airport code such as `KTEB`. |
## Local installer and stdio bridge (npm package coming soon)
The `skyaccess-mcp` npm package is not published yet, so `npx skyaccess-mcp` does not work today. Use the hosted endpoint above. Once published, the package will:
1. Write the SkyAccess entry into the config of supported MCP clients found on the machine (Cursor and the Claude Desktop config file), so nobody has to hand-edit JSON.
2. Provide a stdio to HTTP bridge for clients that cannot take a URL.
### Run it from a clone today
The connectivity check and the bridge already work from a clone of this repository. They need Node 20 or later and no dependencies:
```bash
git clone https://github.com/sky-access/skyaccess-mcp.git
cd skyaccess-mcp
node bin/skyaccess-mcp.mjs doctor
```
`doctor` checks the endpoint and lists its tools. It exits non-zero if the endpoint is unreachable or returns no tools.
To use the bridge with a stdio-only client such as Claude Desktop's `claude_desktop_config.json`, point it at the absolute path of your clone:
```json
{
"mcpServers": {
"skyaccess": {
"command":Lo que la gente pregunta sobre skyaccess-mcp
¿Qué es sky-access/skyaccess-mcp?
+
sky-access/skyaccess-mcp es mcp servers para el ecosistema de Claude AI. One command to add the SkyAccess private-jet empty-leg MCP server to Claude, Cursor, or any MCP client. Tiene 0 estrellas en GitHub y su última actualización registrada es del 2026-09-30.
¿Cómo se instala skyaccess-mcp?
+
Puedes instalar skyaccess-mcp clonando el repositorio (https://github.com/sky-access/skyaccess-mcp) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.
¿Es seguro usar sky-access/skyaccess-mcp?
+
Nuestro agente de seguridad ha analizado sky-access/skyaccess-mcp y le ha asignado un Trust Score de 87/100 (tier: Trusted). Revisa el desglose completo de comprobaciones superadas y flags en esta página.
¿Quién mantiene sky-access/skyaccess-mcp?
+
sky-access/skyaccess-mcp es mantenido por sky-access. La última actividad registrada en GitHub es del 2026-09-30, con 0 issues abiertos.
¿Hay alternativas a skyaccess-mcp?
+
Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.
Despliega skyaccess-mcp en tu cloud
Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.
¿Mantienes este repo? Añade un badge a tu README
Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.
[](https://claudewave.com/repo/sky-access-skyaccess-mcp)<a href="https://claudewave.com/repo/sky-access-skyaccess-mcp"><img src="https://claudewave.com/api/badge/sky-access-skyaccess-mcp" alt="Featured on ClaudeWave: sky-access/skyaccess-mcp" width="320" height="64" /></a>Más MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
The fastest path to AI-powered full stack observability, even for lean teams.