Skip to main content
Glama
AhmedAliQadir

Duffel MCP Server

Duffel MCP Server

Сервер Model Context Protocol, который предоставляет ИИ-ассистенту типизированный слой инструментов поверх API путешествий Duffel — авиаперелёты, отели и аренда автомобилей, поиск по живому инвентарю, а не по сгенерированным из воображения модели данным.

Написан на TypeScript на базе официального Anthropic MCP SDK. Работает через stdio, поэтому подключается напрямую к Claude Desktop или любому MCP-совместимому клиенту.

Только поиск, по дизайну. Этот сервер не предоставляет поверхности для бронирования, оплаты или работы с персональными данными. Он читает наличие и цены; он не может тратить деньги или создавать бронь.


Зачем это существует

Путешествия — хороший тест для агентного ИИ: вопросы формулируются на естественном языке («неделя в Лиссабоне в мае, до £800»), но ответы должны приходить из реального инвентаря с реальными ценами. Языковая модель не может выдумать расписание рейсов. Ей нужны инструменты.

Этот сервер предоставляет четыре таких инструмента, спроектированных так, чтобы модель могла выстраивать их в цепочку без догадок.

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 — появятся четыре инструмента. Попробуйте: «Найди мне рейсы из Эдинбурга в Лиссабон в мае и жильё рядом с центром».

Тестирование

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

Вызывает resolve_place и search_flights против живого тестового API Duffel. Завершается с ненулевым кодом при сбое и никогда не печатает ваш токен.

Архитектура

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

Происхождение

Создан в 2026 году Ahmed Ali Qadir как инструментальный слой для Tourista, ИИ-продукта для путешествий от Orbixio Ltd (Великобритания, рег. номер 16587877). Вынесен сюда как самостоятельный, переиспользуемый MCP-сервер.

Не аффилирован с Duffel или Anthropic и не одобрен ими.

Лицензия

MIT — см. LICENSE.

Related MCP Connectors

Related MCP Servers