mcpField
M
MolTravel

MolTravel

リモート
github.com/navifare地図・旅行06 週間前に更新
リポジトリ

MolTravel について

MolTravelは、旅行者や旅行計画エージェント向けに検索機能と旅行データをまとめるMCPサーバーです。旅行サービスのツールを中継し、空港、ビザ、渡航情報のデータも提供します。

主な機能

  1. 01フライト検索と料金比較
  2. 02アクティビティと体験の検索
  3. 03空港と航空会社の検索
  4. 04ビザと国情報の確認
  5. 05渡航安全情報
  6. 06任意の自然言語ルーティング

活用シーン

  1. 01予約サイト間でフライト料金を比較
  2. 02アクティビティを探して日付別の空き状況を確認
  3. 03空港情報とビザ要件を調べる
  4. 04渡航先の注意情報を確認

MCP 対応

単一のMCPエンドポイントを通じて、上流の旅行関連MCPサービスのツールとネイティブツールを公開します。クライアントには上流ツールのスキーマが提示され、引数の検証は上流サービスが行います。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.moltravel.com/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

56
パラメーター型必須説明
querystringはい
fieldsanyいいえ
search_bystringいいえ

詳細

MoltTravel

1つのMCPサーバーで、あらゆる旅行ツールを利用できます。

フライトの検索、価格の比較、ビザの確認、空港の検索、
渡航情報の確認を、単一のエンドポイントから行えます。

MCP Protocol Python 3.12+ License: MIT


  Kiwi.com    Navifare     Peek.com    LastMinute
  (flights)   (prices)   (experiences)  (flights)
      \          |           |          /
       \         |           |         /
        +--------+-----------+--------+
        |                             |
        |    MoltTravel MCP Server    |
        |                             |
        |  Airports  Airlines  Visas  |
        |  Countries  FCDO  Gemini AI |
        |                             |
        +-------------|---------------+
                      |
               MCP over HTTP
                      |
              Any MCP Client
        (Claude, Cursor, your app)

なぜ?

旅行データは多数のAPIに分散しており、それぞれ認証方法や形式、固有の仕様が異なります。MoltTravelは、これらを単一のModel Context Protocolエンドポイントに集約します。

  • 21種類以上のツール:4つの上流MCPプロバイダーと6つの組み込みデータセットから提供
  • 静的データは設定不要:空港、航空会社、ビザのデータはAPIキーなしで遅延読み込みされます
  • スキーマをそのまま透過するプロキシ:クライアントには実際の上流JSON Schemaが表示され、引数は上流サーバーが検証します
  • Claude Desktop、Claude Code、Cursor、その他のMCPクライアントから1行で接続できます

クイックスタート

git clone https://github.com/navifare/moltravel-mcp.git
cd moltravel-mcp
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python molttravel_server.py

サーバーは http://localhost:8000/mcp で起動します。以上です。


クライアントを接続する

Claude Desktop

claude_desktop_config.jsonに追加します:

{
  "mcpServers": {
    "molttravel": {
      "url": "http://localhost:8000/mcp"
    }
  }
}
Claude Code

.claude/settings.jsonに追加します:

{
  "mcpServers": {
    "molttravel": {
      "url": "http://localhost:8000/mcp"
    }
  }
}
Python(プログラムから利用)
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

async with streamablehttp_client("http://localhost:8000/mcp") as (r, w, _):
    async with ClientSession(r, w) as session:
        await session.initialize()
        tools = await session.list_tools()
        result = await session.call_tool("airports_lookup", {"code": "ZRH"})

ツール

フライトと料金
ツールプロバイダー機能
kiwi_search-flightKiwi.com路線、日付、乗客数、客室クラスを指定してフライトを検索します
navifare_format_flight_pricecheck_requestNavifare自然言語のフライト情報を構造化データに変換します
navifare_flight_pricecheckNavifare複数の予約サイトでフライト料金を比較します
体験とアクティビティ
ツールプロバイダー機能
peek_search_experiencesPeek.com世界中の30万件以上の認証済みアクティビティを検索します
peek_experience_detailsPeek.com体験の詳細、レビュー、写真を表示します
peek_experience_availabilityPeek.com指定した日付の空き状況と料金を確認します
peek_search_regionsPeek.com名前から地域IDを検索します
peek_list_tagsPeek.comアクティビティのカテゴリとタグを表示します
peek_render_activity_tilesPeek.com埋め込み可能なアクティビティウィジェットを表示します
参照データ (組み込み済み、APIキー不要)
ツールデータセット機能
airports_lookupOurAirportsIATAまたはICAOコードで検索します
airports_searchOurAirports名前で検索し、国または種別で絞り込みます
airports_nearOurAirports任意の座標から指定半径内の空港を検索します
airlines_lookupOpenFlightsIATAまたはICAOコードで検索します
airlines_searchOpenFlights名前で検索し、国または運航状況で絞り込みます
visa_checkPassport Index2か国間のビザ要件を確認します
visa_summaryPassport Indexパスポートに応じたビザ免除、到着時ビザ、電子ビザの詳細を表示します
restcountries_country_infoREST Countries首都、通貨、言語、タイムゾーン、人口を表示します
fcdo_travel_adviceUK FCDO安全に関する注意、入国要件、健康に関する警告を表示します
fcdo_list_countriesUK FCDO渡航情報があるすべての国を一覧表示します
data_status—読み込み済みのデータセットとレコード数を確認します
自然言語 (任意)
ツール機能
travel_agent旅行に関するあらゆる質問をすると、Geminiが適切なツールを選び、回答をまとめて返します

GEMINI_API_KEYが必要です。例:「来週、チューリッヒからローマへの最安フライトを教えて。ビザは必要ですか?」


## 仕組み
1. ツールの検出

起動時に、MoltTravel は各アップストリーム MCP サーバーに接続し、tools/list を呼び出して、検出したすべてのツールを {provider}_{tool_name} というプレフィックス付きで登録します。

kiwi       → kiwi_search-flight, kiwi_feedback-to-devs
navifare   → navifare_flight_pricecheck, navifare_format_flight_pricecheck_request
peek       → peek_search_experiences, peek_experience_details, ...
lastminute → (discovered at runtime)

ネイティブツール(空港、航空会社、ビザ、国、FCDO)は直接登録されます。

2. スキーマを透過するプロキシ

クライアントには、各ツールの元のアップストリーム JSON Schema が表示されます。列挙型、ネストされたオブジェクト、$ref など、すべてそのままです。内部では、MoltTravel は寛容な Pydantic モデル(すべてのフィールドに Any を使用)を使うため、引数は情報を失うことなくそのまま渡されます。引数の検証はアップストリーム MCP サーバーが行います。

# Client sees the real schema
parameters = input_schema          # original from upstream

# Server doesn't re-validate types — just passes through
fields[prop_name] = (Any, Field(default=None))
3. 遅延データ読み込み

静的データセット(空港、航空会社、ビザ)は、非同期ロックを使って初回使用時にダウンロードされます。起動時の負荷はなく、フライトツールしか使わない場合に帯域幅を無駄にすることもありません。


設定

変数デフォルト説明
PORT8000サーバーポート
GEMINI_API_KEY—自然言語ルーティングツール travel_agent を有効にします

デプロイ

Docker
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "molttravel_server.py"]
docker build -t molttravel .
docker run -p 8000:8000 molttravel
Render / Railway / Fly.io

サーバーは環境変数から PORT を読み取り、0.0.0.0 にバインドします。そのため、どのコンテナプラットフォームでもそのまま動作します。開始コマンドに python molttravel_server.py を指定するだけです。


プロジェクト構成

moltravel-mcp/
├── molttravel_server.py        # Server core — proxy logic, native tools, routing
├── requirements.txt            # mcp[cli], httpx
├── test_search.py              # Integration test client
└── providers/
    ├── __init__.py             # MCP_PROVIDERS registry + exports
    ├── mcp_client.py           # Generic HTTP client for upstream MCP servers
    ├── data_loader.py          # CSV downloader + haversine distance
    ├── airports.py             # 45K airports from OurAirports
    ├── airlines.py             # 7K airlines from OpenFlights
    ├── visas.py                # Visa requirements from Passport Index
    ├── restcountries.py        # REST Countries API
    ├── fcdo.py                 # UK FCDO travel advisories
    └── gemini.py               # Gemini Flash tool router

拡張

MCP プロバイダーを追加する

providers/__init__.py に1行追加して、再起動します。

MCP_PROVIDERS = {
    "kiwi": McpClient("https://mcp.kiwi.com/mcp"),
    "navifare": McpClient("https://mcp.navifare.com/mcp"),
    "peek": McpClient("https://mcp.peek.com/mcp"),
    "your_provider": McpClient("https://mcp.example.com/mcp"),  # new
}

ツールは自動的に検出され、your_provider_{tool_name} として登録されます。

ネイティブツールを追加する
@server.tool(name="my_tool")
async def my_tool(query: str) -> str:
    """Description shown to MCP clients."""
    return "result"

データソースとライセンス

データセットソースライセンス
空港OurAirportsパブリックドメイン
航空会社OpenFlightsODbL 1.0
ビザ要件Passport IndexMIT
国情報REST CountriesMPL 2.0
渡航勧告英国 FCDOOGL v3.0

コントリビューション

  1. リポジトリをフォークします
  2. ブランチを作成します(git checkout -b feature/my-feature)
  3. 変更を加えてテストします(python molttravel_server.py)
  4. プルリクエストを作成します

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。