waypoint-airports
Allows AI clients to query the Waypoint FastAPI airport service for departure and destination airport suggestions, with optional result limits and scheduled-service filtering.
Click 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., "@waypoint-airportsfind airports near Cairo and compare them with Paris for my trip"
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.
Find the right airport. Start anywhere.
Discover departure and destination airports by city, country, airport name, or code — powered by open data, with no API key required.
Features · Quick start · API · Docker · MCP
✨ Features
Capability | What it does | |
🌍 | Global airport search | Find airports by city, country, airport name, IATA code, or ICAO code. |
🧭 | Trip suggestions | Compare departure and destination airport shortlists side by side. |
📍 | Nearby airports | Discover airports within a radius of any latitude/longitude. |
🗺️ | Interactive dashboard | Explore airport cards, useful stats, and a map in Streamlit. |
⚡ | FastAPI service | A documented REST API with validation and interactive Swagger docs. |
🤖 | MCP-ready | Let compatible AI clients ask Waypoint for airport suggestions. |
🔓 | No API key | Starts with free, openly licensed airport data from OurAirports. |
Data, not flight bookings: Waypoint finds airports. It does not provide live flights, schedules, fares, or route availability.
Related MCP server: Travel Assistant MCP
🚀 Quick start
Requirements: Python 3.11+ and Node.js 20.6+ (only needed for the MCP server).
# 1. Create and activate a virtual environment
python -m venv .venv
.\.venv\Scripts\Activate.ps1
# 2. Install the API and dashboard
python -m pip install -r requirements.txt
# 3. Start the API
uvicorn app.main:app --reloadOpen a second terminal in the project directory:
.\.venv\Scripts\Activate.ps1
streamlit run frontend/Home.pyService | Local address |
Waypoint dashboard | |
Interactive API docs | |
Alternative API docs |
On its first request, the API downloads the OurAirports dataset to data/airports.csv and keeps a local copy, refreshed every 24 hours. An internet connection is needed for the initial download.
🌐 API
Compare a trip
POST /trips/suggest
Content-Type: application/json{
"origin": "Cairo",
"destination": "Paris",
"limit": 5,
"scheduled_only": true
}Search airports
GET /airports/search?q=Cairo&limit=10&scheduled_only=trueFind nearby airports
GET /airports/nearby?lat=30.0444&lon=31.2357&radius_km=100&limit=10Check data status or refresh the dataset
GET /health
GET /meta
POST /admin/refresh🐳 Docker
With Docker Desktop installed, start the API and dashboard together:
docker compose up --buildVisit localhost:8501 for the dashboard or localhost:8000/docs for the API. Docker Compose stores the downloaded airport dataset in a named volume.
Stop the services with Ctrl+C, then run:
docker compose down🤖 MCP integration
Build the MCP server:
npm ci
npm run buildStart the FastAPI service, then add this server to your MCP client's configuration (replace the example path with your project path):
{
"mcpServers": {
"waypoint-airports": {
"command": "node",
"args": ["C:\\path\\to\\waypoint-airport-finder\\dist\\index.js"],
"env": {
"AIRPORT_API_URL": "http://127.0.0.1:8000"
}
}
}
}The suggest_travel_airports tool accepts an origin, destination, an optional result limit, and a scheduledOnly filter. Only airports with scheduled passenger service are returned by default. The API must remain running while you use MCP.
⚙️ Configuration
No secrets or API keys are needed. To customize the local settings, copy .env.example to .env:
AIRPORT_API_URL=http://127.0.0.1:8000
AIRPORT_DATA_DIR=./dataVariable | Purpose |
| FastAPI address used by the Streamlit dashboard and MCP client. |
| Local folder used to cache the airport dataset. |
| Comma-separated browser origins permitted by the API. |
🧑💻 Development
# Python tests
python -m unittest discover -s tests -v
# Build the TypeScript MCP server
npm ci
npm run buildGitHub Actions runs the Python suite and MCP build on each push and pull request.
📚 Airport data
Airport records are sourced from OurAirports and distributed under CC0 1.0. Please keep this attribution when redistributing the data.
Made for smoother journeys. ✈️ Back to top ↑
Available Tools
1 toolsuggest_travel_airportsB
Suggest nearby departure and destination airports using the local Open Airports dataset.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| origin | Yes | Departure city, region, or airport | |
| destination | Yes | Destination city, region, or airport | |
| scheduledOnly | No | Only include airports with scheduled passenger service |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It discloses that results come from the local Open Airports dataset, suggesting an offline/read-only operation, but says nothing about ordering, result fields, rate limits, or auth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single front-loaded sentence with no filler. It is appropriately sized for a simple lookup tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only suggestion tool with no output schema and no annotations, the description states the core output (airport suggestions) but omits return shape, ranking, and parameter behavior. It is minimally sufficient for invocation but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and the schema descriptions for origin, destination, and scheduledOnly document most inputs. The tool description reinforces 'departure and destination' but adds no syntax, format, or limit/scheduledOnly semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Suggest') and resource ('nearby departure and destination airports') plus the data source. With no sibling tools to distinguish from, it is clear but not required to differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance, no prerequisites, and no alternatives named. The travel-planning context is only implied by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v2.0.0- First observed
suggest_travel_airports
TDQS
Scored across 1 tool
With only a single tool, there is no possibility of confusing it with another tool in the set. Its purpose is unambiguous.
suggest_travel_airports follows a clear verb_noun snake_case convention, but with only one tool there is no pattern to demonstrate consistency against.
A single tool is thin for a server, though it matches a narrow, single-purpose scope of suggesting airports. It borders on under-scoped.
The tool covers the core suggestion action, but there is no way to look up airport details, list airports, or retrieve metadata, leaving notable gaps for a broader airport domain.
Maintenance
Related MCP Connectors
Your personal AI travel concierge — flights, hotels, 116M+ POIs, visas, weather & more
Search award flights and cash fares, optimize points, and predict fares inside ChatGPT and Claude.
Read-only airport delay, weather, and 24h forecast tools for AI assistants. Airport-level only.
Personal AI travel agent. Points optimization, live flight/hotel/award search, trip planning.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables flight planning and aviation operations through intelligent airport resolution, great-circle route calculation, and aircraft performance estimation. Supports 28,000+ airports worldwide and 190+ aircraft types for comprehensive flight planning via natural language.12464MIT
- AlicenseAqualityBmaintenanceEnables travel search workflows including airport lookup, route comparison, travel timing guidance, and external booking links with commission-eligible links.579 npm1MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to query airport information and calculate Great Circle distances between global airports using IATA codes, following the FFP industry standard in statute miles.-

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