ucsd自习室
 
使用您的AI助手或从终端自动预订UCSD价格中心学习室。
您可以做什么:
- 搜索 按日期和时间列出的可用房间
- 书 一个房间瞬间
- 取消 有理由的预订
- 视图 您当前的预订
适用于Claude Code、Codex CLI、Gemini CLI、Cursor和任何兼容MCP的客户端。
快速开始
克劳德代码(推荐)
作为插件安装——无需手动设置,包括自动更新:
claude /plugin marketplace add TheoLee021/claude-plugins
claude /plugin install ucsd-study-room然后设置您的帐户:
study-room config --name "Your Name" --email "you@ucsd.edu"
study-room login就是这样。问克劳德: *“明天下午2点至4点预订自习室”*
其他MCP客户端
如果您正在使用另一个兼容MCP的AI助手(Codex CLI、Gemini CLI、Cursor等),只需复制并粘贴此提示:
Install the ucsd-study-room MCP server:
1. Run: uv tool install ucsd-study-room && uvx --from ucsd-study-room playwright install chromium
2. Add "study-room" to your MCP config: {"command": "uvx", "args": ["--from", "ucsd-study-room", "study-room-mcp"]}
3. Run: study-room config --name "MY NAME" --email "MY_EMAIL@ucsd.edu"
4. Run: study-room login替换 MY NAME 和 MY_EMAIL@ucsd.edu 在粘贴之前,请使用您的真实姓名和UCSD电子邮件。你的AI助手将处理其余的事情。
设置完成后,只需用自然语言询问您的AI助手:
- “明天下午2点至4点搜索可用的自习室”
- “3月11日下午3点至5点,书价中心书房”
- “取消我3月13日的预订”
- “显示我当前的预订”
需求
- Python 3.11或更高版本
- 已安装谷歌Chrome浏览器
- 启用Duo Push的UCSD帐户
平台支持
| 平台 | 状态 | 注释 |
|---|---|---|
| macOS | 完全支持 | 存储在钥匙扣中的凭据 |
| Windows | 支持 | 存储在Windows凭据锁中的凭据 |
| Linux | 支持 | 需要 gnome-keyring 或 kwallet 用于凭证存储;如果不可用,则返回手动登录。跑 playwright install --with-deps chromium 对于系统依赖性。 |
手动安装
uv tool install ucsd-study-room
uvx --from ucsd-study-room playwright install chromiumAlternative: pip install
pip install ucsd-study-room
playwright install chromium如果使用pip,请使用以下配置MCP服务器:
{
"study-room": {
"command": "study-room-mcp"
}
}更新
study-room update或手动: uv tool install ucsd-study-room@latest
初始设置
1.设置您的联系方式(预订前需要):
study-room config --name "Your Name" --email "you@ucsd.edu"2.使用您的UCSD凭据登录(仅限第一次):
study-room login将打开一个Chrome窗口。在系统提示时输入您的UCSD SSO凭据,然后在手机上批准Duo Push通知。您的会话和凭据已保存以供将来使用。
MCP服务器设置
MCP服务器通过stdio进行通信,并与任何兼容MCP的客户端协同工作。将以下内容添加到客户端的MCP配置中:
{
"study-room": {
"command": "uvx",
"args": ["--from", "ucsd-study-room", "study-room-mcp"]
}
}兼容客户端
| 客户端 | 类型 | 配置位置 |
|---|---|---|
| 克劳德代码/Codex CLI/Gemini CLI | CLI | 每个CLI的配置文件 |
| Claude Desktop/Codex Desktop | 桌面应用程序 | 每个应用程序的设置 |
| 光标/风帆/反重力/倾斜 | IDE | 每个IDE的MCP设置 |
配置后,您可以使用自然语言管理预订:
- “明天下午2点至4点搜索可用的自习室”
- “3月11日下午3点至5点,3号书价中心书房”
- “取消我3月13日的预订”
- “这个星期五下午有空房间吗?”
可用的MCP工具
| 工具 | 说明 |
|---|---|
search_rooms | 按日期和时间范围搜索可用房间 |
book_room | 预订特定房间(使用后 search_rooms) |
cancel_reservation | 按日期取消预订并注明取消原因 |
my_events | 列出当前预订,包括日期、房间、状态和ID |
login | 通过UCSD SSO+Duo Push进行身份验证 |
CLI使用情况
命令
| 命令 | 描述 |
|---|---|
study-room login | 使用Duo Push进行SSO登录(打开浏览器进行首次身份验证) |
study-room search | 搜索可用房间 --date, --start, --end 选项 |
study-room search --book | 交互式搜索和预订房间 |
study-room cancel | 以交互方式或通过以下方式取消预订 --date, --reason |
study-room events | 显示当前预订 |
study-room config | 查看或设置用户信息(--name, --email, --attendees) |
study-room status | 检查当前会话是否有效 |
study-room update | 从PyPI更新到最新版本 |
示例
搜索可用房间:
study-room search --date 2026-03-11 --start 15:00 --end 17:00交互式搜索和预订:
study-room search --date 2026-03-11 --start 15:00 --end 17:00 --book取消预订:
study-room cancel # interactive selection
study-room cancel --date 2026-03-13 # by date (prompts for reason)
study-room cancel --date 2026-03-13 --reason "Changed Date"运作原理
- 浏览器自动化 --将Playwright与真正的Chrome结合使用(
channel="chrome")以无头模式与EMS云预订系统交互。 - 认证 --导航到UCSD SAML SSO页面,提交凭据,并等待Duo Push批准。首次登录时,Duo流会打开一个带标题的浏览器窗口。
- 会话管理 --身份验证后,Cookie和浏览器存储状态将保存到
~/.study-room/凭据通过以下方式存储在系统密钥环中keyring库(macOS钥匙串、Windows凭据锁或Linux SecretService)。会议有效期为7天。 - 自动重新登录 --当会话在搜索或预订操作期间到期时,该工具会自动打开一个带头浏览器,从系统密钥环加载凭据,并使用Duo Push重新进行身份验证。
- 房间搜索 --导航到EMS预订页面,填写日期和时间字段,并通过检查DOM中的预订按钮来解析可用房间。
- 预订 --单击所选房间的添加到购物车按钮,填写预订表格(姓名、电子邮件、条款),然后提交预订。
- 取消 --导航到“我的事件”,单击预订链接,从下拉列表中选择取消原因,并确认取消。
配置
配置存储在 ~/.study-room/config.yaml。默认目标房间为价格中心书房1至8。
name: "Your Name"
email: "you@ucsd.edu"
default_attendees: 1
rooms:
- Price Center Study Room 1
- Price Center Study Room 2
- Price Center Study Room 3
- Price Center Study Room 4
- Price Center Study Room 5
- Price Center Study Room 6
- Price Center Study Room 7
- Price Center Study Room 8贡献
欢迎捐款。贡献:
- 分叉存储库
- 创建要素分支(
git checkout -b feature/your-feature) - 提交您的更改
- 推送到分支并打开拉取请求
请确保在提交之前通过现有的测试。
许可证
该项目根据MIT许可证获得许可。看 许可证 了解详情。
