Name | mcp-server-booking JSON |
Version |
0.2.1
JSON |
| download |
home_page | None |
Summary | MCP server for CUHKSZ booking system |
upload_time | 2025-08-18 09:17:04 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.9 |
license | MIT |
keywords |
cuhksz
booking
mcp
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# CUHKSZ Booking MCP 服务器
一个基于模型上下文协议 (MCP) 的香港中文大学(深圳)场馆预订系统接口服务。
## 📋 目录
- [项目描述](#项目描述)
- [可用工具](#可用工具)
- [安装与部署](#安装与部署)
- [测试说明](#测试说明)
- [项目架构](#项目架构)
- [实现方式与核心逻辑](#实现方式与核心逻辑)
- [故障排除](#故障排除)
- [许可证与免责声明](#许可证与免z声明)
## ✨ 项目描述
一个基于模型上下文协议 (MCP) 的香港中文大学(深圳)场馆预订系统接口服务,该服务使语言模型能够查询场地信息、检查可用时段并执行在线预订。
## 🛠️ 可用工具
本服务提供了一套结构化的工具,用于查询和预订场地。推荐的调用流程是:
1. 使用 `booking_get_field_info` 获取目标场地类型的总体信息,包括其下的具体场所列表及其 ID。
2. 使用 `booking_get_available_places` 查询在特定时间段内,哪些具体场所是可用的。
3. 使用 `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_available_places`
根据 `booking_get_field_info` 的结果,查询在您指定的时间段内,哪些具体的场所是空闲的。
- **参数说明**:
- `field` (`Literal["badminton"]`): **必须**。要查询的场地类型。
- **约束**: 目前仅支持 `"badminton"`。必须使用英文名称。
- `query_start_time` (`string`) & `query_end_time` (`string`): **必须**。用于获取当天预订信息的查询范围,通常是场地开放的一整天(如 `08:00` 到 `22: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 个场地可用
```
---
### 3. `booking_book`
执行预订操作。您需要提供从前两个工具中获取的 ID。
- **参数说明**:
- `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`。
- `telephone` (`string`): **必须**。您的联系电话。
- `reason` (`string`): **必须**。预订原因或主题 (例如 "🏸" 或 "Badminton Practice")。
- `details` (`string`): **必须**。预订的详细说明。
## 🚀 安装与部署
本服务支持 Docker 部署和本地运行两种方式。
### 1. 使用 Docker (推荐)
此方法最简单,推荐用于生产和日常使用。
**a. 环境准备**
- 安装 [Docker](https://www.docker.com/get-started/) 和 [Docker Compose](https://docs.docker.com/compose/install/)。
- 克隆项目:
```bash
git clone https://github.com/BetterAndBetterII/awesome-cuhksz-mcp.git
cd BOOKING-MCP
```
**b. 配置凭证**
在项目根目录 (`BOOKING-MCP/`) 创建一个 `.env` 文件,并填入您的凭证。
```
# .env 文件内容
BOOKING_USERNAME=你的学号
BOOKING_PASSWORD=你的密码
```
**⚠️ 安全提醒**: 请勿将 `.env` 文件提交到版本控制系统。
**c. 构建和启动服务**
```bash
# 构建并以守护进程模式启动容器
docker-compose up --build -d
# 查看实时日志
docker-compose logs -f booking-mcp
# 停止服务
docker-compose down
```
服务启动后,将在 `http://localhost:3001` 上提供 MCP 接口。
### 2. 本地运行 (用于开发)
**a. 环境准备**
克隆项目并进入目录:
```bash
git clone https://github.com/BetterAndBetterII/awesome-cuhksz-mcp.git
cd BOOKING-MCP
```
创建并激活 Python 虚拟环境:
```bash
python3 -m venv .venv
source .venv/bin/activate
```
安装项目依赖(以可编辑模式):
```bash
pip install -e .
```
**b. 配置凭证**
您可以通过以下两种方式提供凭证(命令行参数优先):
1. **(推荐)创建 `.env` 文件**:
在项目根目录 (`BOOKING-MCP/`) 下创建一个 `.env` 文件。
```
# .env 文件内容
BOOKING_USERNAME=你的学号
BOOKING_PASSWORD=你的密码
```
2. **命令行参数**:
在启动命令中直接提供。
**c. 启动服务**
- 如果您配置了 `.env` 文件:
```bash
# 使用模块名启动 (默认使用 stdio 传输)
python -m mcp_server_booking
# 或
mcp-server-booking
```
- 如果您希望使用命令行参数 (默认使用 stdio 传输):
```bash
python -m mcp_server_booking --username 你的学号 --password 你的密码
```
> **注意**: `stdio` 模式用于直接的进程间通信,不会监听网络端口。如果需要通过网络(如 `http://localhost:3001`)访问服务,或运行 `test/test.py` 脚本,必须在启动时指定 `sse` 传输模式:
> ```bash
> python -m mcp_server_booking --transport sse
> ```
- 如果您希望使用命令行参数提供凭证并使用 SSE 传输:
```bash
python -m mcp_server_booking --transport sse --username 你的学号 --password 你的密码
```
当使用 `sse` 模式启动后,服务将在 `http://localhost:3001` 上提供 MCP 接口。
## 📄 项目架构
### 核心模块说明
- **`
Raw data
{
"_id": null,
"home_page": null,
"name": "mcp-server-booking",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "CUHKSZ, Booking, MCP",
"author": null,
"author_email": "LKCY23 <lkcydream@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/ee/a0/c1a5d4f5d4704ea7c95b26e06cf5242b0d97a0334ffb3dd026a0cc0bd359/mcp_server_booking-0.2.1.tar.gz",
"platform": null,
"description": "# CUHKSZ Booking MCP \u670d\u52a1\u5668\n\n\u4e00\u4e2a\u57fa\u4e8e\u6a21\u578b\u4e0a\u4e0b\u6587\u534f\u8bae (MCP) \u7684\u9999\u6e2f\u4e2d\u6587\u5927\u5b66\uff08\u6df1\u5733\uff09\u573a\u9986\u9884\u8ba2\u7cfb\u7edf\u63a5\u53e3\u670d\u52a1\u3002\n\n## \ud83d\udccb \u76ee\u5f55\n\n- [\u9879\u76ee\u63cf\u8ff0](#\u9879\u76ee\u63cf\u8ff0)\n- [\u53ef\u7528\u5de5\u5177](#\u53ef\u7528\u5de5\u5177)\n- [\u5b89\u88c5\u4e0e\u90e8\u7f72](#\u5b89\u88c5\u4e0e\u90e8\u7f72)\n- [\u6d4b\u8bd5\u8bf4\u660e](#\u6d4b\u8bd5\u8bf4\u660e)\n- [\u9879\u76ee\u67b6\u6784](#\u9879\u76ee\u67b6\u6784)\n- [\u5b9e\u73b0\u65b9\u5f0f\u4e0e\u6838\u5fc3\u903b\u8f91](#\u5b9e\u73b0\u65b9\u5f0f\u4e0e\u6838\u5fc3\u903b\u8f91)\n- [\u6545\u969c\u6392\u9664](#\u6545\u969c\u6392\u9664)\n- [\u8bb8\u53ef\u8bc1\u4e0e\u514d\u8d23\u58f0\u660e](#\u8bb8\u53ef\u8bc1\u4e0e\u514dz\u58f0\u660e)\n\n## \u2728 \u9879\u76ee\u63cf\u8ff0\n\n\u4e00\u4e2a\u57fa\u4e8e\u6a21\u578b\u4e0a\u4e0b\u6587\u534f\u8bae (MCP) \u7684\u9999\u6e2f\u4e2d\u6587\u5927\u5b66\uff08\u6df1\u5733\uff09\u573a\u9986\u9884\u8ba2\u7cfb\u7edf\u63a5\u53e3\u670d\u52a1\uff0c\u8be5\u670d\u52a1\u4f7f\u8bed\u8a00\u6a21\u578b\u80fd\u591f\u67e5\u8be2\u573a\u5730\u4fe1\u606f\u3001\u68c0\u67e5\u53ef\u7528\u65f6\u6bb5\u5e76\u6267\u884c\u5728\u7ebf\u9884\u8ba2\u3002\n\n## \ud83d\udee0\ufe0f \u53ef\u7528\u5de5\u5177\n\n\u672c\u670d\u52a1\u63d0\u4f9b\u4e86\u4e00\u5957\u7ed3\u6784\u5316\u7684\u5de5\u5177\uff0c\u7528\u4e8e\u67e5\u8be2\u548c\u9884\u8ba2\u573a\u5730\u3002\u63a8\u8350\u7684\u8c03\u7528\u6d41\u7a0b\u662f\uff1a\n1. \u4f7f\u7528 `booking_get_field_info` \u83b7\u53d6\u76ee\u6807\u573a\u5730\u7c7b\u578b\u7684\u603b\u4f53\u4fe1\u606f\uff0c\u5305\u62ec\u5176\u4e0b\u7684\u5177\u4f53\u573a\u6240\u5217\u8868\u53ca\u5176 ID\u3002\n2. \u4f7f\u7528 `booking_get_available_places` \u67e5\u8be2\u5728\u7279\u5b9a\u65f6\u95f4\u6bb5\u5185\uff0c\u54ea\u4e9b\u5177\u4f53\u573a\u6240\u662f\u53ef\u7528\u7684\u3002\n3. \u4f7f\u7528 `booking_book` \u9884\u8ba2\u4e00\u4e2a\u786e\u5207\u7684\u53ef\u7528\u573a\u6240\u3002\n\n---\n\n### 1. `booking_get_field_info`\n\u67e5\u8be2\u6307\u5b9a\u573a\u5730\u7c7b\u578b\u5728\u67d0\u4e00\u5929\u5185\u7684\u57fa\u672c\u4fe1\u606f\uff0c\u5305\u62ec\u6240\u6709\u5177\u4f53\u573a\u6240\u7684\u5217\u8868\u548c\u5f53\u5929\u7684\u9884\u8ba2\u60c5\u51b5\u3002\n\n- **\u53c2\u6570\u8bf4\u660e**:\n - `field` (`Literal[\"badminton\"]`): **\u5fc5\u987b**\u3002\u8981\u67e5\u8be2\u7684\u573a\u5730\u7c7b\u578b\u3002\n - **\u7ea6\u675f**: \u76ee\u524d\u4ec5\u652f\u6301 `\"badminton\"`\u3002\u5fc5\u987b\u4f7f\u7528\u82f1\u6587\u540d\u79f0\u3002\n - `start_time` (`string`): **\u5fc5\u987b**\u3002\u67e5\u8be2\u8303\u56f4\u7684\u5f00\u59cb\u65f6\u95f4\u3002\n - **\u683c\u5f0f**: `YYYY-MM-DD HH:MM`\u3002\n - `end_time` (`string`): **\u5fc5\u987b**\u3002\u67e5\u8be2\u8303\u56f4\u7684\u7ed3\u675f\u65f6\u95f4\u3002\n - **\u683c\u5f0f**: `YYYY-MM-DD HH:MM`\u3002\n\n- **\u8fd4\u56de\u793a\u4f8b**:\n ```\n \u573a\u5730\u4fe1\u606f:\n \u573a\u5730\u540d\u79f0: badminton\n \u573a\u5730ID: 1097\n \n \u53ef\u7528\u573a\u6240:\n - \u7fbd\u6bdb\u7403\u573a1 (ID: 1100)\n - \u7fbd\u6bdb\u7403\u573a2 (ID: 1101)\n ...\n \n \u5f53\u524d\u9884\u8ba2 (3 \u4e2a):\n - Booker: \u5f20\u4e09, Start Time: ..., End Time: ..., Reason: ..., PlaceID: 1100\n ...\n ```\n\n---\n\n### 2. `booking_get_available_places`\n\u6839\u636e `booking_get_field_info` \u7684\u7ed3\u679c\uff0c\u67e5\u8be2\u5728\u60a8\u6307\u5b9a\u7684\u65f6\u95f4\u6bb5\u5185\uff0c\u54ea\u4e9b\u5177\u4f53\u7684\u573a\u6240\u662f\u7a7a\u95f2\u7684\u3002\n\n- **\u53c2\u6570\u8bf4\u660e**:\n - `field` (`Literal[\"badminton\"]`): **\u5fc5\u987b**\u3002\u8981\u67e5\u8be2\u7684\u573a\u5730\u7c7b\u578b\u3002\n - **\u7ea6\u675f**: \u76ee\u524d\u4ec5\u652f\u6301 `\"badminton\"`\u3002\u5fc5\u987b\u4f7f\u7528\u82f1\u6587\u540d\u79f0\u3002\n - `query_start_time` (`string`) & `query_end_time` (`string`): **\u5fc5\u987b**\u3002\u7528\u4e8e\u83b7\u53d6\u5f53\u5929\u9884\u8ba2\u4fe1\u606f\u7684\u67e5\u8be2\u8303\u56f4\uff0c\u901a\u5e38\u662f\u573a\u5730\u5f00\u653e\u7684\u4e00\u6574\u5929\uff08\u5982 `08:00` \u5230 `22:00`\uff09\u3002\n - **\u683c\u5f0f**: `YYYY-MM-DD HH:MM`\u3002\n - `check_start_time` (`string`) & `check_end_time` (`string`): **\u5fc5\u987b**\u3002\u60a8\u5e0c\u671b\u9884\u8ba2\u7684**\u5177\u4f53**\u65f6\u95f4\u6bb5\u3002\n - **\u683c\u5f0f**: `YYYY-MM-DD HH:MM`\u3002\n\n- **\u8fd4\u56de\u793a\u4f8b**:\n ```\n \u65f6\u95f4\u6bb5 2025-01-01 17:00 \u5230 2025-01-01 18:00 \u7684\u53ef\u7528\u573a\u5730:\n\n - \u7fbd\u6bdb\u7403\u573a2 (ID: 1101)\n - \u7fbd\u6bdb\u7403\u573a4 (ID: 1103)\n\n \u5171 2 \u4e2a\u573a\u5730\u53ef\u7528\n ```\n\n---\n\n### 3. `booking_book`\n\u6267\u884c\u9884\u8ba2\u64cd\u4f5c\u3002\u60a8\u9700\u8981\u63d0\u4f9b\u4ece\u524d\u4e24\u4e2a\u5de5\u5177\u4e2d\u83b7\u53d6\u7684 ID\u3002\n\n- **\u53c2\u6570\u8bf4\u660e**:\n - `field_id` (`string`): **\u5fc5\u987b**\u3002\u8981\u9884\u8ba2\u7684**\u573a\u5730\u7c7b\u578b**\u7684 ID\uff0c\u4ece `booking_get_field_info` \u83b7\u53d6 (\u4f8b\u5982\uff0c\u7fbd\u6bdb\u7403\u573a\u5730\u7684 ID \u662f \"1097\")\u3002\n - `place_id` (`string`): **\u5fc5\u987b**\u3002\u8981\u9884\u8ba2\u7684**\u5177\u4f53\u573a\u6240**\u7684 ID\uff0c\u4ece `booking_get_available_places` \u7684\u8fd4\u56de\u7ed3\u679c\u4e2d\u9009\u53d6\u3002\n - `start_time` (`string`) & `end_time` (`string`): **\u5fc5\u987b**\u3002\u9884\u8ba2\u7684\u8d77\u6b62\u65f6\u95f4\u3002\n - **\u683c\u5f0f**: `YYYY-MM-DD HH:MM`\u3002\n - `telephone` (`string`): **\u5fc5\u987b**\u3002\u60a8\u7684\u8054\u7cfb\u7535\u8bdd\u3002\n - `reason` (`string`): **\u5fc5\u987b**\u3002\u9884\u8ba2\u539f\u56e0\u6216\u4e3b\u9898 (\u4f8b\u5982 \"\ud83c\udff8\" \u6216 \"Badminton Practice\")\u3002\n - `details` (`string`): **\u5fc5\u987b**\u3002\u9884\u8ba2\u7684\u8be6\u7ec6\u8bf4\u660e\u3002\n\n## \ud83d\ude80 \u5b89\u88c5\u4e0e\u90e8\u7f72\n\n\u672c\u670d\u52a1\u652f\u6301 Docker \u90e8\u7f72\u548c\u672c\u5730\u8fd0\u884c\u4e24\u79cd\u65b9\u5f0f\u3002\n\n### 1. \u4f7f\u7528 Docker (\u63a8\u8350)\n\n\u6b64\u65b9\u6cd5\u6700\u7b80\u5355\uff0c\u63a8\u8350\u7528\u4e8e\u751f\u4ea7\u548c\u65e5\u5e38\u4f7f\u7528\u3002\n\n**a. \u73af\u5883\u51c6\u5907**\n\n- \u5b89\u88c5 [Docker](https://www.docker.com/get-started/) \u548c [Docker Compose](https://docs.docker.com/compose/install/)\u3002\n- \u514b\u9686\u9879\u76ee:\n ```bash\n git clone https://github.com/BetterAndBetterII/awesome-cuhksz-mcp.git\n cd BOOKING-MCP\n ```\n\n**b. \u914d\u7f6e\u51ed\u8bc1**\n\n\u5728\u9879\u76ee\u6839\u76ee\u5f55 (`BOOKING-MCP/`) \u521b\u5efa\u4e00\u4e2a `.env` \u6587\u4ef6\uff0c\u5e76\u586b\u5165\u60a8\u7684\u51ed\u8bc1\u3002\n\n```\n# .env \u6587\u4ef6\u5185\u5bb9\nBOOKING_USERNAME=\u4f60\u7684\u5b66\u53f7\nBOOKING_PASSWORD=\u4f60\u7684\u5bc6\u7801\n```\n**\u26a0\ufe0f \u5b89\u5168\u63d0\u9192**: \u8bf7\u52ff\u5c06 `.env` \u6587\u4ef6\u63d0\u4ea4\u5230\u7248\u672c\u63a7\u5236\u7cfb\u7edf\u3002\n\n**c. \u6784\u5efa\u548c\u542f\u52a8\u670d\u52a1**\n\n```bash\n# \u6784\u5efa\u5e76\u4ee5\u5b88\u62a4\u8fdb\u7a0b\u6a21\u5f0f\u542f\u52a8\u5bb9\u5668\ndocker-compose up --build -d\n\n# \u67e5\u770b\u5b9e\u65f6\u65e5\u5fd7\ndocker-compose logs -f booking-mcp\n\n# \u505c\u6b62\u670d\u52a1\ndocker-compose down\n```\n\u670d\u52a1\u542f\u52a8\u540e\uff0c\u5c06\u5728 `http://localhost:3001` \u4e0a\u63d0\u4f9b MCP \u63a5\u53e3\u3002\n\n### 2. \u672c\u5730\u8fd0\u884c (\u7528\u4e8e\u5f00\u53d1)\n\n**a. \u73af\u5883\u51c6\u5907**\n\n\u514b\u9686\u9879\u76ee\u5e76\u8fdb\u5165\u76ee\u5f55\uff1a\n```bash\ngit clone https://github.com/BetterAndBetterII/awesome-cuhksz-mcp.git\ncd BOOKING-MCP\n```\n\n\u521b\u5efa\u5e76\u6fc0\u6d3b Python \u865a\u62df\u73af\u5883\uff1a\n```bash\npython3 -m venv .venv\nsource .venv/bin/activate\n```\n\n\u5b89\u88c5\u9879\u76ee\u4f9d\u8d56\uff08\u4ee5\u53ef\u7f16\u8f91\u6a21\u5f0f\uff09\uff1a\n```bash\npip install -e .\n```\n\n**b. \u914d\u7f6e\u51ed\u8bc1**\n\n\u60a8\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u4e24\u79cd\u65b9\u5f0f\u63d0\u4f9b\u51ed\u8bc1\uff08\u547d\u4ee4\u884c\u53c2\u6570\u4f18\u5148\uff09\uff1a\n\n1. **\uff08\u63a8\u8350\uff09\u521b\u5efa `.env` \u6587\u4ef6**:\n \u5728\u9879\u76ee\u6839\u76ee\u5f55 (`BOOKING-MCP/`) \u4e0b\u521b\u5efa\u4e00\u4e2a `.env` \u6587\u4ef6\u3002\n ```\n # .env \u6587\u4ef6\u5185\u5bb9\n BOOKING_USERNAME=\u4f60\u7684\u5b66\u53f7\n BOOKING_PASSWORD=\u4f60\u7684\u5bc6\u7801\n ```\n\n2. **\u547d\u4ee4\u884c\u53c2\u6570**:\n \u5728\u542f\u52a8\u547d\u4ee4\u4e2d\u76f4\u63a5\u63d0\u4f9b\u3002\n\n**c. \u542f\u52a8\u670d\u52a1**\n\n- \u5982\u679c\u60a8\u914d\u7f6e\u4e86 `.env` \u6587\u4ef6\uff1a\n ```bash\n # \u4f7f\u7528\u6a21\u5757\u540d\u542f\u52a8 (\u9ed8\u8ba4\u4f7f\u7528 stdio \u4f20\u8f93)\n python -m mcp_server_booking\n # \u6216\n mcp-server-booking\n ```\n\n- \u5982\u679c\u60a8\u5e0c\u671b\u4f7f\u7528\u547d\u4ee4\u884c\u53c2\u6570 (\u9ed8\u8ba4\u4f7f\u7528 stdio \u4f20\u8f93)\uff1a\n ```bash\n python -m mcp_server_booking --username \u4f60\u7684\u5b66\u53f7 --password \u4f60\u7684\u5bc6\u7801\n ```\n \n> **\u6ce8\u610f**: `stdio` \u6a21\u5f0f\u7528\u4e8e\u76f4\u63a5\u7684\u8fdb\u7a0b\u95f4\u901a\u4fe1\uff0c\u4e0d\u4f1a\u76d1\u542c\u7f51\u7edc\u7aef\u53e3\u3002\u5982\u679c\u9700\u8981\u901a\u8fc7\u7f51\u7edc\uff08\u5982 `http://localhost:3001`\uff09\u8bbf\u95ee\u670d\u52a1\uff0c\u6216\u8fd0\u884c `test/test.py` \u811a\u672c\uff0c\u5fc5\u987b\u5728\u542f\u52a8\u65f6\u6307\u5b9a `sse` \u4f20\u8f93\u6a21\u5f0f\uff1a\n> ```bash\n> python -m mcp_server_booking --transport sse\n> ```\n\n- \u5982\u679c\u60a8\u5e0c\u671b\u4f7f\u7528\u547d\u4ee4\u884c\u53c2\u6570\u63d0\u4f9b\u51ed\u8bc1\u5e76\u4f7f\u7528 SSE \u4f20\u8f93\uff1a\n ```bash\n python -m mcp_server_booking --transport sse --username \u4f60\u7684\u5b66\u53f7 --password \u4f60\u7684\u5bc6\u7801\n ```\n\n\u5f53\u4f7f\u7528 `sse` \u6a21\u5f0f\u542f\u52a8\u540e\uff0c\u670d\u52a1\u5c06\u5728 `http://localhost:3001` \u4e0a\u63d0\u4f9b MCP \u63a5\u53e3\u3002\n\n## \ud83d\udcc4 \u9879\u76ee\u67b6\u6784\n\n### \u6838\u5fc3\u6a21\u5757\u8bf4\u660e\n\n- **`\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "MCP server for CUHKSZ booking system",
"version": "0.2.1",
"project_urls": null,
"split_keywords": [
"cuhksz",
" booking",
" mcp"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "b86574e3fb2bf1aaa23c305aa99d5d9532b064f71994fd1713171595a31897f0",
"md5": "ae3302ffb559bbf09eb5dfc4efddb88c",
"sha256": "c86aacf7e7a60ee1573eccdaccc81d746cffb5a49bc1646ce49b602088729b3a"
},
"downloads": -1,
"filename": "mcp_server_booking-0.2.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ae3302ffb559bbf09eb5dfc4efddb88c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 15115,
"upload_time": "2025-08-18T09:17:02",
"upload_time_iso_8601": "2025-08-18T09:17:02.768777Z",
"url": "https://files.pythonhosted.org/packages/b8/65/74e3fb2bf1aaa23c305aa99d5d9532b064f71994fd1713171595a31897f0/mcp_server_booking-0.2.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "eea0c1a5d4f5d4704ea7c95b26e06cf5242b0d97a0334ffb3dd026a0cc0bd359",
"md5": "fcfa2b645db6db77ce60dde1cde36a31",
"sha256": "7fc0112904278281540d1d0297f7f89592d4f09468a447fb08b0f8e379fda089"
},
"downloads": -1,
"filename": "mcp_server_booking-0.2.1.tar.gz",
"has_sig": false,
"md5_digest": "fcfa2b645db6db77ce60dde1cde36a31",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 19181,
"upload_time": "2025-08-18T09:17:04",
"upload_time_iso_8601": "2025-08-18T09:17:04.304194Z",
"url": "https://files.pythonhosted.org/packages/ee/a0/c1a5d4f5d4704ea7c95b26e06cf5242b0d97a0334ffb3dd026a0cc0bd359/mcp_server_booking-0.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-18 09:17:04",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "mcp-server-booking"
}