
Salonrunner Mcp
io.github.topness-msft由 GitHub 帳號 topness-msft 發布v0.2.0更新於 Oct 27, 2026
Self-hosted MCP to find, book, and cancel salon appointments via SalonRunner.
發布方自己的服務:CrowdHum
概覽
自架式的 MCP 伺服器,讓助理透過你自己的 SalonRunner 客戶帳號尋找、預約與取消沙龍預約。
- 可以做什麼
- 列出可預約的服務,包含名稱、編號與價格,並可列出設計師(可依服務篩選)
- 在指定日期範圍內查詢某項服務的可預約時段,可限定某位設計師
- 列出你即將到來的預約
- 預約查詢結果中回傳的時段
- 依預約編號取消預約
- 適用情境
- 當你透過 SalonRunner 或 Rosy Salon Software 的預約網站預約沙龍服務,並希望助理代為查詢空檔、安排時段或取消既有預約時適用。
- 執行需求
- 以 npm 套件 salonrunner-mcp 透過 stdio 在本機執行,或自行部署 HTTP 執行個體供 claude.ai 使用。本機模式需要 SALONRUNNER_SALON_ID、SALONRUNNER_USERNAME 與 SALONRUNNER_PASSWORD;HTTP 模式需要 SESSION_SIGNING_KEY 與 PUBLIC_URL,沙龍憑證在連接器登入頁輸入。需要能連線至沙龍預約端點的網路。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Salonrunner Mcp,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
salonrunner-mcp
An MCP server that lets an AI assistant find, book, and cancel salon appointments through your personal SalonRunner / Rosy Salon Software client account — the same booking site many salons use.
It's self-hosted: you deploy your own instance. Run it locally as a tool (Claude Desktop, Cursor, Copilot CLI) where credentials stay on your machine, or as a remote connector for claude.ai where you log in with your SalonRunner account on the connector's login screen.
⚠️ Unofficial, uses undocumented endpoints, personal use only. Read DISCLAIMER.md.
Tools
How it works
customerId is discovered from your account after login; corporateId is read from the JWT.
Availability is computed from the provider's per-service duration and the salon's slot grid
(SALONRUNNER_SLOT_MINUTES, default 15).
Configuration
There are two ways to run it, and they get their salon credentials differently:
- Local (stdio): credentials come from the environment (
.env). - Remote (HTTP, claude.ai): credentials are entered on the connector's login screen and encrypted into the token — the server needs no salon credentials in its environment.
In HTTP mode the salon id + username + password are collected on the login screen (validated by a real SalonRunner login) and encrypted into the OAuth token, so one deployment can serve multiple salons and there are no salon secrets on the server.
Option A — Local (Claude Desktop / Cursor / Copilot CLI)
Published on npm as salonrunner-mcp. Install globally:
Then point your client at the salonrunner-mcp command (no build, no absolute paths). Claude Desktop (claude_desktop_config.json):
Prefer no global install? Use "command": "npx" with "args": ["-y", "salonrunner-mcp"] and the same env.
Run from a clone instead
Then use "command": "node" with "args": ["/absolute/path/to/salonrunner-mcp/dist/stdio.js"] and the same env.
No hosting, no OAuth — credentials stay on your machine. Recommended if you don't need claude.ai.
Option B — Remote (claude.ai custom connector)
claude.ai can only use remote MCP servers, so you deploy your own instance.
Deploy to Fly.io
No salon credentials are configured here — users supply them on the login screen. The server
refuses to start without SESSION_SIGNING_KEY. Credentials are validated by a real
SalonRunner login and then encrypted into the (signed) token, which claude.ai stores, so the app
scales to zero between uses and you authorize only once — cold starts (~3s) are
transparent and never re-prompt.
Connect in claude.ai
- Settings → Connectors → Add custom connector.
- URL:
https://YOUR-APP.fly.dev/mcp - Claude opens the connector's login screen → enter your salon id + username + password.
- The six tools appear in chat.
Run the remote server locally (testing)
Security model
Two independent auth layers:
- claude.ai ↔ this server — OAuth 2.1 (PKCE + dynamic client registration). The login
screen authenticates the user with a real SalonRunner login; the credentials are then
AES-GCM encrypted and embedded inside the HMAC-signed token (keyed by
SESSION_SIGNING_KEY). No server-side session store, so authorization survives restarts and scale-to-zero. - this server ↔ SalonRunner — login → session cookie → short-lived JWT, auto-refreshed, using the credentials decrypted from the caller's token.
The server holds no salon credentials at rest — they live (encrypted) inside each user's
token and are only decrypted in memory per request. One deployment can serve multiple salons.
A leaked token can't be revoked individually; rotate SESSION_SIGNING_KEY to invalidate all
tokens (everyone re-enters credentials once). Keep SESSION_SIGNING_KEY secret and serve only
over HTTPS.
Notes & limitations
- Built on undocumented customer endpoints; they can change without notice. Base URLs are configurable so you can adapt quickly.
- Real bookings/cancellations incur the salon's cancellation-policy fees. Tools surface the
service/provider/time before acting; consider running with
SALONRUNNER_READ_ONLY=truefirst. SALONRUNNER_SLOT_MINUTESmust match your salon's scheduling grid (default 15) for accurate availability.- The officially documented, partner-only Rosy Salon Software API (
api.salonrunner.com) is a separate product requiring a salon-issued ApiKey; this project does not use it.
License
MIT — see LICENSE. No warranty.
來源:README.md,提交 fda34ae
工具
0版本歷史
1- v0.2.0最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分