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.

已验证Streamable HTTP可网页运行效率与工作流商业与电商

概览

AI 生成的概览

远程 MCP 服务器,让助手处理 Easy!Appointments 预约系统的前台事务:查找空档、查询客户,并预约、改期或取消预约。

可以做什么
  • 列出服务及其时长、价格、提供者和营业时区
  • 按服务查询最多 14 天内的可用开始时间,可按提供者和上午、下午、晚上筛选
  • 按姓名、邮箱或电话查找客户,并按客户、提供者或日期范围列出预约
  • 为已有或新客户创建预约
  • 将预约改到新的时间或提供者,或取消未来的预约
  • 记录每次工具调用,生成可导出且已遮蔽个人信息的调用日志
适用场景
适合管理 Easy!Appointments 预约系统的员工,希望让 AI 助手在受控、按权限授权的连接下回答可预约时间并处理预约、改期和取消。
运行要求
需将远程 MCP 端点添加为自定义连接器,并用管理员创建的员工账号通过 OAuth 登录。所连接的 Easy!Appointments 需为 1.5 或更高版本、已启用 API 并设置 API 令牌。自托管需 PHP 8.3 或更高版本或 Docker,生产环境需 HTTPS。
安装前请注意
前台权限可创建、移动和取消真实预约,取消会在 Easy!Appointments 中直接删除预约,没有软取消。每次变更都会触发 Easy!Appointments 发送确认、变更和取消邮件。所连接的 API 令牌为管理员级别,加密存储于服务器。调用日志会遮蔽个人信息,默认保留 90 天。没有自助注册。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Easy!Appointments,将其添加到工作区。
  2. 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

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

ToolAccessWhat it does
list_servicesRead onlyServices with duration, price and who offers them, plus the business time zone
find_open_slotsRead onlyOpen start times for a service over up to 14 days, for one provider or all, filtered by morning, afternoon or evening
find_customerRead onlyCustomers by name, email or phone
list_appointmentsRead onlyBookings for a customer, a provider or a date range
book_appointmentFront deskBooks for an existing or new customer
reschedule_appointmentFront deskMoves a booking to a new time or provider
cancel_appointmentFront deskCancels a future booking

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.

sh
cp .env.docker.example .env.docker# Set APP_KEY (see the comment in the file) and EA_API_TOKEN (any long random string)docker compose up -d --buildsh demo/setup.sh

Then:

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:

sh
php demo/e2e.php http://localhost:8000 [email protected] demo-password-1 front_deskphp demo/e2e.php http://localhost:8000 [email protected] demo-password-1 read

To put the demo on a public server with HTTPS, follow docs/deploy-demo.md.

Install for a real booking system

With Docker:

sh
docker run -d --name ea-mcp \  -e APP_KEY=base64:... \  -e APP_URL=https://mcp.example.com \  -e TRUSTED_PROXIES='*' \  -v ea-mcp-data:/data/app \  -p 8080:8080 \  ea-mcp-server

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:

sh
php artisan ea:connect "Maple Street Physio" https://booking.example.com   # asks for the API tokenphp artisan ea:user [email protected] --name="Anna" --level=front_desk       # asks for a password

--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

sh
composer installcp .env.example .env && php artisan key:generate && php artisan passport:keys && php artisan migratephp artisan testvendor/bin/pint

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
该服务器需要登录,因此 SourceWeft 无法在没有账号的情况下读取其工具,也未收录。已连接账号所能看到的内容可能因账号及其权限而异。

版本历史

1
  1. v0.1.0最新Nov 1, 2026

评分

已满足适用检查项的 85%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分