Skip to main content
Glama

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.

CI Python FastAPI Streamlit MCP License

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 --reload

Open a second terminal in the project directory:

.\.venv\Scripts\Activate.ps1
streamlit run frontend/Home.py

Service

Local address

Waypoint dashboard

http://localhost:8501

Interactive API docs

http://localhost:8000/docs

Alternative API docs

http://localhost:8000/redoc

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=true

Find nearby airports

GET /airports/nearby?lat=30.0444&lon=31.2357&radius_km=100&limit=10

Check 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 --build

Visit 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 build

Start 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=./data

Variable

Purpose

AIRPORT_API_URL

FastAPI address used by the Streamlit dashboard and MCP client.

AIRPORT_DATA_DIR

Local folder used to cache the airport dataset.

CORS_ORIGINS

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 build

GitHub 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 tool
suggest_travel_airportsB

Suggest nearby departure and destination airports using the local Open Airports dataset.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
originYesDeparture city, region, or airport
destinationYesDestination city, region, or airport
scheduledOnlyNoOnly include airports with scheduled passenger service

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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. 1 tool updatev2.0.0
    • First observedsuggest_travel_airports

TDQS

B3.4/5.0

Scored across 1 tool

Disambiguation5/5

With only a single tool, there is no possibility of confusing it with another tool in the set. Its purpose is unambiguous.

Naming Consistency4/5

suggest_travel_airports follows a clear verb_noun snake_case convention, but with only one tool there is no pattern to demonstrate consistency against.

Tool Count3/5

A single tool is thin for a server, though it matches a narrow, single-purpose scope of suggesting airports. It borders on under-scoped.

Completeness3/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    Enables 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.
    12
    46
    4
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    -
  • A
    license
    A
    quality
    D
    maintenance
    Provides AI assistants with access to real-time flight data, airport schedules, delays, and aviation reference databases through natural language queries.
    12
    181 npm
    MIT