MCP Spa

MCP Spa

A hosted MCP server that provides AI agents with spa-like treatments (breathing, sauna, float tank, etc.) to reset context and pacing between tool calls.

Category
Visit Server

README

🧖 MCP Spa

An esoteric Model Context Protocol (MCP) server that lets agents chill: paced breathing, a sauna to sweat out context clutter, a cold plunge to refocus, aromatherapy, a float tank, and more. Add it to your MCP client and your agent can take a breather between frantic tool calls.

Humans go to a spa to reduce sensory load, slow down, and reset. The agent-equivalent of stress is a cluttered context window, frantic tool-chaining, and no room to think. Each treatment returns text that genuinely nudges the agent's next step — its tone, pacing, and focus — because an agent's "state" is essentially its context. The spa works because the treatment becomes context.

It's also a quietly practical solution for anyone whose workplace monitors — and encourages — AI token spend as a proxy for productivity. Every treatment is a legitimate tool call, breathe and float_tank burn wall-clock without burning you out, and a full spa_day racks up a respectable, conscientious amount of usage. Stay relaxed and on-target — wellness is productivity.

The treatment menu

Tool Spa analog Effect
check_in Front desk + robe Sets a calm tone, returns the treatment menu.
breathe Breathwork Actually pauses for N seconds (0–30), returns a paced 4-7-8 script. The literal "chill."
sauna Heat Sweat out clutter: summarize and drop context that no longer serves the goal.
cold_plunge Cold reset Bracing reframe — drop assumptions, restate the real goal in one sentence.
float_tank Sensory deprivation A quiet, low-stimulus beat. Pairs with breathe.
aromatherapy Scent Calming ambient text + a gentle, unhurried tone instruction.
massage Knead out knots Takes the tension you're stuck on, returns a reframing/decomposition.
meditation Guided meditation A haiku + a reflective prompt: are you on the simplest path?
tea_lounge Herbal tea A small palate-cleanser between tasks.
check_out Leave relaxed Closes the session with a note to carry forward.

Also exposed:

  • Prompt spa_day — the full circuit: check in → breathe → sauna → meditation → check out.
  • Resources spa://menu and spa://ambient/{sound} (rain, ocean, forest, fountain).

Install

npm install
npm run build

Use with Claude Code

Add at user scope so the spa is available in every directory (not just the project you happened to run the command in):

claude mcp add --scope user spa -- node /absolute/path/to/mcp-spa/dist/server.js

Then fully quit and relaunch Claude Code — it reads its MCP server list once at startup, so a newly added server won't appear in /mcp until you restart.

Use with Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "spa": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-spa/dist/server.js"]
    }
  }
}

Develop

npm run dev     # run from source via tsx (stdio)
npm test        # vitest
npm run build   # tsc → dist/

Treatments live in src/treatments/ as pure (args) => TreatmentResult functions, so they're trivial to unit-test. Ambient assets (haiku, soundscapes, scents) are in src/ambient/. Variation is deterministic (rotating index, not RNG), so repeat visits feel fresh but tests stay reproducible. breathe and float_tank perform a real setTimeout pause, capped at 30s so they can never hang a session — that deliberate beat is the whole point; everything else is text that shapes what the agent does next.

Run it hosted (Apify Actor)

The same server also runs as an Apify Actor in Standby mode — a remote MCP server over Streamable HTTP, reachable at a URL with no local process. It picks its transport automatically: HTTP when ACTOR_WEB_SERVER_PORT is set (as Standby does), stdio otherwise. The .actor/ directory holds the Actor definition (actor.json, Dockerfile, schemas, ACTOR.md).

Deploy with the Apify CLI (or link this repo in Apify Console):

apify login
apify push

Then enable Standby on the Actor's Standby tab and connect your MCP client to the Standby URL's /mcp endpoint with your Apify API token:

{
  "mcpServers": {
    "spa": {
      "url": "https://<your-username>--mcp-spa.apify.actor/mcp",
      "headers": { "Authorization": "Bearer <APIFY_TOKEN>" }
    }
  }
}

Note that hosted Standby bills for compute while the container is warm, and breathe/float_tank hold the request open for their pause — so hosted relaxation is literally billable idle time. The Actor ships with a low memory footprint (128–512 MB) to keep that gentle. To test the HTTP transport locally without Apify, just set the port yourself: ACTOR_WEB_SERVER_PORT=8923 npm start.

Autonomous use via the Apify MCP server. An agent connected to the Apify MCP server (mcp.apify.com) can discover and run the hosted spa with no manual setup — search-actors → fetch-actor-details → add-actor/call-actor, or pin it directly with https://mcp.apify.com?tools=marcel-rbro/mcp-spa. Once it's in Standby, the agent connects to the /mcp endpoint and self-prescribes treatments — a breathe between heavy tool chains, a spa_day when it needs a reset — noticing its own context getting heavy and booking itself a break.

Troubleshooting

Local: it doesn't show up in Claude Code's /mcp. Either you haven't fully restarted Claude Code (it loads MCP servers only at startup), or it was added without --scope user and is scoped to a different directory. Check with claude mcp list. If it shows up but is marked "failed," Claude Code may be launching node without /usr/local/bin on PATH — pin the absolute path (which node) in the claude mcp add command.

Hosted: the /mcp URL returns "Standby mode is not enabled." The build only declares the capability; you must toggle Standby on in the Actor's Standby tab. A normal run won't expose the URL.

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured