Skip to main content
Glama

MCP Flight Search

An MCP server that searches Google Flights through SerpApi, for Claude, Cursor and other MCP clients. One-way and round-trip searches by IATA airport code, with prices, durations, stops and times.

CI PyPI

Requirements

  • Python 3.10 or later (or uv)

  • A SerpApi key in SERP_API_KEY (serpapi.com has a free tier)

Related MCP server: Google-Flights-MCP-Server

Use it from an MCP client

Add it to your client's MCP configuration (Claude Desktop, Claude Code, Cursor, ...):

{
  "mcpServers": {
    "flight-search": {
      "command": "uvx",
      "args": ["mcp-flight-search"],
      "env": { "SERP_API_KEY": "your-serpapi-key" }
    }
  }
}

Or install it with pip install mcp-flight-search and use "command": "mcp-flight-search".

Run it yourself

export SERP_API_KEY="your-serpapi-key"
mcp-flight-search                                    # stdio (default)
mcp-flight-search --connection_type http --port 3001 # Streamable HTTP at http://127.0.0.1:3001/mcp

LOG_LEVEL=DEBUG shows more detail on stderr. The API key is never logged.

With Docker:

docker build -t mcp-flight-search .
docker run -i --rm -e SERP_API_KEY=your-serpapi-key mcp-flight-search

Tools

Tool

What it does

search_flights_tool

Flights between two airports. origin, destination: IATA codes such as ATL, LAX. outbound_date: YYYY-MM-DD. return_date (optional): YYYY-MM-DD for a round trip. Returns structured results: airline, price (USD), duration, stops, departure, arrival, cabin class.

server_status

Checks the server is running and reports its version.

Development

uv sync
uv run pytest
uv run ruff check .

License

MIT

Available Tools

2 tools
search_flights_toolSearch flightsA
Read-only

Search Google Flights for one-way or round-trip flights between two airports.

NameRequiredDescriptionDefault
originYesIATA airport code, such as JFK or LAX
destinationYesIATA airport code, such as JFK or LAX
return_dateNoReturn date for a round trip, YYYY-MM-DD
outbound_dateYesDeparture date, YYYY-MM-DD

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile and external-service nature are covered. The description adds that it queries Google Flights and supports round trips, but says nothing about result volume, rate limits, caching, or failure modes for a live external search.

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?

A single front-loaded sentence with no filler, stating the action, provider, and trip types before any detail. Every clause earns its place for a tool of this simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and annotations cover safety and openness; the schema fully documents all four parameters. The only real gap is the absence of usage context, so the definition is nearly but not fully complete.

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 100%, with each parameter fully documented (IATA codes with patterns, date formats, return_date defaulting to null). The description's 'one-way or round-trip' phrasing hints at how return_date is used but adds no format or syntax detail beyond the schema, so the baseline 3 applies.

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?

The description names a specific verb ('Search'), a specific resource ('Google Flights'), and the supported trip shapes ('one-way or round-trip flights between two airports'). It is far more specific than a tautology, though it does not explicitly distinguish itself from any alternative since the only sibling (server_status) is unrelated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'search flights' plus the required origin/destination/outbound_date schema makes the intent obvious, but the description never states when to use this tool, when not to, or any prerequisites. There is no competing sibling to route against, so the omission is low-impact.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

server_statusServer statusA
Read-only

Check that the flight search server is running.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered and the description only needs to add context. It adds that this probes the flight search server specifically, but says nothing about what a failed check looks like or how results should be interpreted beyond the output schema.

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?

A single front-loaded sentence with no filler, perfectly sized for a no-argument probe. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't explain return values, and a zero-param health check needs little more. The only mild gap is not indicating how to act on a negative result (retry, abort, report).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The empty schema plus the sentence leaves no ambiguity about invocation.

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 ('Check') and a precise resource ('the flight search server is running'), which is a health/liveness probe rather than a search — clearly distinct in kind from search_flights_tool. It doesn't explicitly name the sibling, but the action and object are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

For a zero-parameter health check the intended usage is largely self-evident, so guidance is implied rather than stated. It never says when to call it (before a search? on error?) or that there are no alternatives, leaving the agent to infer context.

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. 2 tool updates
    • First observedsearch_flights_tool
    • First observedserver_status

TDQS

A3.6/5.0

Scored across 2 tools

Disambiguation5/5

The two tools serve entirely distinct purposes: one performs a flight search, the other reports server health. There is no plausible way to confuse them, and the descriptions make the boundary explicit.

Naming Consistency3/5

Both names are snake_case, but the convention is inconsistent: 'search_flights_tool' uses a redundant '_tool' suffix and a verb_verb_noun shape, while 'server_status' is a plain noun phrase. Readable, but the pattern isn't predictable.

Tool Count3/5

Two tools is thin for a flight search server; the health-check tool arguably doesn't earn a slot as a first-class tool. It's a borderline-surface rather than an extreme mismatch.

Completeness3/5

Flight search is covered, but obvious adjacent operations are absent: airport/location lookup, date-range or fare-calendar search, multi-city itineraries, and filtering/sorting of results. An agent can do the core task but will hit dead ends on common follow-ups.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that connects to Amadeus API, enabling AI assistants to search flights, analyze prices, find best travel deals, and plan multi-city trips.
    4 npm
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables flight searching, booking, and payment processing. It also provides access to resources like user profiles, pricing rules, and company travel policies.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An interactive travel planning server that integrates flight searching, weather forecasting, and route calculation through external APIs like Amadeus and OpenWeather. It uses the Model Context Protocol to enable AI assistants to autonomously manage travel logistics and discover local services.
    -