acuity-mcp
acuity-mcp
ローカルMCPサーバーで、Acuity Scheduling API を Claude Code ツールとして公開します。予約の一覧・作成・再スケジュール・キャンセル、空き状況の確認、予約タイプ、カレンダー、クライアントの一覧を、すべて Claude セッションから直接行えます。複数の Acuity アカウントを並行してサポートし、ツール呼び出しごとに切り替え可能です。
メンテナンスされている無料の Acuity 用 MCP が存在しないため、独自に構築しました。調査中に見つかった唯一の GitHub リポジトリは、公開されていない npm パッケージを指しているだけでした。@modelcontextprotocol/sdk + zod を使用し、stdio 上で動作します。
Claude を使っている場合: 最初にお読みください
ユーザーからセットアップ、Acuity アカウントの追加、アカウントの切り替え、接続のトラブルシューティングを依頼された場合は、このリポジトリ内の .claude/skills/acuity-mcp-setup/SKILL.md を読み込んでください。これにはそのすべての詳細な手順が記載されています。この README は人間向けのリファレンスであり、実際に従うべきはスキルです。
セットアップ前に必要なもの
Acuity の Business Settings → Integrations → API から取得する Acuity Scheduling User ID と API Key が必要です。接続する Acuity アカウントごとに 1 組必要です。
⚠️ Acuity はプラン階層によって API アクセスを制限しています。 一部のプランでは、すべてのリクエストに対して 403: API access is only available on Powerhouse plans が返されます。これはアカウントが Acuity に拒否されているだけで、こちらのバグではありません。Basic Auth が成功し(401 が返らず)、それでもすべての呼び出しで 403 が返される場合は、これが典型的な症状です。該当する場合は、プランをアップグレードするか、同じアカウントへの代替経路(例: Zapier Acuity コネクタ。実際に同じ制限を受けていないことが確認されています)を使用してください。
インストール
npm installクイックスタート — 1 アカウント
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 credentialsClaude セッション内でのアカウント切り替えには、再登録は一切必要ありません。このサーバーが公開するすべてのツールは、オプションの account 引数を受け取ります:
「サンドボックスアカウントの予約タイプを一覧表示して」→ Claude は
list_appointment_typesを{"account": "sandbox"}で呼び出します。
いつでも Claude に list_accounts を実行させると、設定内容とデフォルトがどれかを確認できます。
代わりに、アカウントごとに完全に別々の MCP サーバー登録を実行したい場合(たとえば、それぞれが別の名前のサーバーとして表示されるようにする場合)も、引き続き機能します。呼び出しごとに account を渡す代わりに、ACUITY_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環境変数(直接上書き。accounts ファイルは不要)ツール呼び出しの
account引数、またはACUITY_ACCOUNT環境変数 — 名前で検索accounts.json内のdefaultアカウントaccounts.jsonにアカウントが 1 つだけ設定されている場合 — 自動的に使用従来のフラットな
~/.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 による 1 件の予約の完全な詳細check_availability_dates— 予約タイプに対する月内の空き日check_availability_times— 予約タイプに対する日付の空き時間枠list_clients— 予約をしたクライアントを一覧表示
変更(実際のカレンダーに変更が発生します。これらの呼び出し前に Claude が確認を求めます):
create_appointment— 新しい予約を登録reschedule_appointment— 予約の日時を変更cancel_appointment— 予約をキャンセル
すべてのツールはオプションの account 引数を受け取ります(複数アカウント を参照)。
未実装(同じパターンで、必要なら後で追加): 支払い、ブロック、フォーム、ウェブフック、ギフト券。
学んだ教訓(このサーバーを拡張する前に読んでください)
変更を伴う呼び出しからの
200 OKは、変更が実行されたことを証明しません。reschedule_appointmentは当初PUT /appointments/:idを呼び出しており、200を返して 変更されていない予約をエコーバックしました。Acuity はそのエンドポイントのdatetimeフィールドを黙って無視していました。修正は、専用のPUT /appointments/:id/rescheduleルートで、cancel_appointmentがすでに使用していたパターン(/appointments/:id/cancel)に合わせたものでした。書き込み後は、get_appointmentで再取得してから信頼してください。特に、後で追加する新しい変更ツールではそうです。npx @modelcontextprotocol/inspector --cliは、起動するnode server.jsプロセスにアドホックな環境変数を確実に転送しません。 まだ解決済みのデフォルトではない認証情報をテストする場合(例:ACUITY_USER_ID=x ACUITY_API_KEY=y npx @modelcontextprotocol/inspector --cli ...)、既存の設定に静かにフォールバックして、誤った成功/失敗を返す可能性があります。代わりにnode bin/acuity-accounts.js test <name>を使用してください。これはこの罠を避けるために特別に作られています。インスペクター CLI は元の目的、つまり解決済みのデフォルト認証情報のテストには引き続き問題なく使用できます。または--method tools/listでツールスキーマを確認できます。
手動検証
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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/walakaka77/acuity-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server