Flywizz
概要
作者による説明(英語の原文)
Search Wizz Air flights from your AI agent. Unofficial.
PopNx MCPの3つの柱
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
- 利用者の声iレビューはまだありませんレビューは今後のステップで、アカウント機能と一緒に始まります
- 私たちの基本チェックi1項目中1項目に合格公開情報からチェック。コードはまだスキャンしていません
- 利用状況iとても新しい↓ 175/週 · ★ –
できること
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
- 接続方法: パソコンで動く
- トランスポート: stdio
- カテゴリ: 旅行・地図・天気
インストール
使っているAIアプリを選んで、設定をコピーしてください。
インストールの前に
- 基本チェック:1項目中1項目に合格
- あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
- レジストリには、入力が必要なキーは載っていません。
必要なもの
- PyPIPythonのuvのインストール(uvxコマンドに必要)
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"flywizz": {
"command": "uvx",
"args": [
"Flywizz"
]
}
}
}ターミナルでこれを実行します
claude mcp add flywizz -- uvx Flywizzまたは、設定を自分でコピーする
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"flywizz": {
"command": "uvx",
"args": [
"Flywizz"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
または、設定を自分でコピーする
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"flywizz": {
"type": "stdio",
"command": "uvx",
"args": [
"Flywizz"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
できること
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
基本チェックi
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月10日にチェック
- ✓ 合格
作者とリポジトリが一致
レジストリ名は、リポジトリを所有するGitHubアカウント victorlane で確認済みです
- … 未チェック
今もメンテナンスされている
このリポジトリはまだGitHubから読み取っていません
- … 未チェック
ライセンスがある
このリポジトリはまだGitHubから読み取っていません
- – 対象外
エンドポイントが応答する
これはパソコンで動くため、インターネット上のエンドポイントはありません
- – 対象外
OAuthでサインイン
パソコンで動き、代わりにローカルの設定を使います
- … 未チェック
ツールの説明に隠れた指示がない
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
旅行・地図・天気のほかのサーバーとの比較i
- このカテゴリのほかの1784件のうち0%よりスターが多い
- このカテゴリのほかの1784件のうち29%より最近レジストリに公開
- 基本チェックの結果が、このカテゴリのほかの1784件のうち100%と同じかそれ以上
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
よくある質問
Flywizzは安全ですか?
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
どんなキーやコードが必要ですか?
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
パソコンで動きますか、それともクラウドですか?
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
今もメンテナンスされていますか?
GitHubリポジトリの最終更新は–、最新バージョン(0.1.0)がレジストリに届いたのは2 か月前です。
どのアプリで使えますか?
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
代わりに使えるものは?
同じカテゴリには:Warcraft III Map Tools, Flightdata, GeoSpark
代わりの候補
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Flightdata
Google Flights search as JSON: itineraries, prices, times, stops and emissions filters.
GeoSpark
Verifiable geospatial tools: distances, topology, isochrones, Overture Maps, with sources.
作者のREADME
READMEを開く
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Flywizz SDK
An open-source unofficial API wrapper to get flight data from Wizz Air.
[!TIP]
MCP server for AI agents included. Plug Flywizz into Claude Desktop,
Claude Code, or Cursor and search Wizz Air flights in natural language.
Jump to the MCP Quickstart.
Contents
- Installation
- Quick Start
- Three things to know first
- API Reference
- Data Models
- Examples
- Checking many routes at once
- Flights that need a connection
- Explore Mode
- Use with Claude, Cursor, and other MCP clients
- API characteristics
- Caching
- Rate Limiting
- Contributing
- Disclaimer
Installation
pip install Flywizz
Or using uv:
uv add Flywizz
Quick Start
from datetime import datetime, timedelta
from flywizz import WizzAir, TimetableSearch
Initialize the client
client = WizzAir()
Set up search parameters
search = TimetableSearch( origin="BUD", # Budapest destination="LTN", # London Luton date_from=datetime.now() + timedelta(days=30), date_to=datetime.now() + timedelta(days=60), )
One call gets the schedule and the prices
for day in client.get_timetable(search): if day.price is None: continue print(f"{day.departure_date.date()}: {day.price.amount} {day.price.currency}") print(f" departures: {', '.join(d.departure.strftime('%H:%M') for d in day.departures)}")
Each entry is one operating day: the cheapest fare that day, plus every departure time, so a single call answers both "when does it fly" and "what does it cost".
Three things to know first
Prices are in the departure station's currency
Wizz Air has no server-side currency override. BUD -> LTN quotes in HUF, LTN -> BUD quotes in GBP, WAW -> LTN in PLN. Body fields, query params, cookies and headers named currency are all ignored.
Read Station.currency_code from get_network() if you need to know which currency you'll get before you search, and convert client-side.
Not every operating day carries a price
timetableV2 and farechart attach a price object to every day, but on days they will not quote inline, the amount is 0 and price_type is either checkPrice (a fare exists, but only through search/search) or noData. Flywizz maps both to price=None, so an unpriced day is never mistaken for a free one. Timetable entries still expose the indicative fare through original_price:
for day in client.get_timetable(search):
if day.price is not None: print(day.departure_date.date(), day.price.amount, day.price.currency) elif day.original_price is not None: print(day.departure_date.date(), "~", day.original_price.amount, "(check price)")
Search windows are capped, and the caps differ
Priced and unpriced surfaces disagree about how far ahead you may look. Both reject a wider window with 400 InvalidTimeDateRange and no further explanation, so Flywizz enforces each limit itself, in a message that names it.
from flywizz.misc import (
MAX_TIMETABLE_WINDOW_DAYS, # 42, for timetableV2 and farechart MAX_FLIGHT_DATES_WINDOW_DAYS, # 62, for the schedule endpoints )
cheapest_weekend() splits the range internally, since its default of months_ahead=3 far exceeds either cap.
search/search is behind a bot gate
Four endpoints (search/search, booking/seatmap, booking/ancillaries, booking/passengers) sit behind Kasada and answer 429 with an empty body from any non-browser client. Flywizz raises BotGateError rather than trying to solve the challenge.
Everything else, including the priced timetableV2 and farechart surfaces, is open. That is enough for price tracking, route exploration and calendar search. If you need fare bundles and sell keys, drive a real browser session and pass its headers in:
from flywizz import WizzAir, WizzairTransport
client = WizzAir(WizzairTransport(kasada_headers={ "x-kpsdk-ct": "...", "x-kpsdk-v": "...", "x-kpsdk-h": "...", "x-kpsdk-cd": "...", }))
Full details of the gate, the session handshake, and the whole route table are in docs/internal-api-spec.md.
API Reference
WizzAir Class
Constructor
WizzAir(transport: Optional[Transport] = None)
Creates a new Wizz Air client instance.
Parameters:
transport(Transport, optional): Inject a custom transport, e.g. aCachingTransportwrapping the default, aWizzairTransportwithkasada_headers, or a fixture transport for tests. Defaults to a freshWizzairTransport.
Example:
# Defaults
client = WizzAir()
With caching for the 650 KB network metadata
from flywizz import CachingTransport, WizzairTransport client = WizzAir(CachingTransport(WizzairTransport(), ttl=3600))
Methods
| Method | Endpoint | What it gives you |
|---|---|---|
get_network(language="en-gb") | asset/map | Every station, its coordinates, currency, and connections |
get_destinations(origin, direct_only=True) | derived | Stations reachable from origin |
explore_by_country(origin) | derived | Destinations grouped by country code |
validate_route(origin, destination) | derived | Does Wizz Air fly this route direct |
get_flight_dates(origin, destination, date_from, date_to) | search/flightDates | Operating days, no prices, very cheap |
get_flight_dates_multi(origin, destinations, date_from, date_to) | search/FlightDatesMultiArrival | Operating days for up to 5 destinations per request, batched |
get_connecting_flight_dates(origin, destination, date_from, date_to) | search/dohopFlightDates | Operating days including one-stop connections |
get_timetable(params) | search/timetableV2 | Cheapest fare per day, plus every departure |
get_return_timetable(params) | search/timetableV2 | Outbound and inbound in one call |
get_fare_chart(params) | asset/farechart | Price strip around a target date |
get_availability(params) | search/search | Fare bundles and sell keys. Bot-gated |
cheapest_in_month(origin, destination, month) | derived | Cheapest day in a calendar month |
cheapest_weekend(origin, destination, months_ahead=3) | derived | Cheapest Fri-Sun or Fri-Mon return |
explore_with_fares(origin, date_from, date_to, limit=None) | derived | Every destination with its cheapest fare |
get_flight_status(carrier_code, flight_number, date=None) | asset/flightinformation | Live status for one flight number |
get_currencies() | asset/currencies | Supported ISO 4217 codes |
get_countries() | asset/country | Countries with EU / Schengen flags |
get_cultures() | asset/cultures | Site languages and their currencies |
get_service_fees(currencies=None) | asset/serviceFees | Published baggage, seat and change fees |
get_wdc_prices() | asset/wdcPrice | Discount Club tiers and minimum discounts |
Every method exists on AsyncWizzAir with the same signature.
TimetableSearch Class
Parameters for a timetable search.
TimetableSearch(
origin: str, destination: str, date_from: datetime, date_to: datetime, return_date_from: Optional[datetime] = None, return_date_to: Optional[datetime] = None, adults: int = 1, children: int = 0, infants: int = 0, price_type: str = "regular", )
Parameters:
origin(str): IATA code of the departure station (e.g."BUD")destination(str): IATA code of the arrival station (e.g."LTN")date_from(datetime): Start of the outbound departure windowdate_to(datetime): End of the outbound departure windowreturn_date_from/return_date_to(datetime, optional): Inbound window. Both are required byget_return_timetable()adults/children/infants(int): Passenger counts. At least one adultprice_type(str):"regular"or"wdc"for Wizz Discount Club pricing
FareChartSearch Class
Parameters for the price strip.
FareChartSearch(
origin: str, destination: str, date: datetime, day_interval: int = 3, adults: int = 1, children: int = 0, infants: int = 0, price_type: str = "regular", )
day_interval is the half-window around date and must be at least 3, so the default returns seven days. Smaller values are rejected upstream with DayIntervalMustBeGreaterOrEqualTo3.
AvailabilitySearch Class
Parameters for the bot-gated availability call.
AvailabilitySearch(
origin: str, destination: str, departure_date: datetime, return_date: Optional[datetime] = None, wdc: bool = True, is_flight_change: bool = False, adults: int = 1, children: int = 0, infants: int = 0, )
Data Models
Price
Represents a money amount as Wizz Air reports it.
Attributes:
amount(float): The amountcurrency(str): ISO 4217 code, always the departure station's currencyexchanged_amount(Optional[float]): The SPA's client-side conversion hook. StaysNonefor anonymous sessionsexchanged_currency(Optional[str]): Currency ofexchanged_amount
TimetableEntry
One operating day for a route, with its cheapest fare.
Attributes:
departure_station(str),arrival_station(str): IATA codesdeparture_date(datetime): The operating dayprice(Optional[Price]): Cheapest fare that day,Noneif sold outoriginal_price(Optional[Price]): Pre-discount pricedepartures(list[Departure]): Every departure that dayprice_type(Optional[str]):"price"when there was inventoryhas_mac_flight(bool): The route includes a metropolitan-area alternativeapplied_coupon_code(Optional[str])
Departure
Attributes:
departure(datetime): Departure timeis_cheapest_of_the_day(bool): This is the departurepricerefers to
FlightDate
One operating day from get_connecting_flight_dates().
Attributes:
date(datetime): The operating daystops(int): 0 for a direct flight, 1 or more for a connectionis_direct(bool): Property, true whenstopsis 0
FareChartEntry
One day of the price strip.
Attributes:
departure_station(str),arrival_station(str): IATA codesday(datetime): The dayprice(Optional[Price]): Cheapest price that dayclass_of_service(Optional[str]): Booking class the quote came fromprice_type(Optional[str]),has_mac_flight(bool)
Station
An airport in Wizz Air's live network. Returned by the explore methods.
Attributes:
iata(str): IATA station codename(str): Station namecountry_code(str): Uppercase ISO2 country code (e.g."HU","GB")country_name(str): Country namecurrency_code(str): Local cu
冒頭だけを表示しています。続きはリポジトリで読めます