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에서 Acuity Scheduling 사용자 ID와 API 키가 필요합니다: 비즈니스 설정 → 통합 → 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 credentialsClaude 세션 내에서 계정 전환은 다시 등록할 필요가 없습니다 — 이 서버가 노출하는 모든 도구는 선택적 account 인수를 허용합니다:
"샌드박스 계정의 약속 유형 목록 보기" → Claude가
{"account": "sandbox"}와 함께list_appointment_types를 호출합니다.
언제든지 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환경 변수 (직접 재정의, 계정 파일 불필요)도구 호출 시
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 인수를 허용합니다 (여러 계정 참조).
구현되지 않음 (동일한 패턴, 필요시 나중에 추가): 결제, 블록, 양식, 웹훅, 기프트 인증서.
배운 점 (이 서버를 확장하기 전에 읽어보세요)
변경 호출에서
200 OK가 반환되었다고 해서 변경이 발생한 것은 아닙니다.reschedule_appointment는 원래PUT /appointments/:id를 호출했는데, 이는200을 반환하고 변경되지 않은 약속을 다시 반환했습니다 — Acuity는 해당 엔드포인트에서datetime필드를 조용히 무시했습니다. 수정 방법은cancel_appointment가 이미 사용한 패턴(/appointments/:id/cancel)과 일치하는 전용PUT /appointments/:id/reschedule경로를 사용하는 것이었습니다. 쓰기 후에는 항상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