关于 Booking System (Fixed)
Booking System (Fixed) 是面向 Andriana Delcheva、运行于 Cloudflare Workers 的预约应用。它结合 Google Calendar 可用时段检查与事件创建、邮件确认,并可通过 MCP 处理流程。
主要功能
- 01分步骤预约流程
- 02检查 Google Calendar 可用时段
- 03创建 Google Calendar 事件
- 04发送预约确认邮件
- 05适配手机和桌面设备
- 06通过 MCP 上报事件和错误
适用场景
- 01预约前检查空闲时段
- 02预约后创建日历事件
- 03向客户发送预约详情
- 04将预约事件和错误转发至 MCP
MCP 相关
应用可向 MCP 服务发送可用时段、预约、邮件、日历和错误事件;配置后也可将预约流程交由 MCP 处理。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
预约系统(修复版)
此代码仓库包含为 Andriana Delcheva 修复后的预约系统版本,解决了先前实现中的多个关键问题。该系统设计为在 Cloudflare Workers 上运行,并与 Google Calendar 和 MCP 服务集成。
🛠️ 修复的问题
此实现解决了原系统中存在的以下问题:
- 修复预约完成流程 - 用户现在可以成功选择日期并完成预约。
- 修复确认邮件 - 预约成功后现在会发送确认邮件。
- 修复 Google Calendar 集成 - 预约现在会在 Google Calendar 中创建事件。
- 实现可用时段检查 - 系统会在确认预约前检查可用时段。
- 实现 MCP 服务集成 - 后端处理使用 MCP 服务以增强功能。
🌟 主要功能
- 多步骤预约流程 - 直观的分步预约流程,提升用户体验
- 实时可用时段检查 - 检查 Google Calendar 中是否存在冲突
- 自动发送确认邮件 - 向客户发送详细信息
- Google Calendar 集成 - 创建包含服务详情的日历事件
- MCP 服务集成 - 跟踪预约事件并提供增强的处理能力
- 全面的错误处理 - 为用户提供有意义的反馈
- 响应式设计 - 适用于手机和桌面设备
🚀 部署
前提条件
- Cloudflare Workers 账户
- 已启用 Calendar API 的 Google Cloud 项目
- 有权访问该 Calendar 的 Google 服务账号
- 用于后端处理的 MCP 服务
设置说明
- 克隆代码仓库
git clone https://github.com/Konstrex/booking-system-fixed.git
cd booking-system-fixed
- 安装依赖项
npm install
- 配置环境变量
以下环境变量需要在 wrangler.toml 文件中设置,或使用 Cloudflare 密钥进行设置:
-
Google Calendar 集成
GOOGLE_CLIENT_EMAIL- 已配置为 "[email protected]"GOOGLE_PRIVATE_KEY- 服务账号私钥GOOGLE_CALENDAR_ID- 要使用的日历 ID
-
电子邮件配置
EMAIL_FROM- 用于发送确认邮件的电子邮件地址BUSINESS_NAME- 企业名称(已设为 "Andriana Delcheva")BUSINESS_EMAIL- 用于回复的企业电子邮件地址
-
MCP 服务集成
MCP_ENABLED- 设置为 "true" 以启用 MCP 集成MCP_SERVER_URL- MCP 服务的 URLMCP_API_KEY- 用于向 MCP 服务进行身份验证的 API 密钥
- 使用 Wrangler 设置密钥
对于敏感信息,请使用 Wrangler 的密钥管理功能:
wrangler secret put GOOGLE_PRIVATE_KEY
wrangler secret put GOOGLE_CALENDAR_ID
wrangler secret put MCP_SERVER_URL
wrangler secret put MCP_API_KEY
- 部署到 Cloudflare Workers
npm run deploy:prod
📝 Google Calendar 设置
为确保 Google Calendar 集成正常运行:
-
将服务账号添加到 Google Calendar,以确保其拥有适当权限:
- 打开 Google Calendar
- 前往日历设置
- 在“与特定人员共享”下,添加服务账号电子邮件地址:
[email protected] - 将权限设为“进行更改并管理共享”
-
JWT 身份验证已配置为使用正确的 token_uri:
https://oauth2.googleapis.com/token
📧 电子邮件配置
系统使用 MCP 服务处理电子邮件通知。预约成功后,系统会发送一封包含以下内容的邮件:
- 主题:“预约确认”
- 预约详情(日期、时间、服务)
- Google Calendar 链接
- 预约参考编号
🤖 MCP 服务集成
MCP 服务用于增强功能:
-
事件通知 - 将关键事件通知给 MCP:
- 可用性检查
- 预约创建
- 邮件确认
- 日历事件创建
-
错误处理 - MCP 会接收详细的错误信息,以便监控和调试。
-
预约处理 - 如果已配置,系统可以将整个预约流程交由 MCP 处理。
🧪 测试
在本地测试系统:
npm run dev:local
端到端测试:
- 选择日期和服务
- 检查可用时段
- 输入客户信息
- 完成预约
- 验证预约是否显示在 Google Calendar 中
- 确认是否收到确认邮件
📚 技术实现详情
修复后的预约流程
预约流程已全面重构,确保预约时只发送一次 API 请求。主要改进:
- 多步骤表单,并在每一步进行验证
- 最终预约请求只调用一次 API
- 预约失败时显示清晰的错误消息
- API 调用期间显示加载指示器
修复后的 Google Calendar 集成
Google Calendar 集成现在:
- 使用服务账号进行正确的 JWT 身份验证
- 预约前检查是否已存在事件
- 创建包含所有预约信息的详细日历事件
- 正确格式化日期和时间
- 添加参与者和提醒
增强的错误处理
已实现全面的错误处理:
- 显示具体消息的验证错误
- 提供重试选项的网络错误处理
- 通过 MCP 集成记录服务器错误
- 用户友好的错误消息
📋 API 端点
检查可用性
POST /api/availability
请求正文:
{
"date": "2025-03-15",
"duration": 60
}
响应:
{
"success": true,
"availableSlots": [
{ "startTime": "09:00", "endTime": "10:00" },
{ "startTime": "10:00", "endTime": "11:00" },
/* ... */
]
}
预约
POST /api/book
请求正文:
{
"name": "John Doe",
"email": "[email protected]",
"phone": "+1234567890",
"date": "2025-03-15",
"time": "10:00",
"services": [
{
"name": "Massage",
"duration": 60,
"price": 80
}
],
"notes": "Optional notes",
"agreed": true
}
响应:
{
"success": true,
"message": "Booking created successfully",
"bookingId": "BK-JOHNDO-123456",
"eventId": "calendar_event_id"
}
🔄 持续改进
未来可能的改进包括:
- 添加预约管理仪表板
- 实现预约取消或改期
- 添加支付集成
- 创建客户账户系统
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。