# Aviasales MCP > Thirteen read-only MCP tools for Claude Code, Claude Desktop and Cursor: fares by route and month, cheapest day, flexible dates, airport lookup. Source code: https://github.com/stufently/aviasales-mcp License: GPL-3.0-or-later - Flight prices: fares by route on a date or across a month, the cheapest day to fly and prices for the days around your dates. - Budget and inspiration search: cheapest destinations from a city and flights inside a budget, even with no destination. - Place names resolve to IATA codes: lookup_cities and find_nearest_airports, ranked by great-circle distance with no third-party geocoder. - All thirteen tools only read: none books, buys, writes or changes anything. - Booking links carry adults, children, infants and cabin class; every price response has a min/median/max price_summary. - Runs as a Docker image, from PyPI with uvx, or as a one-click .mcpb for Claude Desktop; optional streamable-HTTP with a bearer token. ## Documentation - [aviasales-mcp](https://stufently.github.io/aviasales-mcp/docs/): MCP server for flight price search via Aviasales / Travelpayouts Data API. Thirteen read-only tools that let Claude Code, Claude Desktop, Cursor or any… ### How do I install Aviasales MCP? Run the Docker image ghcr.io/stufently/aviasales-mcp:latest with AVIASALES_API_TOKEN in the environment, or without Docker run uvx aviasales-mcp (Python 3.12+). The README has ready configs for Claude Code, Claude Desktop, Cursor, Windsurf, Zed and Codex. ### Which token do I need? A free Travelpayouts API token from travelpayouts.com/programs/100/tools/api. A wrong or missing token still lets the process start; it surfaces as an error on the first search. ### Are the prices live? No. The Data API serves a cache of recent searches, not live availability. A fare can be gone by the time the link opens, and an empty result means nobody searched that route recently, not that the route does not exist. ### Do prices include all passengers and the cabin class? No. Prices are always per adult in economy. Passenger count and cabin class are encoded into each ticket's booking_link, which opens Aviasales with the full party pre-filled and shows the real total. ### Can it book or buy tickets? No. The server searches and links out; it never holds or buys a ticket. All thirteen tools are read-only. ### Why does AVIASALES_MARKET matter? The price cache is per market: the same route in the same currency comes back at a different price for ru and us. Unset, the server reads the ru market. ## Optional - [Full text of all docs](https://stufently.github.io/aviasales-mcp/llms-full.txt)