
Easy!Appointments
ai.qiyuanlabs由 qiyuanlabs.ai 發布官方發布者v0.1.0更新於 Nov 1, 2026
Find open slots, book, move and cancel Easy!Appointments bookings, with OAuth and a call log.
概覽
遠端 MCP 伺服器,讓助理處理 Easy!Appointments 預約系統的櫃檯事務:尋找空檔、查詢客戶,並預約、改期或取消預約。
- 可以做什麼
- 列出服務及其時長、價格、提供者與營業時區
- 依服務查詢最多 14 天內的可用開始時間,可依提供者與上午、下午、晚上篩選
- 依姓名、電子郵件或電話尋找客戶,並依客戶、提供者或日期範圍列出預約
- 為既有或新客戶建立預約
- 將預約改到新的時間或提供者,或取消未來的預約
- 記錄每次工具呼叫,產生可匯出且已遮蔽個人資料的呼叫日誌
- 適用情境
- 適合管理 Easy!Appointments 預約系統的員工,希望讓 AI 助理在受控、依權限授權的連線下回答可預約時段並處理預約、改期與取消。
- 執行需求
- 需將遠端 MCP 端點加入為自訂連接器,並以管理員建立的員工帳號透過 OAuth 登入。所連接的 Easy!Appointments 需為 1.5 或更新版本、已啟用 API 並設定 API 權杖。自架需 PHP 8.3 或更新版本或 Docker,正式環境需 HTTPS。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Easy!Appointments,將其新增到工作區。
- 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
- 為需要使用其工具的對話啟用該服務。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
交給代理程式安裝
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/ai.qiyuanlabs%2Feasyappointments/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。其他 MCP 客戶端
把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。
{
"mcpServers": {
"easy-appointments": {
"type": "http",
"url": "https://ea-mcp-demo.qiyuanlabs.ai/mcp"
}
}
}README
Easy!Appointments MCP server
A remote MCP server that lets Claude, ChatGPT and other AI assistants work the front desk of an Easy!Appointments booking system: find open slots, look up customers, and book, move or cancel appointments.
It is built for the people who run the booking system, not only for developers:
- Sign in with OAuth. Staff connect their AI assistant with their own login. The Easy!Appointments API token never leaves the server.
- Two access levels per connection. Read only sees services, open times, customers and bookings. Front desk can also book, reschedule and cancel. Each person has a ceiling set by an administrator.
- Nothing changes without a preview. Every change is a two-step call: a preview the assistant shows to the person, then a confirmed call with an idempotency key, so a retried request never books twice.
- A call log. Every tool call is recorded with masked personal details, the Easy!Appointments requests it made and how long it took. Staff can see it, export it as CSV and disconnect any assistant.
- Gentle on Easy!Appointments. The API allows 100 requests per IP every two minutes. The server caches the catalog and open times and caps how many days one search covers.
Not affiliated with or endorsed by Easy!Appointments. Easy!Appointments is a trademark of its owner.
Tools
Easy!Appointments sends its usual confirmation, change and cancellation emails for every change made through the API.
Requirements
- Easy!Appointments 1.5 or newer with the API enabled (Settings > Integrations > API: set an API token). Tested with 1.6.1.
- PHP 8.3 or newer, or Docker.
- HTTPS in production. AI clients will not connect to a plain HTTP server on the internet.
Run the demo locally
The compose file starts Easy!Appointments 1.6.1, a mail catcher and this server, then seeds a fictional physio clinic with services, providers, customers and two weeks of bookings.
Then:
- MCP server: http://localhost:8000/mcp (sign in as
[email protected]/demo-password-1) - Easy!Appointments: http://localhost:8080 (
administrator/administrator) - Emails Easy!Appointments sent: http://localhost:8025
To check the whole flow without an AI client, run the end-to-end script. It registers an OAuth client, signs in, picks an access level and calls every tool, including a real booking that it then moves and cancels:
To put the demo on a public server with HTTPS, follow docs/deploy-demo.md.
Install for a real booking system
With Docker:
Put it behind your HTTPS load balancer or reverse proxy, or set SERVER_NAME=mcp.example.com and publish ports 80 and 443 to let the built-in Caddy get a certificate. Run php artisan schedule:work in a second container from the same image to prune old logs and expired tokens daily.
Without Docker it is a standard Laravel 13 app: composer install --no-dev, copy .env.example to .env, php artisan key:generate, php artisan passport:keys, php artisan migrate, and point your web server at public/.
Then link the booking system and add staff:
--level is the most that person may grant an assistant. They still choose per assistant on the consent screen.
If ea:connect gets a 401 from a working token, your web server is not passing the Authorization header to PHP. On Apache with PHP-FPM add SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 to the Easy!Appointments vhost.
Connect an AI assistant
Add https://your-server/mcp as a custom connector (Claude: Settings > Connectors; ChatGPT: a workspace connector in developer mode). The client registers itself, opens the sign-in page, and the person picks Read only or Front desk. They can change or remove that at any time on /dashboard.
Security model
- The Easy!Appointments API token is admin-level, so it is stored encrypted on this server and never sent to clients. Each person signs in with their own account and gets a short-lived token (1 hour, refreshable for 30 days) that only works here.
- Tools a connection may not use are not listed to the assistant, and are refused if called anyway.
- Writes need a confirmed second call with an idempotency key. The slot is checked again, uncached, right before booking.
- Names, emails, phone numbers, addresses, notes and search text are masked in the call log. Easy!Appointments error messages that echo customer records are stripped before they reach the assistant or the log.
- Logs are kept 90 days by default (
MCP_LOG_RETENTION_DAYS).
Known limits
- The Easy!Appointments API cannot check availability while ignoring the booking being moved, so a reschedule that overlaps its own current time is refused with an explanation. Cancel and rebook in that case.
- Cancelling deletes the booking in Easy!Appointments; there is no soft cancel in the API.
- One server can link several Easy!Appointments instances, one per account. There is no self-service sign-up; an administrator adds people with
ea:user.
Development
Tests run against an in-memory fake of the Easy!Appointments API (tests/Support/FakeEasyAppointments.php). demo/e2e.php runs against a real instance.
License
MIT
來源:README.md,提交 1e56f89
工具
0版本歷史
1- v0.1.0最新Nov 1, 2026
評分
已滿足適用檢查項的 85%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通必需25 分
- 已宣告認證方式必需10 分
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分