MCP Server
Connect SkyLink to any Model Context Protocol (MCP) client — Claude Desktop, Cursor, Cline, Windsurf, and others — and expose the full SkyLink v3.1 dataset as tools your model can invoke. There is no binary to deploy.
Once connected, natural-language prompts like "What's the METAR at KJFK?" or "Estimate block time from SFO to JFK on a 737" route to the correct SkyLink endpoints automatically. Your key is passed as a transport header — never embedded in prompts.
The MCP setup differs between the two channels, so pick yours:
Configuration
SkyLink's MCP server is a streamable HTTP endpoint — POST https://data.skylinkapi.com/mcp, stateless, authenticated with the same x-api-key header as the REST API. Most clients take a URL and a headers object:
{
"mcpServers": {
"skylink": {
"url": "https://data.skylinkapi.com/mcp",
"headers": { "x-api-key": "YOUR_API_KEY" }
}
}
}Replace YOUR_API_KEY with the licence key from your Polar purchase — see Getting Started.
Config fields
| Field | Value | Description |
|---|---|---|
url | https://data.skylinkapi.com/mcp | Streamable HTTP MCP endpoint |
x-api-key header | Your licence key | Authenticates tool calls against your quota |
| Client | Where to paste |
|---|---|
| Claude Desktop | Settings → Developer → Edit Config → mcpServers → restart |
| Cursor | Settings → MCP → Add MCP Server → Manual config → restart |
| Other MCP clients | Follow the client's MCP config file location — same JSON shape |
Response
MCP does not return a single REST JSON body — the server exposes tools the model can call. Each tool maps to a SkyLink endpoint. Tool invocations return structured JSON identical to the corresponding REST API responses documented in this reference.
Tools are filtered by your plan — you only ever see tools your key can call, so an assistant can't waste a turn on something your plan excludes:
| Plan | Tools visible |
|---|---|
| Basic | 46 |
| Pro | 52 (+ 90-day history) |
| Ultra / Mega | 58 (+ 365-day history) |
Tool names come from the underlying operation, for example search_airport_airports_search_get or ultra_flights_ultra_history_flights_get. Call tools/list to see the exact set your key unlocks. Requesting a tool outside your plan returns MCP error -32602: Tool <name> not found — it is never registered for your key, rather than failing at call time.
Calling directly
Your client handles the protocol, but for testing:
curl -X POST "https://data.skylinkapi.com/mcp" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'Responses are server-sent events (event: message / data: {...}).
Accept header | Must include both application/json and text/event-stream, or you get 406 |
| JSON-RPC batching | Not supported — send one request per call (400) |
GET / DELETE on /mcp | 405 Method not allowed |
| Missing API key | 401 missing_api_key |
Exact tool names and parameter schemas are listed in your MCP client after a successful connection.
Client types
"""MCP client configuration models."""from __future__ import annotationsfrom dataclasses import dataclass@dataclassclass McpHttpServerEntry: """Direct API: a streamable HTTP endpoint authenticated by header.""" url: str headers: dict[str, str]@dataclassclass McpBridgeServerEntry: """RapidAPI marketplace: the `mcp-remote` stdio bridge.""" command: str args: list[str]McpServerEntry = McpHttpServerEntry | McpBridgeServerEntry@dataclassclass McpClientConfig: mcp_servers: dict[str, McpServerEntry]Integration
The example below builds the MCP config object from environment variables so you can paste it into Claude Desktop or Cursor.
import osMCP_URL = "https://data.skylinkapi.com/mcp"def build_mcp_config(api_key: str | None = None) -> dict: """Build the MCP client config block for the SkyLink direct API.""" key = api_key or os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY") return { "mcpServers": { "skylink": { "url": MCP_URL, "headers": {"x-api-key": key}, } } }if __name__ == "__main__": import json print(json.dumps(build_mcp_config(), indent=2))Implementation notes
Key handling. Store your key in your OS keychain or .env — the MCP config references it via header, not inline in chat logs.
Important: Every MCP request counts against your plan the same as a direct REST request — including initialize and tools/list, not just tools/call. See Rate Limits.
Plan-gated tools. Historical ADS-B, webhooks, and other premium endpoints remain subject to the same plan limits as REST — the MCP layer does not bypass quotas.
Troubleshooting. If tools do not appear, verify the x-api-key header is present and the URL ends in /mcp, restart the client after editing config, and check that the tools you expect are included in your plan.
Error responses
MCP connection failures surface in the client UI (auth errors, or process exit on the stdio bridge). For HTTP errors returned inside tool results, see Error Handling — shapes match direct REST usage.
Related: Getting Started · API v3.1 Overview · Rate Limits