Gateway · setup guide
Your client already speaks MCP.
Gateway is the bridge. Point it at a running station and every app you have installed shows up as tools in the client you already work in. No change to the apps, no change to the client.
One word, two jobs
What Gateway means.
The word gets used for two related things in the docs, which is worth clearing up before you configure anything.
In this guide
The MCP bridge
A small process that translates between the Agent Apps protocol and MCP. It is what you install into Claude Code or Cursor. This is the sense used on this page.
In the protocol spec
The consumer side
The half of the wire protocol that opens sessions, calls tools and answers callbacks, opposite the Station that serves the apps. Any host can play this role, and the MCP bridge is one of them.
Step one
Serve the apps.
Gateway connects to a station, so something has to be serving your installed apps first. The station is part of the monorepo.
The port is positional. Passing --port fails with Unknown option, because the CLI only accepts a fixed set of global flags and rejects anything else that starts with a dash.
Step two
Point your client at it.
Gateway MCP is not on npm, so each client points at a local build. Replace the path with wherever you cloned it, and keep the station URL matching the port above.
From your project directoryclaude mcp add agent-apps \ -e STATION_URL=http://localhost:4100 \ -- node /path/to/gateway-mcp/dist/index.js
~/Library/Application Support/Claude/claude_desktop_config.jsonOr, at %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"agent-apps": {
"command": "node",
"args": [
"/path/to/gateway-mcp/dist/index.js"
],
"env": {
"STATION_URL": "http://localhost:4100"
}
}
}
}Follows this client's documented MCP config format. Not copied from the Gateway MCP setup guide.
~/.cursor/mcp.jsonOr, at .cursor/mcp.json for a single project
{
"mcpServers": {
"agent-apps": {
"command": "node",
"args": [
"/path/to/gateway-mcp/dist/index.js"
],
"env": {
"STATION_URL": "http://localhost:4100"
}
}
}
}Follows this client's documented MCP config format. Not copied from the Gateway MCP setup guide.
~/.codeium/windsurf/mcp_config.json{
"mcpServers": {
"agent-apps": {
"command": "node",
"args": [
"/path/to/gateway-mcp/dist/index.js"
],
"env": {
"STATION_URL": "http://localhost:4100"
}
}
}
}Follows this client's documented MCP config format. Not copied from the Gateway MCP setup guide.
.vscode/mcp.json{
"servers": {
"agent-apps": {
"type": "stdio",
"command": "node",
"args": [
"/path/to/gateway-mcp/dist/index.js"
],
"env": {
"STATION_URL": "http://localhost:4100"
}
}
}
}Follows this client's documented MCP config format. Not copied from the Gateway MCP setup guide.
settings.json{
"context_servers": {
"agent-apps": {
"command": {
"path": "node",
"args": [
"/path/to/gateway-mcp/dist/index.js"
],
"env": {
"STATION_URL": "http://localhost:4100"
}
}
}
}
}Follows this client's documented MCP config format. Not copied from the Gateway MCP setup guide.
Only the Claude Code snippet comes from the monorepo. The rest follow each editor's documented MCP config format, so check them against the Gateway MCP setup guide if something does not connect.
Step three
Check it took.
Ask the client to list its MCP servers. Once agent-apps is connected, every tool of every installed app is callable in the same conversation.
From here the client does the rest. The apps declare their tools and their permissions, the station runs them, and Gateway carries the traffic between the two.