Token导航 LogoToken导航TokenDH.com
Restaurant Booking MCP Server logo
地图位置stdio官方级别未说明来源级核验

Restaurant Booking MCP Server

MCP Server

一个基于AI和Google Maps Places API的餐厅发现与预订服务,提供智能推荐、预订协助和详细餐厅信息。

工具数

0

提示词数

0

GitHub Stars

15

资源数

0
TypeScriptCursor智能搜索Cursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

samwang0723

提供方

samwang0723

最后核验

2026/5/17 20:21

运行时

Docker

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

docker run --rm -i mcp/booking

详细介绍

餐厅预订MCP服务器

用于餐厅发现和预订的人工智能驱动的模型上下文协议(MCP)服务器。该服务器与Google Maps Places API集成,根据位置、美食偏好、心情和活动类型查找餐厅,然后提供智能推荐和预订帮助。

🎯 主要特点

  • 智能餐厅搜索:使用高级过滤功能查找半径20公里内的餐馆
  • 台湾默认位置:当未指定坐标时,自动在台湾周围搜索(24.1501164120.6692299)
  • 基于人工智能的推荐:通过详细的推理获得前3名餐厅建议
  • 谷歌地图集成:真实的餐厅数据,包括评级、评论和照片
  • 事件特定匹配:针对约会、家庭聚会、商务会议和庆祝活动进行了优化
  • 基于情绪的过滤:寻找与浪漫、休闲、高档、有趣或安静氛围相匹配的餐厅
  • 预订协助:获取预订说明和模拟预订功能

特性

  • 🔍 智能餐厅搜索:根据位置、菜肴类型、心情和活动类型,在20公里半径内寻找餐厅
  • 📍 谷歌地图集成:包含评级、评论、照片和联系信息的真实餐厅数据
  • 📅 预订协助:查看空房情况并获取预订说明
  • 🎯 事件特定匹配:为约会、家庭聚会、商务会议等提供优化的建议。
  • 🎭 基于情绪的过滤:寻找符合您所需氛围的餐厅(浪漫、休闲、高档等)

先决条件

  • Node.js 18+
  • 启用地点API的谷歌地图API密钥
  • 用于定制的TypeScript知识

安装

  1. 克隆或下载此项目
   git clone 
   cd mcp-restaurant-booking
  1. 安装依赖项
   npm install
  1. 设置环境变量
   cp .env.example .env

编辑 .env 并添加您的Google Maps API密钥:

   GOOGLE_MAPS_API_KEY=your_actual_api_key_here
  1. 构建项目
   npm run build

获取谷歌地图API密钥

  1. 首选 谷歌云控制台
  2. 创建新项目或选择现有项目
  3. 启用以下API:

- 地点API - 映射JavaScript API - 地理定位 - 地点API(新增) - 地理编码API

  1. 创建凭据(API密钥)
  2. 为了安全起见,将API密钥限制为已启用的API

用法

运行服务器

开发模式:

npm run dev

生产方式:

npm start

在Docker中运行

在Docker中运行MCP餐厅预订服务器:

# Build the Docker image
docker build -t mcp/booking .

# Run the container on the same network as Redis
docker run --rm -i mcp/booking

可用工具

MCP服务器提供以下工具:

1. search_restaurants

根据地点、菜肴、心情和活动类型查找餐厅。

参数:

  • latitude (数字,可选):搜索纬度(默认:24.1501164-台湾)
  • longitude (数字,可选):搜索经度(默认:120.6692299-台湾)
  • placeName (字符串,可选):要搜索附近的地名(例如,“纽约”、“东京”、“伦敦”)。提供纬度/经度坐标的替代方法。
  • cuisineTypes (string\[\]):烹饪偏好数组
  • mood (string):期望的氛围
  • event (string):场合类型
  • 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 (string):餐厅的Google Places ID

3. get_booking_instructions

获取如何预订的说明。

参数:

  • placeId (string):餐厅的Google Places ID

4. check_availability

检查预订的可用性(模拟实施)。

参数:

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

5. make_reservation

尝试预订(模拟实现)。

参数:

  • placeId (字符串):谷歌地点ID
  • partySize (人数):人数
  • preferredDateTime (字符串):ISO格式日期/时间
  • contactName (string):预订名称
  • contactPhone (string):电话号码
  • contactEmail (字符串,可选):电子邮件地址
  • specialRequests (字符串,可选):特殊请求

运作原理

1.餐厅探索

  • 使用Google Places Near Search API查找指定半径内的餐馆
  • 使用关键字匹配按菜肴类型筛选
  • 检索每家餐厅的详细信息

2.人工智能推荐引擎

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

  • 评分和评论(40%权重):更高的评分和更多的评论=更好的分数
  • 审核计数(20%权重):更多评论表明可靠性
  • 烹饪搭配(20%重量):餐厅的菜肴与喜好的匹配程度如何
  • 事件适用性(10%重量):适用于指定的事件类型
  • 情绪匹配(10%权重):氛围与所需情绪保持一致

3.特定事件评分

不同的事件有不同的标准:

  • 约会:喜欢中高端浪漫美食,避免快餐
  • 家庭聚会:更喜欢家庭友好型、预算适中的选择
  • 商务会议:喜欢安静、专业、高档的环境
  • 休闲餐饮:灵活的标准,预算友好的选择
  • 庆祝:更喜欢高端、特殊场合的场所

4.情绪匹配

分析餐厅名称、评论和情绪关键词的特征:

  • 浪漫的:亲密、舒适、烛光、葡萄酒
  • 随意:放松、友好、悠闲
  • 高档:优雅、精致、精致的餐饮
  • 乐趣:活泼、精力充沛、充满活力
  • 安静:宁静、安详、平和

发展

项目结构

src/
├── types/           # TypeScript type definitions
├── services/        # Core business logic
│   ├── googleMapsService.ts      # Google Maps API integration
│   ├── restaurantRecommendationService.ts  # AI recommendation engine
│   └── bookingService.ts         # Booking logic (mock)
└── index.ts         # MCP server implementation

脚本

  • npm run build:编译TypeScript
  • npm run dev:以热重载的开发模式运行
  • npm start:运行编译版本
  • npm run lint:运行ESLint
  • npm run lint:fix:修复ESLint问题

定制

添加新的菜肴类型

编辑 cuisineMap 在……里面 src/services/googleMapsService.ts:

const cuisineMap: { [key: string]: string } = {
  new_cuisine_type: "Display Name",
  // ... existing mappings
};

修改推荐逻辑

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

  • calculateRestaurantScore():总体评分逻辑
  • calculateEventSuitability():事件特定标准
  • calculateMoodMatch():情绪匹配逻辑

添加新事件类型

  1. 更新 event 枚举在 src/types/index.ts
  2. 在中添加事件标准 calculateEventSuitability() 方法

局限性

  • 预订:目前使用模拟实现。真正的预订需要与餐厅特定的系统或OpenTable等第三方服务集成
  • API配额:Google Places API有使用限制和成本
  • 实时数据:餐厅营业时间和可用性可能不是实时的
  • 地区范围:仅限于Google Places API覆盖的区域

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

许可证

MIT许可证-有关详细信息,请参阅许可证文件

支持

对于问题和疑问:

  1. 查看Google Maps 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

样品

  • 提示:-在搜索餐厅时,请担任专业个人助理,评估我提供的条件,不要问太多问题让我选择,为我选择最合适的选择,检查预订选项并指导如何预订。还列出了该餐厅的招牌菜和每人的大致价格。当预订信息具有使用外部url的预订url时,请使用mcp浏览工具来查找预订步骤。
  • 你能帮我订一家香港附近的餐馆吗太平洋廣場,我想晚上6点在一家高档餐厅和我妻子约会。成本不是问题,需要浪漫

目录标签

目录标签

TypeScriptCursor智能搜索餐厅推荐本地部署GoogleMaps集成预订服务AI推荐

支持客户端

Cursor

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Docker

部署方式(deploymentType,部署类型)

remote-capable

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiononeremote-capable

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP