
Salonrunner Mcp
io.github.topness-msftPublished by GitHub account topness-msftv0.2.0Updated Oct 27, 2026
Self-hosted MCP to find, book, and cancel salon appointments via SalonRunner.
The publisher's own server: CrowdHum
Overview
Self-hosted MCP server that lets an assistant find, book and cancel salon appointments through your own SalonRunner client account.
- What you can do
- List bookable services with names, ids and prices, and list stylists, optionally filtered by service
- Find open appointment slots for a service over a date range, optionally for one provider
- List your upcoming appointments
- Book a slot returned by the availability search
- Cancel an appointment by its id
- When to use it
- Useful when you book salon visits through a SalonRunner or Rosy Salon Software booking site and want an assistant to check availability, schedule a slot or cancel an existing appointment for you.
- Requirements
- Runs locally as an npm package (salonrunner-mcp) over stdio, or as a self-deployed HTTP instance for claude.ai. Local mode needs SALONRUNNER_SALON_ID, SALONRUNNER_USERNAME and SALONRUNNER_PASSWORD; HTTP mode needs SESSION_SIGNING_KEY and PUBLIC_URL, with salon credentials entered on the connector login screen. Network access to the salon booking endpoints is required.
Installation
In SourceWeft
- Open Salonrunner Mcp in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
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.
Source: README.md at commit fda34ae
Tools
0Version history
1- v0.2.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Other Crowdhum integrations

CrowdHum
com.crowdhumOfficial publisher
CrowdHum lets an AI assistant create and run live audience polls, share a scan-to-vote QR code, read results in real time and get an AI recap.

Callwright
Published by GitHub account topness-msft
Lets an assistant place real outbound phone calls through Retell to book, confirm, or ask about things on your behalf.