Aero Ref
FreeNot checkedMulti-server MCP agent: AeroAPI live flight data + BigQuery catalog, orchestrated with LangGraph and Ollama local inference. FastMCP · mcp-use · qwen2.5
About
Multi-server MCP agent: AeroAPI live flight data + BigQuery catalog, orchestrated with LangGraph and Ollama local inference. FastMCP · mcp-use · qwen2.5
README
Local agent + MCP demo: FlightAware AeroAPI (live airport boards) and Google BigQuery (demo airports catalog), orchestrated by mcp-use, LangGraph, and Ollama (langchain-ollama).
The Python package name is aero-ref (distribution); import path is aero_ref.
Long-form visual reference
Rendered HTML (diagrams, styling): the long-form doc is published at https://georgejinu-labs.github.io/aero-ref/ — built from docs/index.html. On GitHub’s file browser, docs/index.html opens as raw source; use the Pages URL above for a normal web page.
That page walks through a real aero-ref run: two MCP servers, LangGraph phases, token growth, max_steps, and the second-turn catalog edge case—aligned in spirit with execution.log (tool counts may differ as the demo evolves).
- Offline: open docs/index.html from a local clone in your browser (file path or drag into a window).
What a run looks like (execution.log)
execution.log is a captured trace from:
uv run .\main.py
with trace logging enabled (see Run). It shows the same pipeline you would see on the console:
Two stdio MCP sessions —
mcp_usespawnsuv run --directory <repo> src/aero_ref/flight_server.pyand.../bigquery_server.py.Cold
initializelatency — in this log, flight ~17s and BigQuery ~21s (first import + deps + optional BigQuery warmup; your machine will differ).Tool discovery — flight MCP exposes four tools; BigQuery MCP exposes two catalog tools, a tiny no-arg hint tool (
get_demo_airport_hints), an MCP resource (reference://demo-airport-hints, same text), and MCP prompts (airport-summary,compare-airports) used bymain.pywhenAGENT_USE_MCP_PROMPTS=1(default).Server Tools flightget_airport_flights,get_airport_arrivals,get_airport_departures,get_airport_flight_countsbigquerylist_demo_airports,get_demo_airport,get_demo_airport_hintsLangGraph —
ModelCallLimitMiddlewarethen model (ChatOllama → Ollama, e.g.qwen2.5:3b), then tools node issuing MCPtools/callJSON-RPC over stdin/stdout.Example dialogue — first turn: catalog lookup for KIAH plus
get_airport_flight_counts; second turn: compare airports (limited by which ICAO codes exist in your BigQueryairportstable—the log illustrates a missing catalog row and model recovery).Shutdown — sessions closed cleanly after
agent.runcompletes.
Use that file when you want line-level correlation with LangChain [chain/*], [llm/*], and mcp-use DEBUG lines.
MCP prompts (workflow templates on the server)
An MCP prompt is a pre-built workflow template registered on the MCP server (here: src/aero_ref/bigquery_server.py), not a long instruction string baked into main.py. The client calls prompts/get with a name and arguments; the returned text becomes the user message passed to agent.run(...).
Why that matters: edge-case rules (for example, “if the catalog has no row for KHOU, say so and do not substitute DFW or another hub”) live with the server, so every run gets the same guardrails without duplicating paragraphs in the driver. The same hint text is available as MCP reference://demo-airport-hints and as get_demo_airport_hints() (no arguments). Prefer the tool in LangGraph runs: mcp-use maps resource reads to LangChain tools that require a valid uri, and small models often pass invalid placeholders. Authoritative rows still come from get_demo_airport.
Defaults in main.py: with AGENT_USE_MCP_PROMPTS=1 (default), turn 1 uses prompt airport-summary (AGENT_PROMPT_ICAO, default KIAH); turn 2 uses compare-airports (SECOND_PROMPT_ICAO_A / SECOND_PROMPT_ICAO_B, default KHOU / KIAH). Set AGENT_USE_MCP_PROMPTS=0 to use plain AGENT_QUERY and SECOND_AGENT_QUERY strings instead.
Architecture (short)
| Piece | Role |
|---|---|
| main.py | Loads mcp_config.json, builds MCPClient + ChatOllama + MCPAgent, runs scripted queries (env-configurable). |
| src/aero_ref/flight_server.py | FastMCP server: AeroAPI HTTP tools (API key from env). |
| src/aero_ref/bigquery_server.py | FastMCP server: read-only BigQuery queries for the demo airports table. |
| mcp-use | Spawns servers, MCP protocol over stdio, adapts tools for LangChain. |
| LangGraph | Agent loop inside MCPAgent with step limits (AGENT_MAX_STEPS, middleware). |
Prerequisites
- uv
- Ollama running with your model pulled (default:
qwen2.5:3b) - FlightAware AeroAPI key —
FLIGHTAWARE_API_KEYorAEROAPI_KEYin.env - Google BigQuery —
BIGQUERY_PROJECTorGOOGLE_CLOUD_PROJECT, dataset/table env vars, and Application Default Credentials (e.g.gcloud auth application-default loginorGOOGLE_APPLICATION_CREDENTIALS)
Setup
cd C:\path\to\aero-ref
uv sync
Copy and edit .env at the repo root (see comments in your template). Load demo airport data when needed: scripts/load_bq_demo_tables.py and related SQL under scripts/.
BigQuery smoke test (no MCP):
uv run python scripts/test_bigquery_connection.py
Run
uv run python main.py
Optional queries (defaults are in main.py):
AGENT_USE_MCP_PROMPTS=1(default) — first/second messages from BigQuery MCP prompts; tune withAGENT_PROMPT_FIRST,AGENT_PROMPT_ICAO,SECOND_AGENT_PROMPT,SECOND_PROMPT_ICAO_A,SECOND_PROMPT_ICAO_B.AGENT_USE_MCP_PROMPTS=0— use string queries instead:AGENT_QUERY,SECOND_AGENT_QUERY
Verbose trace (similar style to execution.log):
$env:FLIGHT_BOOKING_AGENT_TRACE = "1"
uv run python main.py
(WEATHER_AGENT_TRACE=1 is also accepted for the same behavior.)
For mcp-use INFO-style logs without full LangChain verbosity: MCP_USE_DEBUG=2.
Telemetry: mcp-use may log anonymized telemetry; set MCP_USE_ANONYMIZED_TELEMETRY=false to disable.
Python 3.14: you may see a LangChain / Pydantic v1 compatibility warning; it does not stop the demo from running in typical setups.
Tests
uv run pytest
MCP config for other hosts
mcp_config.json is the source of truth for Cursor or other MCP clients. main.py rewrites --directory to the repo root at runtime so paths stay correct when you move the project.
Installing Aero Ref
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/georgejinu-labs/aero-refFAQ
Is Aero Ref MCP free?
Yes, Aero Ref MCP is free — one-click install via Unyly at no cost.
Does Aero Ref need an API key?
No, Aero Ref runs without API keys or environment variables.
Is Aero Ref hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Aero Ref in Claude Desktop, Claude Code or Cursor?
Open Aero Ref on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
wenb1n-dev/SmartDB_MCP
A universal database MCP server supporting simultaneous connections to multiple databases. It provides tools for database operations, health analysis, SQL optim
by wenb1n-devPostgres Server
This server enables interaction with PostgreSQL databases through the Model Context Protocol, optimized for the AWS Bedrock AgentCore Runtime. It provides tools
by madhurprashPostgres
Query your database in natural language
by AnthropicPostgreSQL
Read-only database access with schema inspection.
by modelcontextprotocolRedis
Interact with Redis key-value stores.
by modelcontextprotocolSQLite
Database interaction and business intelligence capabilities.
by modelcontextprotocolmxcp
Open-source framework for building enterprise-grade MCP servers using just YAML, SQL, and Python, with built-in auth, monitoring, ETL and policy enforcement.
by raw-labstadas-github/a2asearch-mcp
MCP server to search 4,800+ MCP servers, AI agents, CLI tools and agent skills. Install: npx -y a2asearch-mcp. Ask Claude: "Find MCP servers for database access
by tadas-githubjulien040/anyquery
Query more than 40 apps with one binary using SQL. It can also connect to your PostgreSQL, MySQL, or SQLite compatible database. Local-first and private by desi
by julien040drakonkat/wizzy-mcp-tmdb
A MCP server for The Movie Database API that enables AI assistants to search and retrieve movie, TV show, and person information.
by drakonkatCompare Aero Ref with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All data MCPs
