acuity-mcp
acuity-mcp
一个本地 MCP 服务器,将 Acuity Scheduling API 暴露为 Claude Code 工具——列出/创建/重新安排/取消预约、检查可用性、列出预约类型、日历和客户,全部直接在 Claude 会话中完成。支持多个 Acuity 账户并行,每个工具调用可切换。
Built custom because no maintained free MCP for Acuity exists — the only GitHub repo found during research pointed at an npm package that was never published. Uses @modelcontextprotocol/sdk + zod, runs over stdio.
如果你是 Claude:请先阅读此内容
如果用户要求你设置此工具、添加 Acuity 账户、切换账户或排查连接问题,请加载此仓库中的 .claude/skills/acuity-mcp-setup/SKILL.md——它包含所有步骤的完整说明。本 README 是面向人类的参考;技能文件才是你实际应遵循的内容。
Related MCP server: leximo-ai-call-assistant-mcp-server
设置前需要什么
一个 Acuity Scheduling 用户 ID 和 API 密钥,来自 Acuity:Business Settings → Integrations → API。每个要连接的 Acuity 账户需要一对。
⚠️ Acuity 按计划层级限制 API 访问。 某些计划对每个请求返回 403: API access is only available on Powerhouse plans——这是 Acuity 拒绝你的账户,而非此处错误。基本认证成功(无 401)但每次调用仍返回 403 是此问题的特征。如果遇到,要么升级计划,要么使用同一账户的替代路径(例如 Zapier Acuity 连接器,经验表明它不受相同限制)。
安装
npm install快速开始——一个账户
node bin/acuity-accounts.js add production --user-id <your-user-id> --api-key <your-api-key>你添加的第一个账户自动成为默认账户。然后向 Claude Code 注册服务器:
claude mcp add acuity -s user -- node "$(pwd)/server.js"启动新的 Claude Code 会话(或在现有会话中运行 /mcp),以便工具显示。
无需 Claude 会话即可验证其是否工作:
node bin/acuity-accounts.js test多个账户
添加任意数量的命名账户:
node bin/acuity-accounts.js add production --user-id 1111111 --api-key aaaa... --label "Real account"
node bin/acuity-accounts.js add sandbox --user-id 2222222 --api-key bbbb... --label "Trial/test account"凭据保存在 ~/.config/acuity-mcp/accounts.json 中(chmod 600,绝不在此仓库内,绝不提交)。管理它们:
node bin/acuity-accounts.js list # see configured accounts (never prints API keys)
node bin/acuity-accounts.js set-default sandbox # change which one is used by default
node bin/acuity-accounts.js remove sandbox # remove one
node bin/acuity-accounts.js test sandbox # verify one specific account's credentials在 Claude 会话内切换账户无需重新注册任何内容——此服务器暴露的每个工具都接受可选的 account 参数:
"列出沙盒账户的预约类型" → Claude 调用
list_appointment_types,参数为{"account": "sandbox"}。
随时要求 Claude 运行 list_accounts 以查看已配置的账户及默认账户。
如果你更希望为每个账户运行完全独立的 MCP 服务器注册(例如,使每个服务器显示为不同名称),那仍然可行——将 ACUITY_ACCOUNT 指向一个名称,而不是每次调用传递 account:
claude mcp add acuity-production -s user -e ACUITY_ACCOUNT=production -- node "$(pwd)/server.js"
claude mcp add acuity-sandbox -s user -e ACUITY_ACCOUNT=sandbox -- node "$(pwd)/server.js"凭据解析顺序
ACUITY_USER_ID+ACUITY_API_KEY环境变量(直接覆盖,无需账户文件)工具调用中的
account参数,或ACUITY_ACCOUNT环境变量——按名称查找accounts.json自身的default账户accounts.json中仅配置了一个账户——自动使用旧式平面文件
~/.config/acuity-mcp/credentials(ACUITY_USER_ID=.../ACUITY_API_KEY=...行)——为向后兼容旧版单账户设置而支持
工具
仅本地,无 Acuity API 调用:
list_accounts——列出已配置的账户名称/标签及默认账户(绝不显示 API 密钥)
只读:
list_appointment_types——列出可预约的咨询类型list_calendars——列出日历/员工list_appointments——可按日期范围/日历/类型/取消状态筛选get_appointment——按 ID 获取单个预约的完整详情check_availability_dates——某月内某预约类型的可用日期check_availability_times——某日期某预约类型的可用时间段list_clients——已预约的客户
变更(对实时日历进行实际更改——Claude 在调用这些工具前会请求确认):
create_appointment——预约新预约reschedule_appointment——更改预约的日期/时间cancel_appointment——取消预约
所有工具都接受可选的 account 参数(参见多个账户)。
未实现(相同模式,如有需要可稍后添加):支付、封锁、表单、Webhook、礼品券。
经验教训(扩展此服务器前请阅读)
来自变更调用的
200 OK并不证明变更已发生。reschedule_appointment最初调用PUT /appointments/:id,返回200并回显了未更改的预约——Acuity 在该端点上静默忽略了datetime字段。修复方法是使用专用的PUT /appointments/:id/reschedule路由,匹配cancel_appointment已使用的模式(/appointments/:id/cancel)。在写入后始终使用get_appointment重新获取以确认,尤其是对于以后添加的任何新变更工具。npx @modelcontextprotocol/sdk+zod的用法。reschedule_appointment最初调用PUT /appointments/:id,返回200并回显了未更改的预约——Acuity 在该端点上静默忽略了datetime字段。修复方法是使用专用的PUT /appointments/:id/reschedule路由,匹配cancel_appointment已使用的模式(/appointments/:id/cancel)。在写入后始终使用get_appointment重新获取以确认,尤其是对于以后添加的任何新变更工具。
手动验证
node bin/acuity-accounts.js test # tests the default/env-resolved account
node bin/acuity-accounts.js test <name> # tests one specific named account
npx @modelcontextprotocol/inspector --cli node server.js --method tools/list # confirms the server starts and tools register correctlyThis server cannot be deployed
Maintenance
Related MCP Connectors
Hosted MCP server for Cliniko — patients, appointments, availability, and invoices for AI agents.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server for Cronofy — read calendars, events and free/busy, and create, update or delete events.
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that connects Claude Desktop and Claude Code to your Calendly account, enabling natural-language scheduling management.7MIT
- AlicenseAqualityFmaintenanceAn MCP server that lets you schedule AI phone calls and manage Leximo assignments directly from Claude Desktop or Claude Code.1342 npm2MIT
- FlicenseBqualityDmaintenanceMCP server for Cal.com scheduling, providing ~70 tools to manage schedules, event types, bookings, calendars, webhooks, and teams. Enables natural language control of Cal.com from Claude or any MCP-compatible client.68-
- AlicenseNot gradedqualityDmaintenanceA local MCP server for CalDAV that gives Claude read access to your calendar, enabling planning, conflict checking, and schedule summaries.MIT