Mcp Booking

Mcp Booking

🚀 餐厅预订MCP服务器

这是一个由人工智能驱动的模型上下文协议(MCP)服务器,用于餐厅发现和预订。该服务器与谷歌地图地点API集成,可根据位置、美食偏好、心情和活动类型查找餐厅,然后提供智能推荐和预订协助。

🚀 快速开始

本服务器借助谷歌地图地点API,依据用户提供的位置、美食偏好、心情和活动类型等信息,精准搜索周边餐厅,并提供智能推荐和预订协助。

✨ 主要特性

  • 智能餐厅搜索:可通过高级筛选功能,查找半径20公里内的餐厅。
  • 默认台湾位置:若未指定坐标,将自动搜索台湾(24.1501164, 120.6692299)周边的餐厅。
  • 人工智能推荐:获取排名前三的餐厅建议,并提供详细的推荐理由。
  • 谷歌地图集成:提供真实的餐厅数据,包括评分、评论和照片。
  • 活动匹配:针对约会、家庭聚会、商务会议和庆祝活动等场景进行优化。
  • 心情筛选:查找符合浪漫、休闲、高档、有趣或安静氛围的餐厅。
  • 预订协助:提供预订说明和模拟预订功能。

📦 安装指南

前提条件

  • Node.js 18+
  • 启用了地点API的谷歌地图API密钥
  • 具备TypeScript知识,以便进行自定义设置

安装步骤

  1. 克隆或下载项目
    git clone 
    cd mcp-restaurant-booking
    
  2. 安装依赖项
    npm install
    
  3. 设置环境变量
    cp .env.example .env
    
    编辑 .env 文件,并添加你的谷歌地图API密钥:
    GOOGLE_MAPS_API_KEY=your_actual_api_key_here
    
  4. 构建项目
    npm run build
    

获取谷歌地图API密钥

  1. 访问 谷歌云控制台
  2. 创建一个新项目或选择现有项目
  3. 启用以下API:
    • 地点API
    • 地图JavaScript API
    • 地理定位API
    • 地点API(新版)
    • 地理编码API
  4. 创建凭证(API密钥)
  5. 为了安全起见,将API密钥的使用范围限制在已启用的API上

💻 使用示例

运行服务器

开发模式

npm run dev

生产模式

npm start

在Docker中运行

要在Docker中运行MCP餐厅预订服务器,请执行以下操作:

# 构建Docker镜像
docker build -t mcp/booking .

# 在与Redis相同的网络中运行容器
docker run --rm -i mcp/booking

可用工具

1. search_restaurants

根据位置、美食类型、心情和活动类型查找餐厅。 参数

  • latitude(数字,可选):搜索的纬度(默认值:24.1501164 - 台湾)
  • longitude(数字,可选):搜索的经度(默认值:120.6692299 - 台湾)
  • placeName(字符串,可选):要搜索的地点名称(例如,"纽约"、"东京"、"伦敦"),可替代提供经纬度坐标。
  • cuisineTypes(字符串数组):美食偏好数组
  • mood(字符串):期望的氛围
  • event(字符串):活动类型
  • radius(数字,可选):搜索半径(单位:米,默认值:20000)
  • priceLevel(数字,可选):价格偏好(1 - 4)

使用默认台湾位置的示例

{
"cuisineTypes": ["Chinese", "Taiwanese"],
"mood": "casual",
"event": "family gathering",
"priceLevel": 2
}

使用明确坐标(台北)的示例

{
"latitude": 25.033,
"longitude": 121.5654,
"cuisineTypes": ["Italian", "Mediterranean"],
"mood": "romantic",
"event": "dating",
"radius": 15000,
"priceLevel": 3
}

使用地点名称(纽约)的示例

{
"placeName": "New York, NY",
"cuisineTypes": ["Italian", "American"],
"mood": "upscale",
"event": "business meeting",
"radius": 10000,
"priceLevel": 3
}

使用关键词搜索特定美食类型的示例

{
"keyword": "hotpot",
"mood": "casual",
"event": "family gathering",
"radius": 10000
}

2. get_restaurant_details

获取特定餐厅的详细信息。 参数

  • placeId(字符串):餐厅的谷歌地点ID

3. get_booking_instructions

获取预订说明。 参数

  • placeId(字符串):餐厅的谷歌地点ID

4. check_availability

检查预订的可用性(模拟实现)。 参数

  • placeId(字符串):谷歌地点ID
  • dateTime(字符串):首选的日期/时间(ISO格式)
  • partySize(数字):用餐人数

5. make_reservation

尝试进行预订(模拟实现)。 参数

  • placeId(字符串):谷歌地点ID
  • partySize(数字):用餐人数
  • preferredDateTime(字符串):ISO格式的日期/时间
  • contactName(字符串):预订联系人姓名
  • contactPhone(字符串):联系电话
  • contactEmail(字符串,可选):电子邮件地址
  • specialRequests(字符串,可选):特殊要求

🔧 技术细节

餐厅发现

  • 使用谷歌地点附近搜索API查找指定半径内的餐厅。
  • 通过关键词匹配按美食类型进行筛选。
  • 检索每家餐厅的详细信息。

人工智能推荐引擎

推荐系统根据以下因素对餐厅进行评分:

  • 评分和评论(权重40%):评分越高、评论越多,得分越高。
  • 评论数量(权重20%):评论越多,表明餐厅越可靠。
  • 美食匹配度(权重20%):餐厅的美食与用户偏好的匹配程度。
  • 活动适用性(权重10%):餐厅是否适合指定的活动类型。
  • 心情匹配度(权重10%):餐厅的氛围与期望心情的契合度。

活动特定评分

不同的活动有不同的评分标准:

  • 约会:偏好中高端、浪漫的美食,避免快餐。
  • 家庭聚会:偏好家庭友好、价格适中的餐厅。
  • 商务会议:偏好安静、专业、高档的环境。
  • 休闲用餐:标准较为灵活,偏好经济实惠的选择。
  • 庆祝活动:偏好高端、适合特殊场合的场所。

心情匹配

通过分析餐厅名称、评论和特点,查找与心情相关的关键词:

  • 浪漫:私密、温馨、烛光、葡萄酒
  • 休闲:轻松、友好、悠闲
  • 高档:优雅、精致、高级餐饮
  • 有趣:热闹、活力、充满生机
  • 安静:宁静、祥和、平静

📚 详细文档

项目结构

src/
├── types/           # TypeScript类型定义
├── services/        # 核心业务逻辑
│   ├── googleMapsService.ts      # 谷歌地图API集成
│   ├── restaurantRecommendationService.ts  # 人工智能推荐引擎
│   └── bookingService.ts         # 预订逻辑(模拟)
└── index.ts         # MCP服务器实现

脚本

  • npm run build:编译TypeScript代码
  • npm run dev:以开发模式运行,并支持热重载
  • npm start:运行编译后的版本
  • npm run lint:运行ESLint检查
  • npm run lint:fix:修复ESLint问题

自定义设置

添加新的美食类型

编辑 src/services/googleMapsService.ts 中的 cuisineMap

const cuisineMap: { [key: string]: string } = {
"new_cuisine_type": "Display Name"
// ... 现有映射
};

修改推荐逻辑

更新 src/services/restaurantRecommendationService.ts 中的评分算法:

  • calculateRestaurantScore():整体评分逻辑
  • calculateEventSuitability():活动特定标准
  • calculateMoodMatch():心情匹配逻辑

添加新的活动类型

  1. 更新 src/types/index.ts 中的 event 枚举
  2. calculateEventSuitability() 方法中添加活动标准

📄 许可证

本项目采用MIT许可证,详情请参阅LICENSE文件。

支持

若遇到问题或有疑问,请按以下步骤操作:

  1. 查阅谷歌地图API文档
  2. 验证你的API密钥是否具有正确的权限
  3. 检查API使用配额和计费情况
  4. 查看服务器日志以获取错误详细信息

未来改进计划

  • [ ] 集成真实的预订系统(如OpenTable、Resy等)
  • [ ] 学习用户偏好
  • [x] 支持多语言
  • [ ] 高级筛选功能(如饮食限制、无障碍设施)
  • [ ] 与日历系统集成
  • [x] 价格比较功能
  • [ ] 社交功能(如评论、分享)

额外的浏览器控制

使用浏览器MCP:

  • https://chromewebstore.google.com/detail/browser-mcp-automate-your/bjfgambnhccakkhmkepdoekmckoijdlc
  • https://docs.browsermcp.io/setup-server#cursor

示例

  • 提示:在搜索餐厅时,请像专业的私人助理一样评估我提供的条件,不要问我太多问题来让我选择,为我挑选最合适的选项,检查预订选项并指导如何进行预订。同时列出该餐厅的招牌菜和人均大致价格。当预订信息中有外部预订链接时,使用MCP浏览工具查找预订步骤。
  • 能否帮我在香港太平洋广场附近预订一家餐厅,我想在晚上6点和妻子进行一次高档的约会,费用不是问题,需要浪漫的氛围。
  • 0 关注
  • 0 收藏,25 浏览
  • system 提出于 2025-10-01 18:24

相似服务问题

相关AI产品