FlightByte MCP Server
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@FlightByte MCP ServerIs TK1848 on time today? Which gate?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Quick start
Get a free API key at app.flightbyte.dev/signup.
Connect the server. Use the hosted one, or run it locally:
Address
Key
Hosted
https://mcp.flightbyte.dev/mcpAuthorization: Bearer <key>headerLocal
npx -y @flightbyte/mcpFLIGHTBYTE_KEYenvironment variableIn Claude Code, for example:
claude mcp add --transport http flightbyte https://mcp.flightbyte.dev/mcp \ --header "Authorization: Bearer $FLIGHTBYTE_KEY"Every other client is under Install.
Ask: "Is TK1848 on time today?"
The docs tools work without a key, so an assistant can read the documentation before you have signed up.
Related MCP server: Aviation MCP Server
What you can ask
You ask | What happens |
"Is TK1848 on time today? Which gate?" |
|
"TK1 from Istanbul tomorrow: when does it leave?" | TK1 flies two legs that day. The assistant passes |
"Watch PC1001 on Friday and post every change to https://api.example.com/hooks/flights." |
|
"Our webhook stopped firing. Why?" |
|
"Add a FlightByte webhook receiver with signature verification to this Express app." |
|
Tools
Docs: no key needed.
Tool | What it does |
| Keyword search over the whole documentation: docs, API reference, guides and glossary. Returns titles, links and snippets. |
| Any docs page as Markdown, from a link or a path like |
Flights: read-only.
Tool | What it does |
| Live status of one flight leg: phase, gates, terminals, baggage belt, scheduled, estimated and actual times, delay, aircraft, codeshares, and every leg the number flies that day. |
| The same lookup with query parameters. |
| The airline's own change history for a leg, newest first. |
Subscriptions
Tool | What it does | Access |
| Watch a flight and get a signed webhook for every change. Counts as a watched flight on your plan. | writes |
| Your subscriptions, filtered by status, carrier, number or date. | read-only |
| One subscription with its status and delivery counters. | read-only |
| Change the webhook URL, event filter, delay threshold, headers or metadata. | writes |
| Stop polling and deliveries without losing anything. | writes |
| Resume a paused or auto-suspended subscription. | writes |
| Delete a subscription for good. | destructive |
| Send a signed test webhook to the subscription's URL. | writes |
| Recent delivery attempts with HTTP status and errors. | read-only |
| Recent events with the exact payloads that were sent. | read-only |
Parameters carry the API's own names (carrier, flightNumber, date, origin, webhookUrl, Idempotency-Key, …), and the test suite checks every one against the OpenAPI document. Results are the API's JSON, as text and as structured content.
Built for assistants
Your key stays yours. The local server reads
FLIGHTBYTE_KEY. The hosted server reads the key from each request's header, uses it for that request only, and never stores or logs it.Secrets stay out of the chat. There are no tools to reveal or rotate a webhook signing secret, because either would put it into the model's context and from there into transcripts.
create_subscriptionreturns the secret once, as the API does, and tells the assistant to hand it to you. Reveal or rotate secrets in the dashboard.Clients know what is safe. Read-only tools are marked read-only and
delete_subscriptionis marked destructive, so clients can ask before running it.create_subscriptiontells the model it creates a billable watched flight and should only run when you ask for one.Errors say what to do next. A flight number that flies twice comes back with its legs and "pass
origin". A429comes back with how long to wait. A402 watched_flight_limitsays to stop, when the allowance resets, and where to upgrade.Docs fetches stay on flightbyte.dev.
get_doc_pagerefuses every other host.
Install
Replace YOUR_FLIGHTBYTE_KEY with your key. Every client below can use the hosted server; the local one needs Node.js 20 or later.
Hosted:
claude mcp add --transport http flightbyte https://mcp.flightbyte.dev/mcp \
--header "Authorization: Bearer YOUR_FLIGHTBYTE_KEY"Local:
claude mcp add flightbyte --env FLIGHTBYTE_KEY=YOUR_FLIGHTBYTE_KEY \
-- npx -y @flightbyte/mcpAdd --scope user to have it in every project. To share it with a team through a committed .mcp.json, keep the key in each person's environment:
{
"mcpServers": {
"flightbyte": {
"type": "http",
"url": "https://mcp.flightbyte.dev/mcp",
"headers": { "Authorization": "Bearer ${FLIGHTBYTE_KEY}" }
}
}
}Click Add to Cursor at the top for the hosted server, or this link for the local one, then replace YOUR_FLIGHTBYTE_KEY in the installed entry. Or add it to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"flightbyte": {
"url": "https://mcp.flightbyte.dev/mcp",
"headers": { "Authorization": "Bearer YOUR_FLIGHTBYTE_KEY" }
}
}
}Local:
{
"mcpServers": {
"flightbyte": {
"command": "npx",
"args": ["-y", "@flightbyte/mcp"],
"env": { "FLIGHTBYTE_KEY": "YOUR_FLIGHTBYTE_KEY" }
}
}
}"Bearer ${env:FLIGHTBYTE_KEY}" also works, if Cursor was started from a shell that has the variable.
Click Install in VS Code at the top: VS Code asks for the key and stores it securely. Or add it to .vscode/mcp.json:
{
"inputs": [
{ "type": "promptString", "id": "flightbyte_key", "description": "FlightByte API key", "password": true }
],
"servers": {
"flightbyte": {
"type": "http",
"url": "https://mcp.flightbyte.dev/mcp",
"headers": { "Authorization": "Bearer ${input:flightbyte_key}" }
}
}
}Local, from a terminal:
code --add-mcp '{"name":"flightbyte","type":"stdio","command":"npx","args":["-y","@flightbyte/mcp"],"env":{"FLIGHTBYTE_KEY":"YOUR_FLIGHTBYTE_KEY"}}'Add the local server to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then quit and reopen Claude:
{
"mcpServers": {
"flightbyte": {
"command": "npx",
"args": ["-y", "@flightbyte/mcp"],
"env": { "FLIGHTBYTE_KEY": "YOUR_FLIGHTBYTE_KEY" }
}
}
}The hosted server can also be added under Settings → Connectors → Add custom connector with the URL https://mcp.flightbyte.dev/mcp. Sending the key needs the connector's Request headers option (authorization: Bearer YOUR_FLIGHTBYTE_KEY), which is in beta and not on every account; without it only the docs tools work, so the local server is the reliable choice here.
Streamable HTTP:
https://mcp.flightbyte.dev/mcpwith the headerAuthorization: Bearer YOUR_FLIGHTBYTE_KEY(orx-api-key: YOUR_FLIGHTBYTE_KEY).stdio: command
npx, arguments-y @flightbyte/mcp, environmentFLIGHTBYTE_KEY=YOUR_FLIGHTBYTE_KEY.
Both speak MCP 2026-07-28 and the 2025 revisions (2024-11-05 to 2025-11-25); the client's first message picks one.
Configuration
Variable | Used by | Default | Meaning |
| local | none | Your API key. Without it the API tools explain how to set one and the docs tools still work. The hosted server ignores it and reads the key from each request. |
| both |
| API base URL, e.g. |
| both |
| Docs site that serves |
| HTTP |
| Listening port. |
| HTTP |
| Listening address. |
| HTTP |
| Requests to |
| HTTP |
| How many reverse proxies' |
| HTTP | loopback names on a loopback | Comma-separated |
Self-hosting
The hosted server is this repository's Dockerfile: a stateless Streamable HTTP server with no database and no secrets of its own.
docker build -t flightbyte-mcp .
docker run -p 8080:8080 flightbyte-mcpIt serves POST /mcp and GET /healthz. Each request gets a fresh server bound to the key in its headers; responses are plain JSON with no sessions, so it scales to any number of replicas. Requests in the 2026-07-28 format are served by the SDK's per-request handler, and 2025-era requests by a JSON-mode Streamable HTTP transport. Deployment notes for Dokploy are in DEPLOY.md.
Development
Running the server needs Node.js 20 or later; developing it needs 22.12 or later.
npm install
npm run build # TypeScript → dist/
npm test # builds, then runs everything against a local mock of the API and docs
npm run typecheck
npm run lintThe tests never touch the real API and need no key. They cover every tool's request mapping, the error mapping, docs parsing and ranking, and both transports end to end: the built dist/stdio.js and dist/http.js are spawned and driven by MCP clients on protocol 2025-11-25 and 2026-07-28, including one built on the v1 SDK. A drift check fails when a tool's parameter names, locations, required fields or enums stop matching spec/openapi.json, a copy of the public OpenAPI document. When the API changes:
npm run sync:openapi
npm testTry it by hand with the MCP Inspector, or against a local API:
npx @modelcontextprotocol/inspector node dist/stdio.jsFLIGHTBYTE_API_URL=http://localhost:3000/v1 FLIGHTBYTE_KEY=your-local-key node dist/stdio.jssrc/
stdio.ts bin entry: stdio transport, key from FLIGHTBYTE_KEY
http.ts HTTP entry: POST /mcp, GET /healthz, env config
http-app.ts request handling, protocol routing, key extraction, per-IP rate limit
server.ts createServer(): registers every tool on an McpServer
tools/api-tools.ts the 13 API tools, one definition per OpenAPI operation
tools/docs-tools.ts search_docs and get_doc_page
docs.ts llms-full.txt parsing, ranking, caching, page fetches
api.ts fetch wrapper for the REST API
errors.ts error envelope → tool error with next steps
spec/openapi.json copy of the public OpenAPI document (npm run sync:openapi)
server.json MCP Registry entry: the npm package and the hosted remoteBump
versioninpackage.jsonand in both places inserver.json; a test fails if they differ.npm publish. It runs typecheck, lint and tests first, and publishes publicly under the@flightbytescope.Publish
server.jsonto the MCP Registry:mcp-publisher login dns --domain flightbyte.dev …, thenmcp-publisher publish.Redeploy the Docker image behind
mcp.flightbyte.dev.
License
Related MCP Connectors
Aircraft intelligence for AI agents: valuations with uncertainty bands, FAA registry lookups, cost of ownership, comparable aircraft, fleet search, airworthiness directives and STCs, market metrics and forecasts, verified value reports, pre-buy diligence checklists, logbook search and a watchlist. 38 tools; free tier with OAuth or a Windsock API key.
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
Pay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.
Flight search MCP server providing search, pagination, and itinerary details for AI assistants.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides comprehensive flight tracking capabilities using the OpenSky Network API, enabling real-time flight data, geographic searches, historical data, and airport operations through MCP tools.MIT
- AlicenseAqualityCmaintenanceMCP server giving AI agents access to real-time aviation data — live flight tracking, airport weather, airline and airport information.1018 PyPI3MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to query flight routes, real-time flight tracking, weather, and transfer flights via standardized MCP tools.10MIT

AirLabs MCP Serverofficial
AlicenseAqualityDmaintenanceProvides AI assistants with access to real-time flight data, airport schedules, delays, and aviation reference databases through natural language queries.12160 npmMIT