MCPcontroler
App info

Coming Soon · Mac

A local gateway. A clearer connection.

MCPcontroler is a Mac app in development that puts one local gateway in front of your MCP servers. An AI client connects to a single address and is shown four tools, not every tool on every server.

POST http://127.0.0.1:8765/mcp

{"jsonrpc":"2.0","id":2,"method":"tools/list"}

200 four tools

list_servers
List MCP servers detected and managed by MCPcontroler.
search_tools
Search enabled discovered MCP tools by namespace, server, or description.
describe_tool
Describe one downstream MCP tool by stable namespace.toolName key.
call_tool
Call one enabled downstream MCP tool by stable namespace.toolName key.
What the gateway answered to tools/list in pre-release build 26.0.0 on 11 October 2026. The names and descriptions are as returned; the input schemas are left out. The whole answer, schemas included, is 845 bytes.

Four tools, however many servers.

A drawing of where the gateway sits, not a screenshot.

A client connected straight to several servers is handed the full tool list of each. Through the gateway it gets these four, and looks up the rest when it needs them.

  1. list_servers The servers the gateway knows, each with its state and its number of tools.
  2. search_tools The tools that match a word, by name, server or description. Disabled servers and tools are left out.
  3. describe_tool One tool’s description and input schema, asked for by a key such as filesystem.read_file.
  4. call_tool Runs that one tool on its own server and passes the result back.

A call is refused when the server is disabled or not running, when the tool is switched off, or when the server’s permission preset says no. An unknown key gets a plain answer: “No configured server uses namespace github.”

The address is the same for every client. For Claude Desktop, Cursor, Codex and VS Code, the app prepares the entry to paste into the client’s own configuration.

call_tool notes.read_note

{"toolKey":"notes.read_note","arguments":{"title":"Setlist"}}

200 routed to the server, answer passed back

"Open with the slow one. Encore: the fast one."

call_tool notes.add_note, with the server set to Read Only

{"code":-32005,"message":"Read Only blocks write-like tool calls."}

log Allowed tool call. Routed tool call. Denied tool call.

One call routed start to finish, and one refused, by build 26.0.0’s own gateway code on 11 October 2026. The server was a three-tool sample written for the test, using the message framing this build expects; standard servers are under “Not working yet” below.

You hold the off switch.

The gateway is for the agent. The menu bar and the window are for whoever owns the Mac.

From the menu bar

  • Copy Gateway URL
  • Start Gateway, Stop Gateway
  • Stop All MCPs
  • Scan Local MCPs
  • Open Logs

Stop All MCPs asks first, in these words: “MCPcontroler will stop servers it launched and send stop requests to detected external MCP processes.”

For each server

  • Start, Stop, Restart
  • Enabled, on or off
  • Remove From Inventory

Removing a server changes MCPcontroler’s list, not the client’s file: “MCPcontroler will ignore this detection on future scans until you restore removed detections in Settings.”

In the log

  • Allowed tool call
  • Denied tool call
  • Routed tool call

Each line carries the tool’s key. Secrets are cut before a line is written: Authorization: Bearer sk-sample-1234567890 is kept as Authorization: [redacted].

Presets are a brake, not a sandbox.

Each server has a permission preset: Full Access, Read Only, No Filesystem, No Network or Custom. The gateway applies it before it routes a call, by looking for telling words in the tool’s name, description and arguments. It cannot see what a tool really does.

  • create_issue “Create a new issue in a repository.” Denied
  • list_issues “List issues in a repository.” Allowed
  • query “Run a read-only SQL query.” Denied

Read Only, tried on three sample tools with the build’s own rule. The third is refused for the word “run”. A preset can stop a harmless call and let a harmful one through, so the firm controls are the plain ones: switch the tool off, or the server.

In development

Not working yet.

Finding your servers by itself
The app is written to build its list without being told. It reads the MCP entries that Claude Desktop, Claude Code, Cursor, Codex, VS Code and Windsurf already keep, eleven files in all, and looks for running processes with “mcp” in their command line. Build 4 runs in Apple’s App Sandbox, which keeps an app away from other apps’ files and from the process list, so its scan comes back empty. An earlier build without the sandbox read them.
Talking to standard servers
The MCP specification separates stdio messages with newlines. Build 4 sends and expects Content-Length headers instead, so a server that follows the specification never answers it: in the test, tool discovery was still waiting after 45 seconds. Over HTTP it cannot read a 202 with no body or an event-stream reply, both of which the specification allows. A sample server using the build’s own framing was listed, searched and called at once.
Results a model can read
A tool’s answer comes back inside structuredContent, and the text block says only “Tool call completed.” A client that hands only the text to its model would not see the answer.
MCPcontroler’s own views, drawn with sample servers: a list headed Detected MCPs with notes from Claude Desktop, filesystem and github from Cursor MCP, Postgres from Codex TOML and a running process named weather-mcp, under a gateway status reading Gateway stopped at http://127.0.0.1:8765/mcp with Copy and Start buttons, and Scan at the foot. On wider screens the filesystem server’s detail is beside it, with Start, Stop and Restart, its source /Users/sample/.cursor/mcp.json and its command
The app’s own list and server views, drawn off screen from four sample files and one sample process, all read by the app’s own parser. It is not a screenshot of the running app, and the window frame and toolbar are left out.

What it leaves out.

  • No marketplace. It manages the servers already on your Mac. It does not list or install new ones.
  • No remote access. The gateway listens on 127.0.0.1 only, and there is no LAN mode in this version.
  • No OAuth sign-in. A remote server that needs one cannot be signed in to from the app.
  • No account or relay. Nothing is routed through a Crafter Apps server.

Your Mac, your connections.

The server list, the settings and the log are stored on your Mac, and secrets you add are kept as Keychain items, not in that store. MCPcontroler doesn’t send MCP traffic or tool payloads to Crafter Apps. The one thing it can send is feedback you choose to write in the app. The tools, servers and services you connect may process data under their own policies, and you stay responsible for what you connect and the permissions you grant.

Not yet available to download. The current build needs macOS 26. There is no public offer, price or promised launch date, and what is described here may change before release.

Questions about MCPcontroler? MCPcontroler support · Privacy details