Agents and MCP

An MCP server for your Mac, with permissions you control

Room Service runs a local MCP server inside the app. Claude Code, Codex, and Cursor can see what takes space, what is listening on ports, and what your projects look like, and act only where you let them.

Room Service runs a local MCP server inside the app. Claude Code, Codex, and Cursor can see what takes space, what is listening on ports, and what your projects look like, and act only where you let them.

Room Service runs a local MCP server inside the app. Claude Code, Codex, and Cursor can see what takes space, what is listening on ports, and what your projects look like, and act only where you let them.

MCP Server
CodexConnectedAskingAllowed
Last seen 4m ago • ~/.codex/config.tomlPruned build cache
RemoveDenyAllow
Claude CodeConnectedAskingAllowed
Last seen 2m ago • ~/.claude.jsonforce_quit_process · node 51877Force quit node
RemoveDenyAllow
CursorConnectedAskingAllowed
Last seen 1h ago • ~/.cursor/mcp.jsonDeleted DerivedData
RemoveDenyAllow

Your coding agent knows your repo. It does not know your Mac. When it needs disk space it reaches for rm -rf. When you ask what is eating 80 GB it runs du and reads the output into the conversation, secrets included.

Room Service is an MCP server for Mac: built in, local, and off by default. Turn it on and your agent sees what Room Service sees, and acts only within the permissions you set.

What your agent can see and do

See what takes space, with risk labels. list_categories and get_category return the last scan with your excluded paths applied, each row marked safe, review, or risky.

Clean through the app, not the shell. clean_items runs scan paths through the Clean screen’s own selection rules. The default is Move to Trash, or Quarantine when you have it on. dry_run: true shows exactly what would go.

Find and stop dev servers and stuck builds. list_ports, list_watchers, and list_processes show what is running. stop_port, stop_watcher, and quit_process stop it the way the app’s Stop does.

Read projects and Git state. get_project gives storage breakdowns, health findings, and live Git state. git_sweep reports uncommitted and unpushed work, and only reports.

How it works

  1. Turn it on. Open Settings > Agents and switch on “Allow agents to connect”. Until you do, nothing listens.

  2. Add it to your agent. Settings > Agents writes the entry for Claude Code, Codex, or Cursor with one click. To add it by hand in Claude Code, run the command below. Any other agent can use roomservice mcp as a stdio server.

    claude mcp add --scope user room-service -- roomservice mcp
  3. Allow the agent once. On its first tool call, Room Service shows the agent’s executable path and asks. Allowed agents sit in Settings > Agents, where you can remove one.

  4. Ask your agent. “What is taking space on this Mac?” “Stop whatever is on port 3000.” “Dry-run a cleanup of Xcode build data.”

Safety: what it will and will not do

No network, and off until you turn it on. roomservice mcp relays between the agent and the app over an owner-only Unix socket at ~/.room-service-swift/mcp.sock. Every connection is checked against your user ID, and no TCP port is opened.

Per-group permissions. Each group of tools has its own switch; off means those tools leave the agent’s list. When you turn the server on:

  • Every read group is on, except Sensitive project details.

  • Reversible actions are on and run when the agent asks: move to Trash or Quarantine, quit an app, stop a port or watcher, shut down a simulator.

  • Permanent actions are off: permanent delete, force quit, Docker prune.

Permanent actions ask you every time, and so does SIGTERM. Even when turned on, each permanent action opens a panel in Room Service naming the agent and what will happen, and runs only after you click Allow. It floats above other apps without taking focus, and Return never confirms it, so typing in the agent’s terminal cannot answer it. The agent waits up to two minutes; Deny or no answer means nothing happens. quit_process quits an app normally right away; any other process, a build, a server, a database, gets SIGTERM only after you click Allow, because it cannot ask to save.

Agents are known by executable, not by name. Room Service remembers an allowed agent by the executable macOS reports, so another program cannot pass itself off as Claude Code by name. After a Deny, the same agent is refused for five minutes.

Everything an agent changes is in the Ops Feed. Every action, and every Allow or Deny, is recorded with the agent’s name. Actions run through the same code as the app’s own buttons, with the same checks and history.

Developer Vault is never exposed, and project secrets are hidden by default. Vault has no scope, no tool reads, lists, or unlocks its items, health_check leaves it out, and no setting can change this. get_project and health_check also leave out credential file names (.env, signing keys), secret matches, and private key paths, and say how many were hidden, until you turn that group on in Settings > Agents.

Git Sweep is read-only, and some things never happen. There is no tool to commit, push, stash, or discard anything. An agent’s own processes are never quit. macOS components, Room Service itself, and Apple’s startup items are never touched.

Free vs Pro

Reading is free, as in the app, except the Projects tools. Scans, simulators, recipe drafts, and every dry run are free too. Pro is needed for what needs Pro in the app: Projects, real cleanup, quitting processes, uninstalling apps, running recipes, and every permanent action. Without Pro those tools are not offered to agents.

Frequently Asked Questions

Does Room Service’s MCP server work with Claude Code?

Can an AI agent delete files on my Mac through this?

Is the MCP server exposed on the network?

Can the agent read my API keys or .env files?

What happens if the agent asks for something I did not allow?

Do I need Pro to use the MCP server?

Explore more of Room Service