mcpField
T
tend-mcp

tend-mcp

本地服务
github.com/nries1健康医疗012 周前更新

关于 tend-mcp

tend-mcp 是一个非官方 MCP 服务,通过 Tend 网络应用使用的内部接口,为单个 Tend 账户提供牙科预约功能。它支持查看诊所、服务类型、预约和可用时段,以及预订;接口并非公开文档,可能随网站变化而失效。

主要功能

  1. 01列出诊所和服务类型
  2. 02查看账户预约
  3. 03搜索可预约时段
  4. 04预订牙科预约
  5. 05通过密码或刷新令牌自动续期登录

适用场景

  1. 01查看个人已有的牙科预约
  2. 02搜索可用时段并安排预约
  3. 03通过 MCP 客户端操作单个 Tend 账户

MCP 相关

此 MCP 服务向客户端提供 Tend 账户的诊所、服务类型、预约、时段搜索和预订工具。每个实例仅访问一个账户自身的数据,并依赖 Tend 网络应用使用的未公开接口。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"nries1-tend": {
"command": "npx",
"args": [
"-y",
"tend-mcp"
],
"env": {
"TEND_EMAIL": "<TEND_EMAIL>",
"TEND_PASSWORD": "<TEND_PASSWORD>",
"TEND_REFRESH_TOKEN": "<TEND_REFRESH_TOKEN>"
}
}
}
}
启动命令npx -y tend-mcp
需要配置的环境变量
TEND_EMAILYour Tend account email.
TEND_PASSWORD密钥Your Tend account password. Set this OR TEND_REFRESH_TOKEN, not both required.
TEND_REFRESH_TOKEN密钥A Cognito refresh token obtained by hand from DevTools (see README). Alternative to TEND_PASSWORD.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmtend-mcp0.1.2

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

tend-mcp

适用于 Tend 牙科服务的非官方 MCP(Model Context Protocol)服务——与 Tend 无关,也未获其认可或支持。它调用的是 Tend 自家 Web 应用所用的内部 API 端点,这些端点是通过浏览器开发者工具发现的,并非已发布或有文档说明的 API。如果 Tend 更改前端,请做好它随时失效的准备。

使用风险自负。 我们尚未依据 Tend 的服务条款对此进行审核——运行前请自行阅读条款,并做好在 Tend 提出异议时立即停止使用的准备。每个实例都使用一个 Tend 账户进行身份验证,且只访问该账户自身的数据;本项目并非为访问其他患者的记录而设计,也无此用途。

状态

已实现,并通过实际 HAR 捕获记录验证(2026-08-01):记录了一次真实的登录 → 选择诊所 → 选择服务 → 选择时间 → 预约流程;身份验证也经过实时测试:list_studios、list_service_types(静态参考数据——见下文)、list_appointments、search_available_slots、book_appointment(已确认实时有效——捕获记录中包含一条真实预约,并获得了真实的 Dentrix external_id)。

身份验证现已完全可用——有两种方式。 Tend 通过其位于 identity.hellotend.com 的轻量代理使用 AWS Cognito 进行身份验证。你可以任选一种:

  • TEND_PASSWORD — 使用真实的邮箱和密码登录(POST identity.hellotend.com/login,已确认实时有效),与实际 Web 应用发出的请求相同。客户端无需处理 Cognito SRP 流程;Tend 的后端会处理。
  • TEND_REFRESH_TOKEN — 跳过登录,通过 DevTools 手动获取一次即可(见下文)。

无论使用哪种方式,TendClient 都会自动保持登录状态:会话通过 Cognito 的 REFRESH_TOKEN_AUTH 自动续期(Authorization: Bearer <idToken>,令牌有效期约 24 小时——已确认实时有效);如果刷新令牌过期或被撤销,且已设置 TEND_PASSWORD,则会改用密码重新登录。

设置

npm install
cp .env.example .env   # fill in TEND_EMAIL and (TEND_PASSWORD or TEND_REFRESH_TOKEN)
npm run dev             # or: npm run build && npm start

通过将其添加到 MCP 配置中,让 MCP 客户端(Claude Desktop 等)连接到此服务,例如 Claude Desktop 的 claude_desktop_config.json:

{
  "mcpServers": {
    "tend": {
      "command": "node",
      "args": ["/absolute/path/to/tend-mcp/dist/index.js"],
      "env": { "TEND_EMAIL": "[email protected]", "TEND_PASSWORD": "..." }
    }
  }
}

获取刷新令牌(如果不使用 TEND_PASSWORD)

  1. 在 Chrome 中登录 hellotend.com。
  2. 打开 DevTools → Application → Cookies → hellotend.com。
  3. 将 refreshToken Cookie 的值复制到 TEND_REFRESH_TOKEN。

TEND_PASSWORD 和 TEND_REFRESH_TOKEN 都是长期有效的凭据——请像保护密码一样保管,而不要把它们当作 API 密钥。 尤其是刷新令牌,可以在无需重新输入任何信息的情况下长期签发新会话。切勿提交其中任何一个,也不要将它们粘贴到可能会记录内容的任何地方——包括 AI 聊天中。这并非假设:构建此集成时,真实的有效令牌曾两次意外泄露到聊天会话中(一次是直接粘贴原始 Cookie,一次是不完整的脱敏脚本遗漏了 token 这一敏感字段名)。不要依赖 HAR“净化”功能或临时编写的脱敏脚本。如果你怀疑其中任何凭据已泄露,请在所有设备上退出 Tend,或更改密码。

添加其他端点

登录 hellotend.com,打开 DevTools → Network → Fetch/XHR,执行相应操作并记下请求。然后按照现有方法的结构,在 TendClient 中添加一个方法(将原始 snake_case API 字段映射到 camelCase TS 接口),并在 tools.ts 中添加对应的工具。

如果你要导出 HAR 文件进行操作,请注意:响应正文(不仅仅是标头)仍包含真实的个人身份信息(PII)——分享前请先对其中的个人字段(姓名、邮箱、电话、保险信息、出生日期)进行脱敏;无论导出工具是否会自动清除 Cookie/令牌值,都绝不要分享这些值。此处的 .gitignore 已排除 *.har,因此这类文件不会进入 git。

设计约束(请遵守)

  • 每个实例仅对应一个账户。 不要使用多租户凭据存储,也不要使用在服务器端保存多个用户登录信息的代理。
  • 不得规避反机器人机制。 如果 Tend 登录需要 MFA 或触发了机器人检测,应向用户说明(或明确报错),而不是尝试绕过这些机制进行自动化操作。
  • 不得使用真实患者门户未向该患者公开的端点。 不要添加任何会访问其他患者数据的功能。
  • tendClient.ts 中的 STUDIOS/SERVICE_TYPES 是固定快照,不是实时数据。 没有找到它们的稳定 API(请参见 STUDIOS 上方的注释)——随着 Tend 新增或关闭工作室,或更改服务,这些数据会在不提示的情况下过时。建议定期根据新的抓取结果重新核对,不要假定它们仍是最新的。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。