mcpField
F
Flytoday

Flytoday

ローカル
github.com地図・旅行25 日前に更新

Flytoday について

Flytodayは、イランの旅行プラットフォームFlytodayを検索する、エージェント向けの非公式・読み取り専用MCPサーバーです。交通、宿泊、旅行関連サービスの料金や運賃条件を調べられ、予約と支払いはサイトで行います。

主な機能

  1. 01国内線と国際線を検索
  2. 02最安の旅行日を比較
  3. 03運賃規則と手荷物情報を確認
  4. 04ホテル、ヴィラ、アパートを検索
  5. 05列車とバスの便を検索
  6. 06CIP、eSIM、ビザ、アクティビティを確認

活用シーン

  1. 01航空券の料金と払い戻し条件を比較
  2. 02キャンセル条件付きのホテルを探す
  3. 03列車とバスの経路や運賃を比較
  4. 04目的地のeSIMプランやビザ要件を確認

MCP 対応

MCPクライアントに、フライト、ホテル、宿泊施設、列車、バス、旅行関連サービス向けのFlytoday読み取り専用ツールを22個公開します。予約、座席確保、支払いは行いません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"sepehr071-flytoday": {
"command": "uvx",
"args": [
"flytoday-mcp"
],
"env": {
"FLYTODAY_MCP_PROXY": "<FLYTODAY_MCP_PROXY>"
}
}
}
}
起動コマンドuvx flytoday-mcp
設定が必要な環境変数
FLYTODAY_MCP_PROXYOptional HTTP proxy URL, or a comma-separated list used one at a time (next one after a block or connect error). Only needed if your network cannot reach flytoday.ir or is rate limited. System proxy settings are ignored.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiflytoday-mcp0.3.2

ツール

22

掲載時のツール一覧 · 5 日前に更新

パラメーター型必須説明
limitintegerいいえ都市の最大数。
queryanyいいえ都市名。ペルシア文字またはラテン文字で指定します。例:'اصفهان'、'shiraz'。

詳細

flytoday-mcp:Claude、Cursor、Copilot 向けの非公式 Flytoday MCP サーバー

flytoday-mcp:AI エージェント向け Flytoday MCP サーバー

AI エージェントで、イラン国内外の Flytoday(فلای‌تودی)旅行を計画できます。
イランのオンライン旅行会社、Flytoday 向けの非公式な読み取り専用 MCP サーバーです。
Claude、Cursor、Copilot から、最安の国内線・国際線、列車・バス、運賃規則・手荷物、正確な料金がわかるホテル・ヴィラに加え、CIP ラウンジ、eSIM、ビザを確認できます。

PyPI Python CI MCP Registry License: MIT

Cursor にインストール VS Code にインストール

AI エージェント向け · 理由 · できること · クイックスタート · ツール · 知っておくと便利なこと · FAQ · 設定 · فارسی · 開発


AI エージェント向け

  • 概要: Flytoday(فلای‌تودی、flytoday.ir)向けの非公式・読み取り専用 MCP サーバー(Model Context Protocol)です。対象は、イラン国内線・国際線、イラン国内外のホテル、ヴィラやアパートメント、列車、バス、CIP ラウンジ、eSIM、ビザ、アクティビティです。ペルシャ語と英語で検索でき、料金はトマン建てです。
  • インストール: uvx flytoday-mcp または claude mcp add flytoday -- uvx flytoday-mcp。トランスポートは stdio です。Python 3.10 以降と uv が必要です。
  • 認証: 不要です。API キーもアカウントも必要ありません。ネットワークから flytoday.ir に接続できない場合、または IP がレート制限された場合に限り、任意で FLYTODAY_MCP_PROXY を指定できます(HTTP プロキシ、またはカンマ区切りのリスト)。システムのプロキシ設定は無視されます。
  • アクセス: 読み取り専用です。ログイン、座席確保、予約、支払いは行わないため、ツールを呼び出す前の確認は不要です。すべてのツールに readOnlyHint: true が付与されています。
  • ツール: 22 個あり、すべて ft_ で始まります。まず検索ツール(ft_find_airport、ft_find_hotel_place、ft_find_station、ft_find_bus_city)で ID を取得します。フライト:ft_flight_calendar → ft_search_flights → ft_flight_details。ホテル:ft_search_hotels → ft_hotel。ヴィラ:ft_search_stays → ft_stay。
  • 単位: *_toman という名前のフィールドの料金はトマン建てです(ビザと一部のアクティビティの料金は外貨建てです。price_currency を参照してください)。日付はグレゴリオ暦の YYYY-MM-DD 形式で、過去の日付は受け付けられません。search_id と fare_source_code の有効期限は約 15 分です。
  • 使用する場合: Flytoday でフライト、ホテル、ヴィラ、列車、バスを比較するとき、または CIP ラウンジ、eSIM、ビザ、アクティビティの料金を調べるとき。
  • 使用しない場合: 予約や支払いが必要なとき(ユーザーが flytoday.ir で行います)。検索は IP ごとにレート制限されるため、検索を繰り返すより、カレンダーとページングを活用してください。
  • 機械可読データ: server.json。イランの MCP サーバー全件のカタログ:iran-mcp(TOOLS.md、servers.json、llms.txt)。

利用する理由

Flytoday(flytoday.ir、فلای‌تودی)では、国内線・国際線、ホテル、ヴィラ、列車、バス、CIP ラウンジ、eSIM、ビザを取り扱っています。「どの日に、飛行機か列車かバスか、どのホテルか」を比較するには、今でも何度もページを読み込む必要があります。 flytoday-mcp を使えば、エージェントが一度に調べられます。

あなた: 10 月 20 日ごろに、テヘランからマシュハドへ行く最安の方法は?

エージェント: 次を呼び出します: ft_flight_calendar(origin="THR", destination="MHD", date="2026-10-21", window="week")、 ft_train_calendar(origin="1", destination="191")

交通手段最安日料金(トマン)
フライト2026-10-20、航空会社 IRZ11,056,700
列車2026-10-20(およびその週のほとんどの日)760,000

列車のほうがはるかに安いです。その日の列車を ft_search_trains で一覧表示しますか?

2026-10-07 時点の実際のツール出力です。料金と座席数は常に変動します。料金はトマン建てです。

できること

  • **航空券:**国内線・国際線、片道・往復、複数人分の料金、航空会社、直行便、チャーター便/システム便、時刻で絞り込み
  • **最安日:**航空券(前後15日)、列車(約16日)、バス(約6週間)
  • **運賃の詳細:**払い戻し・変更の規則、手荷物、国際線の入国に関する注意事項
  • **ホテル:**イラン国内外の料金検索、キャンセル条件付きの客室・食事プラン、宿泊者レビュー
  • **ヴィラとアパートメント:**イラン国内の宿泊施設。1泊あたり・合計料金、日ごとのカレンダーと予約不可日
  • **列車とバス:**クラス、残席数、停車地、設備、VIPバスと寝台バス
  • **その他:**IKAとMHDのCIPラウンジ、国別のeSIMデータプラン、ビザの料金と必要書類、ツアーとチケット
  • **読み取り専用設計:**ログイン、座席の仮押さえ、予約、支払いはできません

プロンプトの例:

  • 「来月、テヘランからイスタンブールへの最安日はいつですか?その運賃の払い戻し規則も教えてください。」
  • 「21日から2泊、マシュハドで無料キャンセル可能なホテルを、料金の安い順に教えてください。」
  • 「来週末、ラムサールで4人用、1泊500万トマン以下のヴィラを探してください。」
  • 「今週、テヘランからマシュハドへの最安列車と、停車駅を教えてください。」
  • 「トルコ向けのeSIMはいくらですか?ビザにはどの書類が必要ですか?」
  • ارزان‌ترین اتوبوس VIP تهران به اصفهان دوشنبه بعد؟
  • ارزان‌ترین روز برای پرواز تهران به مشهد در هفته آینده کدام است؟
  • قوانین استرداد و بار مجاز این بلیط خارجی چیست؟
  • یک ویلا در رامسر برای ۴ نفر آخر هفته زیر ۵ میلیون تومان پیدا کن.

クイックスタート

uvが必要です。APIキーやアカウントは不要です。

Claude Code
claude mcp add flytoday -- uvx flytoday-mcp

お使いのネットワークからFlytodayが応答しない場合は、プロキシを追加してください。

claude mcp add flytoday -e FLYTODAY_MCP_PROXY=http://127.0.0.1:8080 -- uvx flytoday-mcp
Claude Desktop

「設定」→「Developer」→「Edit Config」を開き、次を追加します。

{
  "mcpServers": {
    "flytoday": { "command": "uvx", "args": ["flytoday-mcp"] }
  }
}

プロキシが必要な場合は、argsの隣に"env": { "FLYTODAY_MCP_PROXY": "http://127.0.0.1:8080" }を追加してください。

Cursor

上のInstall in Cursorをクリックするか、Claude Desktopのブロックを~/.cursor/mcp.json(またはプロジェクト内の.cursor/mcp.json)に追加してください。

VS Code(Copilotエージェントモード)

上のInstall in VS Codeをクリックするか、.vscode/mcp.jsonに追加してください。

{
  "servers": {
    "flytoday": { "type": "stdio", "command": "uvx", "args": ["flytoday-mcp"] }
  }
}
Codex CLI
codex mcp add flytoday -- uvx flytoday-mcp

または、~/.codex/config.tomlに追加してください。

[mcp_servers.flytoday]
command = "uvx"
args = ["flytoday-mcp"]
Gemini CLI

~/.gemini/settings.jsonに追加してください。

{
  "mcpServers": {
    "flytoday": { "command": "uvx", "args": ["flytoday-mcp"] }
  }
}
Windsurf

Claude Desktopのブロックを~/.codeium/windsurf/mcp_config.jsonに追加してください。

その他

標準的なstdio MCPサーバーです。uvx flytoday-mcpを実行するか、pip install flytoday-mcpを実行してからflytoday-mcpを実行してください。

## ツール

各分野には、それぞれの検索ツールで取得する固有の ID があります。航空便では IATA コード(THR、MHD、IST)、ホテルでは city_id/region_code、宿泊施設では region_code、列車では駅コード(テヘランは 1、マシュハドは 191)、バスでは 4 桁の都市 ID(テヘランは 0001、イスファハンは 0002)を使用します。

航空便(4)
ツール機能
ft_find_airportイランおよび海外の都市や空港の IATA コードを検索するか、よく利用されるものを一覧表示します
ft_search_flightsフィルター、並べ替え、ページ分けに対応し、片道または往復の航空便をトマン建てで検索します。運賃の fare_source_code と search_id も返します
ft_flight_calendar指定日の前後について、出発日ごとの最安運賃を表示し、最安日を示します
ft_flight_details運賃ごとの払い戻し・変更規則、手荷物、国際線の入国に関する注意事項を返します
ホテルと宿泊施設(6)
ツール機能
ft_find_hotel_placeホテルの都市、地域、ホテル ID、およびヴィラ宿泊施設の地域コードを検索します。空欄の場合は、よく利用される場所を返します
ft_search_hotels日付を指定して、都市または地域の料金付きホテルを検索します。宿泊全体と1泊あたりのトマン建て料金、星評価、スコア、返金可否、食事情報を返します
ft_hotel1軒のホテルについて、料金、空室数、キャンセル条件付きの客室・食事プラン、客室の詳細、基本情報を返します
ft_hotel_reviewsホテルの宿泊客レビューとスコア、本文、長所、短所を返します
ft_search_staysイランのヴィラやアパートメントを日付指定で検索します。料金の安い順に、1泊あたりと合計のトマン建て料金を返します
ft_stay1軒のヴィラまたはアパートメントについて、詳細、利用不可日を含む料金カレンダー、レビューを返します
列車(4)
ツール機能
ft_find_station都市名から列車の駅コードを検索するか、よく利用される駅を一覧表示します
ft_search_trains指定日に2駅間を運行する列車について、会社、クラス、時刻、残席数、大人1人あたりの料金を返します
ft_train_calendar今後約16日間の日ごとの最安列車料金を返し、満席の日を示します
ft_train_stops列車1本の停車駅と時刻に加え、クラスの設備や食事を返します
バス(3)
ツール機能
ft_find_bus_city名前からバスの都市 ID を検索するか、よく利用される都市を一覧表示します
ft_bus_calendar今後数週間の日ごとの最安バス座席料金を返します(サイトの料金一覧)
ft_search_buses指定日に2都市間を運行するバスについて、会社、ターミナル、車種、残席数、座席あたりの料金を返します
CIP、eSIM、ビザ、アクティビティ(5)
ツール機能
ft_cipパスポートの国籍ごとに、指定日・乗客数で利用する IKA と MHD の CIP/VIP 空港ラウンジの料金と追加オプションを返します
ft_esim_plans国ごとの eSIM データプランを、データ容量(GB)、日数、トマン建て料金とともに、安い順に返します
ft_visaビザ対象国の一覧と最低料金、または1か国の料金、必要書類、処理時間を返します
ft_activities目的地のツアー、チケット、アクティビティを、日付範囲と最低料金付きで返します
ft_activityアクティビティ1件の説明、オプション、料金、最安日を返します

全22個のツールには readOnlyHint: true が注釈として付与されており、エージェントのコンテキストを過剰に消費しない、簡潔な構造化 JSON を返します。

動作の仕組み

  AI agent  (Claude, Cursor, Copilot, ...)
      │
      │  MCP over stdio
      ▼
  flytoday-mcp  (runs on your machine)
      │
      │  HTTPS (optional proxy)
      ▼
  www.flytoday.ir/api/gateway  ──▶  api.flytoday.ir, placesearch.flytoday.ir

flytoday-mcp はローカルで動作し、flytoday.ir のウェブサイトが使用するものと同じ公開ゲートウェイを呼び出します。間にホスト型サーバーはなく、API キーも不要で、ユーザーに関する情報がほかの場所へ送信されることもありません。リクエストは Chrome を偽装する HTTP クライアント経由で送信され、同時実行数は最大2件で、短いランダムな間隔を設けます。失敗した呼び出し(タイムアウト、5xx、429)は最大2回再試行されます。静的な検索リスト(CIP の空港、eSIM の国、ビザ対象国)は6時間キャッシュされます。

知っておくと便利なこと

  • 価格はすべてトマンで、すべてのツールで *_toman という名前のフィールドに表示されます(API はリヤルを送信し、値は 10 で割られています)。 航空券の price_toman は大人 1 人あたりの価格で、total_toman はグループ全体の価格です。ホテルの price_toman は滞在全体の価格(per_night_toman もあります)です。宿泊施設では price_per_night_toman と total_toman が表示されます。列車は大人 1 人あたり、バスは座席 1 席あたりの価格です。 ビザや一部のアクティビティの価格は外貨建てです(price_currency)。
  • 日付の入出力形式はグレゴリオ暦の YYYY-MM-DD です。過去の日付は拒否されます。時刻は現地時間です。
  • 航空券には airline(英語名)と airline_fa(API にある場合はペルシャ語名)が表示されます。
  • ホテルと宿泊施設(検索結果の行、ft_hotel、ft_stay)には、カバー写真の image が含まれます。サイトと同じ形式の <cdn>/<id>/main.jpg で構成されています(API に画像フィールドはありません)。
  • Flytoday では、検索は IP ごとにレート制限されています。航空券・列車・バスの検索は約 15 回、ホテル検索は 10 分間に約 12 回行うと CAPTCHA が要求されます(1 時間以上ブロックされる場合があります)。再検索する代わりに、カレンダーとページング(search_id)を使ってください。ツールが検索を繰り返すことはありません。
  • ID の有効期限:search_id と fare_source_code は約 15 分間有効です。
  • 販売開始時期:列車のチケットは約 16 日前から販売されます。検索結果が空でも、単に「まだ販売されていない」だけの場合があります。
  • 鉄道会社のリンクがダウンしている場合、Flytoday は HTTP 599 を返します。ft_search_trains は 3 回再試行してから、その旨を通知します。
  • 対応していない機能: 予約、座席の確保、支払い、払い戻し、ログイン、ツアーやパッケージの検索、バスの座席表には対応していません。
  • 安全性: 読み取り専用です。POST リクエストは、サイトが予約前に行う検索と価格確認に限られます。 同時リクエストは最大 2 件で、検索をループ内で繰り返すツールはありません。
  • プロキシ: ネットワークから flytoday.ir にアクセスできない場合は、FLYTODAY_MCP_PROXY を設定してください(設定を参照)。

よくある質問

AI エージェント向けの Flytoday API または MCP サーバーはありますか?

flytoday-mcp は Flytoday 向けの非公式 MCP サーバーです。flytoday.ir サイトの公開ゲートウェイを読み取り専用の 22 個のツールとして公開し、エージェントがフライト、ホテル、ヴィラ、列車、バスを比較できるようにします。

Claude、Cursor、Copilot で Flytoday を使うにはどうすればよいですか?

uvx flytoday-mcp でインストールし(クイックスタートを参照)、ペルシャ語または英語で質問します。たとえば、「来月、テヘランからイスタンブールへ飛ぶ最安の日と、その運賃の払い戻し規則」のように尋ねてください。

これは公式で、安全で、無料ですか?

非公式で、MIT ライセンスのため無料で利用できます。読み取り専用で、ログインも API キーも不要です。予約や支払いは行わず、お使いのマシン上で動作します。

プロキシは必要ですか?

通常は必要ありません。サイトのゲートウェイはイラン国内からも国外からも応答します。ネットワークから www.flytoday.ir にアクセスできない場合、または IP がレート制限されている場合は、FLYTODAY_MCP_PROXY に HTTP プロキシを設定してください(カンマ区切りのリストも指定でき、その場合は一度に 1 つずつ使用されます)。システムのプロキシ環境変数(HTTPS_PROXY など)は意図的に無視されます。

チケットを予約できますか?

いいえ。それは意図的な仕様です。ログイン機能はなく、座席の確保、予約、注文、支払いは一切行いません。エージェントが最適な選択肢を見つけ、予約は flytoday.ir で行います。

「captcha が必要です」または HTTP 429 が表示されます

Flytoday は IP ごとの検索回数を制限しています。しばらく待つか(ホテルの CAPTCHA ブロックは 1 時間以上続く場合があります)、FLYTODAY_MCP_PROXY を使用して別のネットワーク経由でアクセスしてください。カレンダー、詳細、レビュー、宿泊検索には制限がありません。 Flytoday が代わりにボット確認ページを表示する場合は、ブラウザー用の追加機能をインストールし(pip install flytoday-mcp[browser] または uvx --with patchright==1.63.0 flytoday-mcp)、patchright install chromium を実行してください。その後、サーバーがヘッドレスブラウザーで一度だけ確認を通過させます。

バスの座席表がないのはなぜですか?

サイトの座席表は、チェックアウトフローの最初の呼び出しで取得されます。その呼び出しが何も確保しないと確認できるまでは、座席表を含めていません。

価格の単位はトマンですか、リアルですか?

トマンです。Flytoday の API はリアルで価格を返すため、ツール側で 10 で割っています。フィールド名は *_toman です。ビザと一部のアクティビティの価格は外貨建てで、price_currency に表示されます。

エージェントに表示される内容をデバッグするにはどうすればよいですか?
npx @modelcontextprotocol/inspector uvx flytoday-mcp

設定

変数デフォルト意味
FLYTODAY_MCP_PROXY未設定任意の HTTP プロキシ。例:http://user:pass@host:port。カンマ区切りのリストを指定した場合は、一度に 1 つずつ使用されます(ブロックまたは接続エラーの後に次のプロキシを使用)。システムのプロキシ設定は無視されます

ペルシャ語:Flytoday MCP サーバー

flytoday-mcp は、イランのオンライン旅行代理店 Flytoday(flytoday.ir)向けの非公式な読み取り専用 MCP サーバーです。このサーバーを使うと、AI アシスタント(Claude、Cursor、Copilot など)が Flytoday で、国内線・国際線、鉄道、バスの最安値を特定の日または1か月分調べたり、払い戻し規則や手荷物許容量を確認したり、ホテルやヴィラの正確な料金を比較したりできます。また、CIP の料金、eSIM の価格、ビザの情報も確認できます。

できること

  • 航空券:国内線・国際線、片道・往復。航空会社、直行便、出発時刻で絞り込めます。
  • 最安日:航空券、鉄道、バスの最安日(料金カレンダー)。
  • チケットの規則:払い戻し・変更、手荷物許容量、目的国への入国に関する注意事項。
  • ホテル:国内・海外のホテルの正確な料金、客室、キャンセル条件、宿泊者のレビュー。
  • ヴィラ・宿泊施設:イラン国内の1泊料金、合計料金、混雑日のカレンダー。
  • 鉄道・バス:クラス、空席、駅、設備、VIP バス、寝台バス。
  • その他のサービス:イマーム空港とマシュハド空港の CIP ラウンジ、eSIM データパッケージ、ビザの料金と必要書類、ツアー、観光スポットのチケット。

注意事項

  • 読み取り専用です。アカウントにログインしたり、予約や支払いを行ったりすることはありません。購入はご自身で flytoday.ir から行ってください。
  • 料金はすべてトマン表示です(ビザの料金と一部のアクティビティは外貨表示)。日付はグレゴリオ暦です。
  • Flytoday は各 IP からの検索回数を制限しています(航空券、鉄道、バスの検索は約15回)。料金カレンダーを活用し、検索を繰り返さないでください。
  • API キーは不要で、ご自身のシステム上で実行されます。ネットワークから flytoday.ir に接続できない場合は、FLYTODAY_MCP_PROXY 変数に HTTP プロキシを設定してください。
  • Google や MCP レジストリで探すには、「Flytoday MCP サーバー」「航空券」「鉄道チケット」「バスチケット」「ホテル予約」または「flytoday mcp」で検索してください。

インストール(先に uv をインストールしてください)。Claude Code の場合:

claude mcp add flytoday -- uvx flytoday-mcp

Claude Desktop、Cursor、その他のアプリでは、Quick start の設定と同じものを使用してください。

質問の例

  • 「10月28日ごろに、テヘランからマシュハドへ行く最安の方法は?」
  • 「来週月曜日のテヘラン発イスファハン行きで、最安の VIP バスは?」
  • 「マシュハドで2泊、無料キャンセル可能なホテルを安い順に教えて。」

開発

git clone https://github.com/sepehr071/flytoday-mcp && cd flytoday-mcp
uv sync
uv run python -m pytest  # offline, against recorded responses
uv run python -m pytest -m live  # real API, one search per tool (set FLYTODAY_MCP_PROXY if needed)
uv run ruff check .

ツールは src/flytoday_mcp/flights.py、hotels.py、trains.py、buses.py、extras.py にあります。それぞれ、エージェントがいつ使うべきかを説明する docstring を備えた、型付きの非同期関数です。課題の報告や PR を歓迎します。

リリース手順:pyproject.toml と server.json のバージョンを更新し、v* タグをプッシュします。GitHub Actions がテストを実行し、PyPI と MCP Registry に公開して、GitHub Release を作成します。

関連サーバー

  • iran-mcp:イランのサービスを提供するすべての MCP サーバーのカタログ
  • MrBilit MCP server:航空券、鉄道、バス、タクシー、ホテル向け
  • Jabama MCP server:ヴィラ、ツアー、イベント向け
  • Otaghak MCP server:ヴィラ、コテージ、アパートメントの宿泊向け

クリック数の節約に役立ったら、スターを付けて他の人にも見つけてもらいましょう。

免責事項

非公式のサービスであり、Flytoday との提携関係や、同社からの推奨はありません。読み取り専用で、予告なく変更される場合がある flytoday.ir ウェブサイトの公開エンドポイントを使用します。リクエスト頻度は適切に保ってください。

作者

Sepehr Radmard:イランのウェブ向けオープンソース MCP サーバー。LinkedIn:linkedin.com/in/sepehr-radmard

Sepehr Radmard(سپهر رادمرد)が開発・保守しています。LinkedIn でつながるか、GitHub の @sepehr071 をフォローして、イランのウェブサイト向けの MCP サーバーをご覧ください。すべて iran-mcp に掲載されています。これが時間の節約になった場合は、リポジトリにスターを付けていただくと、ほかの人にも見つけてもらいやすくなります。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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