这是一个由人工智能驱动的模型上下文协议(MCP)服务器,用于餐厅发现和预订。该服务器与谷歌地图地点API集成,可根据位置、美食偏好、心情和活动类型查找餐厅,然后提供智能推荐和预订协助。
本服务器借助谷歌地图地点API,依据用户提供的位置、美食偏好、心情和活动类型等信息,精准搜索周边餐厅,并提供智能推荐和预订协助。
git clone
cd mcp-restaurant-booking
npm install
cp .env.example .env
编辑 .env 文件,并添加你的谷歌地图API密钥:GOOGLE_MAPS_API_KEY=your_actual_api_key_here
npm run build
开发模式:
npm run dev
生产模式:
npm start
要在Docker中运行MCP餐厅预订服务器,请执行以下操作:
# 构建Docker镜像
docker build -t mcp/booking .
# 在与Redis相同的网络中运行容器
docker run --rm -i mcp/booking
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
}
get_restaurant_details获取特定餐厅的详细信息。 参数:
placeId(字符串):餐厅的谷歌地点IDget_booking_instructions获取预订说明。 参数:
placeId(字符串):餐厅的谷歌地点IDcheck_availability检查预订的可用性(模拟实现)。 参数:
placeId(字符串):谷歌地点IDdateTime(字符串):首选的日期/时间(ISO格式)partySize(数字):用餐人数make_reservation尝试进行预订(模拟实现)。 参数:
placeId(字符串):谷歌地点IDpartySize(数字):用餐人数preferredDateTime(字符串):ISO格式的日期/时间contactName(字符串):预订联系人姓名contactPhone(字符串):联系电话contactEmail(字符串,可选):电子邮件地址specialRequests(字符串,可选):特殊要求推荐系统根据以下因素对餐厅进行评分:
不同的活动有不同的评分标准:
通过分析餐厅名称、评论和特点,查找与心情相关的关键词:
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():心情匹配逻辑src/types/index.ts 中的 event 枚举calculateEventSuitability() 方法中添加活动标准本项目采用MIT许可证,详情请参阅LICENSE文件。
若遇到问题或有疑问,请按以下步骤操作:
使用浏览器MCP: