Skip to main content
Glama
AhmedAliQadir

Duffel MCP Server

Duffel MCP Server

AIアシスタントに 型付きツールレイヤーとして Duffel 旅行API を提供する Model Context Protocol サーバーです。フライト、ホテル、レンタカーを、モデル自身の想像ではなくライブの在庫から検索します。

公式Anthropic MCP SDK上でTypeScriptで構築されています。stdio上で動作するため、Claude DesktopやMCP互換クライアントに直接接続できます。

設計上、検索のみです。 このサーバーは予約、支払い、個人データの表面を公開していません。空き状況と価格を読み取るだけで、お金を使ったり予約をしたりすることはできません。


なぜこれが存在するのか

旅行はエージェント型AIにとって良いテストケースです。質問は自然言語ですが(「5月にリスボンで1週間、£800以下」)、答えは実際の在庫と実際の価格に基づくものでなければなりません。言語モデルはフライトスケジュールを発明することはできません。ツールが必要です。

このサーバーは、モデルが推測せずに連鎖させられるように形作られた4つのツールを提供します。

Related MCP server: Travel Assistant MCP

ツール

ツール

機能

resolve_place

都市名または空港名をIATAコード および 緯度・経度に解決します。最初に呼び出されます。フライトにはIATAコードが必要で、ホテルやカーには座標が必要です。

search_flights

フライトオファーを検索します。片道の場合は return_date を省略します。価格、航空会社、出発・到着時刻、経由地数を含む最安オファーを返します。

search_stays

座標周辺の宿泊施設を検索します。期間中の名前、評価、合計価格を含む最安の宿泊施設を返します。

search_cars

受け取り場所の座標周辺のレンタカーを検索します。車両、サプライヤー、合計価格を含む料金を返します。

設計の要点は resolve_place です。これがないと、モデルはリスボンが LIS であることを推測し、座標を作り出さなければなりません。これがあれば、後続のすべての呼び出しは実際の識別子に基づいています。

注目すべき設計判断

  • 起動時の認証情報ガード。 DUFFEL_API_KEY が設定されていない場合、プロセスはstderrにログを出力して非ゼロで終了します。起動後に最初のツール呼び出しで混乱を招くように失敗するのではなく。

  • stdoutはMCPプロトコル用に予約されています。 すべてのログはstderrに出力されます。stdoutに他のものを書き込むとJSON-RPCストリームが壊れます。これは、明示的に設計で防ぐ価値のある、見落としがちな障害モードです。

  • スモークテストでのテストトークンの強制。 test/smoke.ts は、トークンが duffel_test_ で始まらない限り実行を拒否するため、本番トークンが誤って使われることはありません。トークンを出力することはありません。

  • 予約機能はありません。 予約および支払いエンドポイントは意図的に公開されていません。このサーバーを使うエージェントは旅行を調査できますが、予約を確定することはできません。

要件

  • Node.js 18+

  • Duffelテストトークン — app.duffel.com → Developers → Access tokensから無料で取得できます

セットアップ

npm install
cp .env.example .env   # then add your Duffel test token
npm run build

実行

npm run dev     # development, via tsx
npm start       # production, from dist/

Claude Desktopで使う

claude_desktop_config.json に追加します:

{
  "mcpServers": {
    "duffel-travel": {
      "command": "node",
      "args": ["/absolute/path/to/duffel-mcp/dist/index.js"],
      "env": { "DUFFEL_API_KEY": "duffel_test_your_token_here" }
    }
  }
}

Claude Desktopを再起動すると、4つのツールが表示されます。試してみてください: 「5月にエディンバラからリスボンへのフライトと、中心部の近くの宿泊先を探してください。」

テスト

npx tsx --env-file=.env test/smoke.ts

ライブのDuffel テスト APIに対して resolve_place と search_flights を呼び出します。失敗した場合は非ゼロで終了し、トークンを出力することはありません。

アーキテクチャ

src/
├── index.ts    entry point — credential guard, stdio transport
├── server.ts   MCP server: registers the four tools with zod schemas
└── duffel.ts   Duffel API client and response normalisation

応答はモデルに渡される前に正規化されます。生のDuffelペイロードは大きく、エージェントは深くネストされたAPIレスポンスよりも、トリミングされ予測可能な形状の方がうまく推論できます。

技術スタック

TypeScript · @modelcontextprotocol/sdk · @duffel/api · zod

由来

ツアリストのツールレイヤーとして、Ahmed Ali Qadir によって2026年に構築されました。Touristaは Orbixio Ltd(英国、会社番号16587877)によるAI旅行製品です。ここではスタンドアローンで再利用可能なMCPサーバーとして抽出されています。

Duffel や Anthropic とは提携しておらず、その承認を受けたものでもありません。

ライセンス

MIT — LICENSE を参照してください。

Related MCP Connectors

Related MCP Servers