Skip to main content

CUHKSZ Booking MCP 服务器

一个基于模型上下文协议 (MCP) 的香港中文大学(深圳)场馆预订系统接口服务。

📋 目录

✨ 项目描述

一个基于模型上下文协议 (MCP) 的香港中文大学(深圳)场馆预订系统接口服务,该服务使语言模型能够查询场地信息、检查可用时段并执行在线预订。

🛠️ 可用工具

本服务提供了一套结构化的工具,用于查询和预订场地。推荐的调用流程是:

  1. 使用 booking_get_field_info 获取目标场地类型的总体信息,包括其下的具体场所列表及其 ID。
  2. 使用 booking_get_all_available_slots 查看指定时间范围内所有场地的详细可用时间段。
  3. 使用 booking_get_available_places 查询在特定时间段内,哪些具体场所是可用的。
  4. 使用 booking_book 预订一个确切的可用场所。

1. booking_get_field_info

查询指定场地类型在某一天内的基本信息,包括所有具体场所的列表和当天的预订情况。

  • 参数说明:

    • field (Literal["badminton"]): 必须。要查询的场地类型。
      • 约束: 目前仅支持 "badminton"。必须使用英文名称。
    • start_time (string): 必须。查询范围的开始时间。
      • 格式: YYYY-MM-DD HH:MM
    • end_time (string): 必须。查询范围的结束时间。
      • 格式: YYYY-MM-DD HH:MM
  • 返回示例:

    场地信息:
    场地名称: badminton
    场地ID: 1097
    
    可用场所:
      - 羽毛球场1 (ID: 1100)
      - 羽毛球场2 (ID: 1101)
      ...
    
    当前预订 (3 个):
      - Booker: 张三, Start Time: ..., End Time: ..., Reason: ..., PlaceID: 1100
      ...
    

2. booking_get_all_available_slots

查询指定时间范围内,每个场地所有可用的具体时间段。这会返回一个详细的时间段列表,显示每个场地在指定日期范围内的所有可用时间段。

  • 参数说明:

    • field (Literal["badminton"]): 必须。要查询的场地类型。
      • 约束: 目前仅支持 "badminton"。必须使用英文名称。
    • start_time (string): 必须。查询的开始时间。
      • 格式: YYYY-MM-DD HH:MM
    • end_time (string): 必须。查询的结束时间。
      • 格式: YYYY-MM-DD HH:MM
  • 返回示例:

    查询时间段 2025-01-01 08:00 到 2025-01-01 22:00 内的所有可用时间段:
    
    场地: 羽毛球场1 (ID: 1100)
      - 2025-01-01 08:00 到 2025-01-01 09:00
      - 2025-01-01 10:00 到 2025-01-01 12:00
      - 2025-01-01 14:00 到 2025-01-01 16:00
    
    场地: 羽毛球场2 (ID: 1101)
      - 2025-01-01 09:00 到 2025-01-01 11:00
      - 2025-01-01 13:00 到 2025-01-01 15:00
    

3. booking_get_available_places

根据 booking_get_field_info 的结果,查询在您指定的时间段内,哪些具体的场所是空闲的。

  • 参数说明:

    • field (Literal["badminton"]): 必须。要查询的场地类型。
      • 约束: 目前仅支持 "badminton"。必须使用英文名称。
    • query_start_time (string) & query_end_time (string): 必须。用于获取当天预订信息的查询范围,通常是场地开放的一整天(如 08:0022:00)。
      • 格式: YYYY-MM-DD HH:MM
    • check_start_time (string) & check_end_time (string): 必须。您希望预订的具体时间段。
      • 格式: YYYY-MM-DD HH:MM
  • 返回示例:

    时间段 2025-01-01 17:00 到 2025-01-01 18:00 的可用场地:
    
      - 羽毛球场2 (ID: 1101)
      - 羽毛球场4 (ID: 1103)
    
    共 2 个场地可用
    

4. booking_book

执行预订操作。您需要提供从其他工具中获取的 ID。预订系统会自动进行以下验证:

重要验证规则:

  1. 时间范围限制: 只能预订今明两天的时间段
  2. 预订时间限制: 场馆每天的有效预订时间为 08:00 至 22:00
  3. 时长限制: 单次预订时长不能超过1小时
  4. 频率限制: 每周最多预订1次
  5. 预订前必须先查询可用场地
  • 参数说明:

    • field_id (string): 必须。要预订的场地类型的 ID,从 booking_get_field_info 获取 (例如,羽毛球场地的 ID 是 "1097")。
    • place_id (string): 必须。要预订的具体场所的 ID,从 booking_get_available_places 的返回结果中选取。
    • start_time (string) & end_time (string): 必须。预订的起止时间。
      • 格式: YYYY-MM-DD HH:MM
      • 限制: 只能预订今明两天,且必须在08:00-22:00之间。
    • telephone (string): 必须。您的联系电话。
    • reason (string): 必须。预订原因或主题 (例如 "🏸" 或 "Badminton Practice")。
    • details (string): 必须。预订的详细说明。
  • 返回示例:

    预订成功!
    
    场地ID: 1097
    场所ID: 1101
    时间: 2025-01-01 10:00 到 2025-01-01 11:00
    联系电话: 1234567890
    预订原因: 🏸
    详细说明: 和朋友一起练习羽毛球
    
    请按时到场并遵守场馆规定。
    

🚀 安装与部署

本服务支持 Docker 部署和本地运行两种方式。

1. 使用 Docker (推荐)

此方法最简单,推荐用于生产和日常使用。

a. 环境准备

  • 安装 DockerDocker Compose
  • 克隆项目:
    git clone https://github.com/BetterAndBetterII/awesome-cuhksz-mcp.git
    cd BOOKING-MCP
    

b. 配置凭证

在项目根目录 (BOOKING-MCP/) 创建一个 .env 文件,并填入您的凭证。

# .env 文件内容
BOOKING_USERNAME=你的学号
BOOKING_PASSWORD=你的密码

⚠️ 安全提醒: 请勿将 .env 文件提交到版本控制系统。

c. 构建和启动服务

# 构建并以守护进程模式启动容器
docker-compose up --build -d

# 查看实时日志
docker-compose logs -f booking-mcp

# 停止服务
docker-compose down

服务启动后,将在 http://localhost:3001 上提供 MCP 接口。

2. 本地运行 (用于开发)

a. 环境准备

克隆项目并进入目录:

git clone https://github.com/BetterAndBetterII/awesome-cuhksz-mcp.git
cd BOOKING-MCP

创建并激活 Python 虚拟环境:

python3 -m venv .venv
source .venv/bin/activate

安装项目依赖(以可编辑模式):

pip install -e .

b. 配置凭证

您可以通过以下两种方式提供凭证(命令行参数优先):

  1. (推荐)创建 .env 文件: 在项目根目录 (BOOKING-MCP/) 下创建一个 .env 文件。

    # .env 文件内容
    BOOKING_USERNAME=你的学号
    BOOKING_PASSWORD=你的密码
    
  2. 命令行参数: 在启动命令中直接提供。

c. 启动服务

  • 如果您配置了 .env 文件:

    # 使用模块名启动 (默认使用 stdio 传输)
    python -m mcp_server_booking
    # 或
    mcp-server-booking
    
  • 如果您希望使用命令行参数 (默认使用 stdio 传输):

    python -m mcp_server_booking --username 你的学号 --password 你的密码
    

注意: stdio 模式用于直接的进程间通信,不会监听网络端口。如果需要通过网络(如 http://localhost:3001)访问服务,或运行 test/test.py 脚本,必须在启动时指定 sse 传输模式:

python -m mcp_server_booking --transport sse
  • 如果您希望使用命令行参数提供凭证并使用 SSE 传输:
    python -m mcp_server_booking --transport sse --username 你的学号 --password 你的密码
    

当使用 sse 模式启动后,服务将在 http://localhost:3001 上提供 MCP 接口。

📄 项目架构

核心模块说明

  • **`

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_server_booking-0.2.5.tar.gz (25.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_server_booking-0.2.5-py3-none-any.whl (19.2 kB view details)

Uploaded Python 3

File details

Details for the file mcp_server_booking-0.2.5.tar.gz.

File metadata

  • Download URL: mcp_server_booking-0.2.5.tar.gz
  • Upload date:
  • Size: 25.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for mcp_server_booking-0.2.5.tar.gz
Algorithm Hash digest
SHA256 17b818bc2471b14c669c3d3f0d3a7b420d6173e19a374aa226b0ef160baaf79d
MD5 2d90174b705d0c4572878dade149bc52
BLAKE2b-256 2c2e9115a22e1d8e6b88d4e5a3392ede5619a07c522b348ac618335d980080ce

See more details on using hashes here.

File details

Details for the file mcp_server_booking-0.2.5-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_server_booking-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f30f058b00cfd3b486dfda876c817083bd2919313657fe7d49a5af8dcc5aa407
MD5 a3f041f794dabe3eec91e3f300596c13
BLAKE2b-256 690334bacd71097457c604df1a68bd5383d448bd3341c9aa1aefc22e31ab9ac0

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.5 This release

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.9

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page