餐厅AI MCP服务器使用说明

本项目是一个基于Model Context Protocol (MCP) 构建的后端服务,旨在将餐厅的运营功能(如预订、餐桌管理等)以标准化工具的形式暴露给大型语言模型(LLM)客户端。通过这些工具,LLM可以作为智能AI助手,处理顾客请求和协助餐厅员工。

项目简介

该MCP服务器通过JSON-RPC协议与LLM客户端通信,提供了一系列用于管理餐厅的核心功能。它利用Airtable作为后端数据库存储数据,并通过Vercel Serverless Functions实现API层,从而实现了高效、可扩展的餐厅管理系统。

主要功能点

  • 智能预订管理:
    • 实时查询指定日期、时间、人数的餐桌可用性。
    • 自动创建新的顾客预订并返回确认信息。
    • 通过预订ID、电话或姓名查找现有预订详情。
    • 修改现有预订的日期、时间或人数。
    • 取消现有预订并释放餐桌容量。
  • 实时餐桌管理:
    • 获取当前预计的等候时间,帮助AI处理顾客询问。
    • 为入座顾客(包括预订和散客)分配餐桌并创建服务记录。
    • 在顾客用餐结束后,将服务标记为完成,并更新餐桌状态为“正在清理”。
    • 将已清理完毕的餐桌状态更新为“可用”,以便下次使用。
  • 主机仪表盘操作:
    • 获取全面的主机仪表盘数据,包括所有餐桌状态、当前活跃用餐团体和即将到来的预订,协助餐厅员工进行日常管理。

安装步骤

  1. 克隆仓库: 打开您的终端或命令行工具,运行以下命令将项目仓库克隆到本地:

    git clone https://github.com/stefanogebara/restaurant-ai-mcp.git
    cd restaurant-ai-mcp
  2. 安装依赖: 进入项目根目录后,安装所有Node.js项目依赖:

    npm install
  3. Airtable数据库设置:

    • 创建Airtable Base: 访问Airtable官网,创建一个新的Base(数据库)。
    • 创建数据表: 在新创建的Base中,根据项目需求创建以下数据表。您可以参考'scripts/'目录下的文件(如 'scripts/create-tables-table.js', 'scripts/create-service-records-table.js' 等)来获取详细的字段定义。
      • 'Reservations' (预订信息)
      • 'Restaurant Info' (餐厅基本信息,如总容量、营业时间)
      • 'Restaurant Tables' (餐桌信息及状态)
      • 'Service Records' (服务记录,追踪顾客用餐会话)
      • 'Waitlist' (候补名单,如果需要此功能)
    • 获取Airtable ID: 获取您的Airtable Base ID、以及您创建的每个表格的ID。您还需在Airtable中生成一个Personal Access Token作为API密钥。
  4. 配置环境变量: 在项目根目录创建 '.env' 文件,并填入您的Airtable信息和其他相关配置。请将'YOUR_...'替换为实际的值:

    # Airtable API 配置
    AIRTABLE_API_KEY=YOUR_AIRTABLE_PERSONAL_ACCESS_TOKEN
    AIRTABLE_BASE_ID=YOUR_AIRTABLE_BASE_ID
    RESERVATIONS_TABLE_ID=YOUR_RESERVATIONS_TABLE_TABLE_ID
    RESTAURANT_INFO_TABLE_ID=YOUR_RESTAURANT_INFO_TABLE_ID
    TABLES_TABLE_ID=YOUR_TABLES_TABLE_ID
    SERVICE_RECORDS_TABLE_ID=YOUR_SERVICE_RECORDS_TABLE_ID
    WAITLIST_TABLE_ID=YOUR_WAITLIST_TABLE_ID # 如果使用候补名单功能
    
    # 后端API URL (如果部署到Vercel,请替换为您的实际部署URL)
    API_URL=https://<YOUR_VERCEL_DEPLOYMENT_NAME>.vercel.app/api
    
    # 语音AI (ElevenLabs) 或通知服务 (Twilio, Resend) 配置 (如果需要)
    # TWILIO_ACCOUNT_SID=...
    # TWILIO_AUTH_TOKEN=...
    # TWILIO_PHONE_NUMBER=...
    # RESEND_API_KEY=...
    
    # Google Cloud Platform (Vertex AI & Gemini) 配置 (如果使用高级分析或RAG功能)
    # GOOGLE_CLOUD_PROJECT=YOUR_GCP_PROJECT_ID
    # VERTEX_AI_LOCATION=us-central1
    # GOOGLE_APPLICATION_CREDENTIALS=./gcp-credentials.json # 指向您的GCP服务账户密钥文件
    # GEMINI_MODEL=gemini-2.0-flash-exp

    'API_URL' 环境变量应指向项目 'api/' 目录中后端 API 的根路径。如果您将此项目部署到 Vercel,它将是您 Vercel 部署的公共 URL。

  5. 部署后端API(可选,推荐用于生产): 项目中的 'api/' 目录包含了一系列作为Vercel Serverless Functions 的后端 API。如果您计划使用这些功能并希望它们可公开访问,请部署到Vercel。

    vercel --prod

    部署后,将上一步 '.env' 文件中的 'API_URL' 更新为您的Vercel部署URL(例如:'https://restaurant-ai-mcp.vercel.app/api')。

  6. 启动MCP服务器: 确保您已完成上述配置。在项目根目录,运行以下命令启动MCP服务器:

    npm run start:mcp-server

    (注意:如果 'package.json' 中没有 'start:mcp-server' 脚本,您可以手动添加一个 '"start:mcp-server": "node mcp-server/dist/index.js"'。) 服务器将通过标准I/O (Stdio) 接口运行,等待MCP客户端连接。

服务器配置(MCP客户端使用)

MCP客户端(如Claude Desktop、Cursor或其他MCP兼容工具)需要知道如何启动并连接到您的MCP服务器。以下是您可以在MCP客户端中配置的JSON格式信息,用于建立连接:

{
  "server_name": "餐厅AI智能助理",
  "command": "node",
  "args": ["<您的项目路径>/restaurant-ai-mcp/mcp-server/dist/index.js"],
  "description": "连接到餐厅AI MCP服务器,为LLM提供实时餐厅预订、餐桌管理和客户服务工具。",
  "capabilities": {
    "tools": [
      "check_restaurant_availability",
      "create_reservation",
      "lookup_reservation",
      "modify_reservation",
      "cancel_reservation",
      "get_wait_time",
      "get_host_dashboard_data",
      "seat_party",
      "complete_service",
      "mark_table_clean"
    ]
  }
}
  • server_name: 在MCP客户端中显示的服务器友好名称。
  • command: 启动Node.js服务器的命令,通常是 'node'。
  • args: 启动命令的参数,这里是MCP服务器入口文件 'mcp-server/dist/index.js' 的完整路径。请将 '<您的项目路径>' 替换为您的 'restaurant-ai-mcp' 项目在本地文件系统中的绝对路径。
  • description: 对MCP服务器功能的简要描述,供LLM客户端用户理解其用途。
  • capabilities.tools: 明确列出了MCP服务器提供给LLM客户端的所有可用工具的名称。LLM客户端将根据这些名称来调用相应的后端功能。

基本使用方法

一旦MCP服务器成功启动并通过您的MCP客户端连接,您的LLM代理就可以利用服务器提供的工具进行智能交互了:

  • 处理顾客预订请求: LLM可以调用 'check_restaurant_availability' 来检查可用性,然后使用 'create_reservation' 完成预订。
  • 查询或修改预订: LLM可以使用 'lookup_reservation' 查询顾客预订详情,然后根据需要调用 'modify_reservation' 或 'cancel_reservation'。
  • 辅助餐厅主机: LLM可以调用 'get_host_dashboard_data' 获取实时餐厅概览,或使用 'seat_party' 协助安排顾客入座。
  • 管理餐桌状态: LLM可以通过 'complete_service' 标记用餐结束,再通过 'mark_table_clean' 确保餐桌尽快投入使用。

通过这些功能,您的LLM代理将能够有效地处理餐厅的各种运营任务和顾客互动。

信息

分类

商业系统