旅行套餐管理服务

Travel MCP Server 提供通过符合Model Context Protocol (MCP)的端点进行旅行套餐管理、预订功能和行程规划的服务。

  • by gopal-prakash-codes
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 gopal-prakash-codes/mcp-server

使用说明

旅行MCP服务器

Travel MCP Server通过符合模型上下文协议(MCP)的端点提供旅行包管理、预订功能和行程规划。

安装

npm install

跑步

npm start

服务器在上运行 http://localhost:3002

可用工具

该服务器提供26个工具,分为四类:

包管理(12个工具):

  • list_packages
  • get_package
  • 搜索包
  • check_可用性
  • compare_包
  • get_package_itinerary
  • get_packages_by_destination
  • get_packages_by_price_range
  • get_packages_by_duration
  • get_packages_by_continent
  • 过滤器_包_预算
  • get_package_inclusions

预订管理(9个工具):

  • 创建_预订
  • get_booking
  • list_预订
  • 取消_预订
  • update_booking
  • 获取预订状态
  • 获取_预订_ _电子邮件
  • 获取_预订_日期
  • get_booking_summary

价格计算(4个工具):

  • 计算_预订_价格
  • 计算总价
  • calculate_discount
  • 比较包装价格

验证(1个工具):

  • validate_booking_data

协议端点

职位/

主MCP JSON-RPC端点,处理协议初始化、工具发现和工具执行。

标题:

  • mcp-protocol-version:协议版本(可选,默认为'2024-11-05')
  • mcp-session-id:会话标识符(初始化后需要)

方法:

初始化

初始化MCP会话并返回服务器功能。

请求:

{
  "jsonrpc": "2.0",
  "method": "initialize",
  "params": {
    "protocolVersion": "2024-11-05",
    "capabilities": {},
    "clientInfo": {
      "name": "client-name",
      "version": "1.0.0"
    }
  },
  "id": 1
}

答复:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "protocolVersion": "2024-11-05",
    "capabilities": {
      "tools": {}
    },
    "serverInfo": {
      "name": "Travel MCP Server Enhanced",
      "version": "2.0.0"
    }
  }
}

工具/列表

返回所有可用工具的列表。

请求:

{
  "jsonrpc": "2.0",
  "method": "tools/list",
  "params": {},
  "id": 2
}

答复:

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "tools": [...]
  }
}

工具/调用

使用提供的参数执行特定工具。

请求:

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "tool-name",
    "arguments": {...}
  },
  "id": 3
}

答复:

{
  "jsonrpc": "2.0",
  "id": 3,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

可用工具

包管理

list_packages

检索包含基本信息的所有可用旅行套餐的综合列表。

参数: 无

退货: 包含id、名称、目的地、持续时间、价格、货币和可用性状态的包列表

get_package

检索特定旅行套餐的完整详细信息。

参数:

  • packageId (字符串,必填):唯一包标识符

退货: 完整的套餐详细信息,包括行程、包含内容和完整描述

搜索包

按多个条件搜索和筛选旅行套餐。

参数:

  • destination (字符串,可选):目的地城市或国家名称
  • minDuration (数字,可选):最短行程持续时间(天)
  • maxDuration (数字,可选):最长行程持续时间(天)
  • maxPrice (数字,可选):每人最高价格(美元)

退货: 按相关性排序的匹配包

check_可用性

检查当前是否有特定的旅行套餐可供预订。

参数:

  • packageId (字符串,必填):包标识符

退货: 可用性状态布尔值

compare_包

并排比较多个旅行套餐。

参数:

  • packageIds (数组,必填):2-5个包ID的数组

退货: 包装的详细比较

get_package_itinerary

检索旅行套餐的完整每日行程。

参数:

  • packageId (字符串,必填):包标识符

退货: 详细的行程,包括活动和预定时间

get_packages_by_destination

检索特定目的地的所有旅行套餐。

参数:

  • destination (字符串,必填):目的地城市或国家名称

退货: 所有与目的地匹配的包裹

get_packages_by_price_range

检索指定价格范围内的包。

参数:

  • minPrice (数字,必填):每人最低价格(美元)
  • maxPrice (数字,必填):每人最高价格(美元)

退货: 按价格排序的包裹

get_packages_by_duration

检索与特定持续时间范围匹配的包。

参数:

  • minDays (数字,必填):最短行程持续时间(天)
  • maxDays (数字,必填):最长行程持续时间(天)

退货: 按持续时间排序的包裹

get_packages_by_continent

检索特定大陆目的地的所有包裹。

参数:

  • continent (字符串,必填):大陆名称(欧洲、亚洲、北美、南美、非洲、大洋洲、澳大利亚)

退货: 指定大陆的包裹

过滤器_包_预算

按最大预算金额筛选套餐。

参数:

  • maxBudget (数字,必填):每人最高预算(美元)

退货: 按价格排序的价格等于或低于预算的套餐

get_package_inclusions

检索包裹的内含物和设施列表。

参数:

  • packageId (字符串,必填):包标识符

退货: 内含物清单

预定管理

创建_预订

为旅行套餐创建新的已确认预订。

参数:

  • packageId (字符串,必填):包标识符
  • travelerName (字符串,必填):主要旅行者的全名
  • travelerEmail (字符串,必填):电子邮件地址
  • travelDate (字符串,必填):YYYY-MM-DD格式的旅行开始日期
  • numberOfTravelers (人数,必填):旅行者人数

退货: 使用预订ID填写预订详细信息

get_booking

检索特定预订的完整详细信息。

参数:

  • bookingId (字符串,必填):预订标识符

退货: 完整的预订信息

list_预订

使用可选筛选检索所有预订的列表。

参数:

  • email (字符串,可选):按旅行者电子邮件筛选

退货: 包含完整详细信息的预订列表

取消_预订

取消已确认的现有预订。

参数:

  • bookingId (字符串,必填):预订标识符

退货: 已更新预订,取消状态

update_booking

更新现有预订详细信息。

参数:

  • bookingId (字符串,必填):预订标识符
  • travelDate (字符串,可选):YYYY-MM-DD格式的新旅行开始日期
  • numberOfTravelers (数量,可选):新的旅行者数量

退货: 已更新预订,并提供了新的详细信息

获取预订状态

检索预订的当前状态。

参数:

  • bookingId (字符串,必填):预订标识符

退货: 预订状态和时间戳

获取_预订_ _电子邮件

检索特定旅行者电子邮件的所有预订。

参数:

  • email (字符串,必填):电子邮件地址

退货: 所有与电子邮件相关的预订

获取_预订_日期

检索与特定日期或日期范围匹配的预订。

参数:

  • travelDate (字符串,可选):YYYY-MM-DD格式的特定旅行日期
  • startDate (字符串,可选):YYYY-MM-DD格式的范围开始日期
  • endDate (字符串,可选):YYYY-MM-DD格式的范围结束日期

退货: 按日期条件筛选的预订

get_booking_summary

检索预订的简明摘要。

参数:

  • bookingId (字符串,必填):预订标识符

退货: 紧凑格式的基本预订信息

价格计算

计算_预订_价格

在不创建潜在预订的情况下计算其总价。

参数:

  • packageId (字符串,必填):包标识符
  • numberOfTravelers (人数,必填):旅行者人数

退货: 计算总价、人均价格和货币

计算总价

根据套餐价格和旅行者数量计算总价。

参数:

  • packagePrice (数字,必填):每人价格(美元)
  • numberOfTravelers (人数,必填):旅行者人数

退货: 总价明细

calculate_discount

计算折扣金额和折扣价格。

参数:

  • originalPrice (数字,必填):原价(美元)
  • discountPercentage (数字,必填):折扣百分比(0-100)

退货: 原价、折扣金额和折扣价

比较包装价格

比较多个包裹的价格,并确定最便宜和最昂贵的包裹。

参数:

  • packageIds (array,必填):至少包含2个包ID的数组

退货: 价格与排名比较

验证

validate_booking_data

在创建预订之前验证预订数据。

参数:

  • packageId (字符串,必填):包标识符
  • travelerEmail (字符串,必填):要验证的电子邮件地址
  • travelDate (字符串,必填):YYYY-MM-DD格式的旅行日期
  • numberOfTravelers (人数,必填):旅行者人数

退货: 发现任何错误的验证结果

数据格式

封装结构

{
  "id": "pkg-001",
  "name": "Package Name",
  "destination": "City, Country",
  "duration": 5,
  "price": 2999,
  "currency": "USD",
  "description": "Package description",
  "itinerary": [
    {
      "day": 1,
      "activity": "Activity name",
      "time": "14:00"
    }
  ],
  "includes": ["Hotel", "Breakfast", "Transfers"],
  "available": true
}

预订结构

{
  "bookingId": "BK-000001",
  "packageId": "pkg-001",
  "packageName": "Package Name",
  "destination": "City, Country",
  "travelerName": "John Doe",
  "travelerEmail": "john@example.com",
  "travelDate": "2024-06-15",
  "numberOfTravelers": 2,
  "totalPrice": 5998,
  "currency": "USD",
  "status": "confirmed",
  "createdAt": "2024-01-01T00:00:00.000Z",
  "cancelledAt": null
}

响应格式

所有响应都使用服务器发送事件(SSE)格式:

event: message
data: {"jsonrpc":"2.0","id":1,"result":{...}}

错误处理

错误遵循JSON-RPC 2.0错误格式:

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32603,
    "message": "Error description"
  }
}

常见错误代码:

  • -32601:未找到方法
  • -32603:内部错误
  • -32000:会话ID无效或缺失

安全

此端点不应直接暴露给AI代理。通过ArmorIQ代理层路由所有请求,以进行身份验证、授权、速率限制和审计日志记录。

支持的目的地

该服务器包括15个预定义的旅行套餐,覆盖欧洲、亚洲、北美、大洋洲和非洲的目的地,包括巴黎、东京、巴厘岛、纽约、圣托里尼、伦敦、迪拜、罗马、巴塞罗那、冰岛、新加坡、悉尼、泰国、瑞士和摩洛哥。