会议室预订服务

DiSH MCP Server是一个用于管理和预订会议室的协议服务器,支持检查可用性、预订和取消预订,可与日历工具集成。

  • by samgwd
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 samgwd/dish-mcp

使用说明

DiSH MCP服务器

DiSH房间预订网站的模型上下文协议(MCP)服务器。它提供了检查可用性、预订房间和取消预订的工具,以便Cursor或Claude等助理可以管理您的预订。

它能做什么

  • 在您的DiSH地点搜索房间可用性
  • 代表您创建预订
  • 取消或重新安排现有预订
  • 与日历工具配对(例如。, 谷歌日历MCP)将预订与您的日历可用性相协调。

示例提示:

  • “为我本周的所有脱口秀预订会议室。”
  • “把我和约翰的1比1重新安排到明天下午,那时我们都有空,房间也有空。”
  • “为我未来两个月的所有客户演示预订一个会议室。”

需求

  • Python 3.10+
  • uv 用于依赖关系管理

设置

uv sync

配置

必修的:

  • TEAM_ID --您的DiSH团队ID
  • MEMBER_ID --您的DiSH会员ID

身份验证:

  • DISH_COOKIE --你的DiSH connect.sid 会话cookie
  • DISH_EMAIL --可选,当cookie丢失或过期时启用非交互式登录
  • DISH_PASSWORD --可选,当cookie丢失或过期时启用非交互式登录

可选传输配置(用于HTTP模式):

  • MCP_TRANSPORT — stdio (默认)或 http
  • MCP_PORT --HTTP传输端口(默认值: 8000)
  • MCP_HOST --HTTP传输主机(默认: 127.0.0.1)

非交互式cookie刷新

如果你想让克劳德继续工作 connect.sid 过期时,将这些值放入 .env:

TEAM_ID=<YOUR_TEAM_ID>
MEMBER_ID=<YOUR_MEMBER_ID>
DISH_EMAIL=you@example.com
DISH_PASSWORD=<YOUR_PASSWORD>

使用该设置:

  1. MCP将创建 DISH_COOKIE 如果丢失,则自动执行。
  2. 如果API返回 401 或 403,MCP将再次无头登录,更新 DISH_COOKIE 在 .env,然后重试一次请求。
  3. TEAM_ID 和 MEMBER_ID 保持稳定 .env;只有会话cookie会轮换。

这仅在您的DiSH帐户支持直接电子邮件/密码登录时有效。如果您的登录通过谷歌、微软或其他SSO流,则此存储库中没有静默刷新路径,您将需要下面的基于浏览器的流。

自动凭证检索(手动浏览器流)

获取凭据的最简单方法是使用附带的脚本:

# Install Playwright browser (first time only)
uv run playwright install chromium

# Run the credential retrieval script
uv run src/get_credentials.py

这将:

  1. 打开浏览器窗口登录DiSH
  2. 自动检测您何时到达仪表板
  3. 捕获您的cookie、团队ID和成员ID
  4. 将它们保存到您的 .env 文件

手动凭证检索

如果自动方法不起作用,您可以手动检索凭据:

获取您的 connect.sid 曲奇

  1. 在浏览器中登录DiSH。
  2. 打开开发人员工具(F12/Cmd+选项+I)。
  3. 在应用程序/存储>Cookie中,选择DiSH域。
  4. 复制 connect.sid 值(看起来像 s%3A...).
  5. 在你的 .env 文件,集 DISH_COOKIE 到 connect.sid=<value>.

获取您的团队和成员ID

  1. 在浏览器中登录DiSH。
  2. 打开开发人员工具(F12/Cmd+选项+I)。
  3. 在“网络”选项卡中,找到一个请求 occurrences (或 booking-policy).
  4. 在请求URL或有效载荷中,查找 team 和 member 价值观。
  5. 在你的 .env 文件,集 TEAM_ID 和 MEMBER_ID 到各自的值。

保守这个秘密。 不要提交Cookie、团队ID、成员ID或 .env 文件到源代码管理。如果cookie停止工作或曾经暴露,请重新生成cookie。

运行MCP服务器

stdio传输(默认)

与Cursor或Claude Desktop一起使用:

uv run fastmcp run src/mcp_server.py

HTTP传输

对于远程访问或基于web的客户端:

# Default: http://127.0.0.1:8000
uv run python src/mcp_server.py --transport http

# Custom port and host
uv run python src/mcp_server.py --transport http --port 3000 --host 0.0.0.0

或者使用环境变量:

MCP_TRANSPORT=http MCP_PORT=8000 uv run python src/mcp_server.py

HTTP服务器在以下位置公开SSE端点 http://<host>:<port>/sse.

配置您的客户端

光标

"Dish MCP": {
  "command": "<PATH_TO_VENV>/bin/fastmcp",
  "args": ["run", "<PATH_TO_REPO>/src/mcp_server.py"],
  "cwd": "<PATH_TO_REPO>",
  "transport": "stdio"
}

克劳德桌面

添加 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "Dish MCP": {
      "command": "<PATH_TO_VENV>/bin/fastmcp",
      "args": ["run", "<PATH_TO_REPO>/src/mcp_server.py"],
      "cwd": "<PATH_TO_REPO>"
    }
  }
}

服务器从以下位置加载身份验证值 .env 自动。保持 .env 作为真理的源泉 DISH_COOKIE, TEAM_ID, MEMBER_ID, DISH_EMAIL,以及 DISH_PASSWORD 而不是在Claude配置中硬编码这些值。