使用说明
旅行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个预定义的旅行套餐,覆盖欧洲、亚洲、北美、大洋洲和非洲的目的地,包括巴黎、东京、巴厘岛、纽约、圣托里尼、伦敦、迪拜、罗马、巴塞罗那、冰岛、新加坡、悉尼、泰国、瑞士和摩洛哥。