Projects and deploys
List all projects, browse deploy history, stream build logs, cancel an in-progress build, and roll back to the previous image.
list_projectslist_deploysget_deployget_deploy_logscancel_deployrollbackrelay-mcp is an MCP server that exposes your Relay agent as 26 structured tools. Any MCP-aware client — Cursor, Claude Desktop, VS Code Copilot — can deploy apps, stream build logs, approve promotions, manage secrets, and roll back lanes without leaving the IDE.
{
"mcpServers": {
"relay": {
"command": "npx",
"args": ["-y", "@relay-org/relay-mcp"],
"env": {
"RELAY_URL": "http://your-server:8080",
"RELAY_TOKEN": "your-token"
}
}
}
}The server covers the same operations available in the dashboard and CLI. Use them directly in agent chat or as callable tools from an AI workflow.
List all projects, browse deploy history, stream build logs, cancel an in-progress build, and roll back to the previous image.
list_projectslist_deploysget_deployget_deploy_logscancel_deployrollbackStart, stop, or restart a running container without triggering a new build. Delete a lane and its associated state entirely.
start_appstop_apprestart_appdelete_laneRead or update lane config including access policy, hosts, and engine. List secret key names, write new values, and remove old ones.
get_app_configset_app_configlist_secretsadd_secretremove_secretList pending promotion requests with their approval state and approve a queued staging-to-production promotion without opening the dashboard.
list_promotionsapprove_promotionList all user accounts, read recent audit entries, and get or update server-level config including theme settings. Owner role required.
list_usersget_audit_logget_server_configset_server_configList or remove installed buildpack plugins, generate a time-bounded share URL for a signed-link lane, and restart companion services.
list_buildpack_pluginsremove_buildpack_pluginget_versioncreate_signed_linklist_companionsrestart_companionThe server picks the transport from environment variables. Socket auth requires no token because local access is the permission. HTTP mode sends a Bearer header on every request.
{
"mcpServers": {
"relay": {
"command": "npx",
"args": ["-y", "@relay-org/relay-mcp"],
"env": {
"RELAY_SOCKET": "/path/to/relay.sock"
}
}
}
}{
"mcpServers": {
"relay": {
"command": "npx",
"args": ["-y", "@relay-org/relay-mcp"],
"env": {
"RELAY_URL": "http://your-server:8080",
"RELAY_TOKEN": "your-token"
}
}
}
}RELAY_SOCKETPath to relay.sock. Takes priority over HTTP if set.
RELAY_URLAgent base URL. Defaults to http://127.0.0.1:8080.
RELAY_TOKENBearer token for HTTP transport.
All three clients use the same JSON shape with minor key differences. The server binary is fetched by npx on first use — nothing to install globally.
~/.cursor/mcp.json{
"mcpServers": {
"relay": {
"command": "npx",
"args": ["-y", "@relay-org/relay-mcp"],
"env": {
"RELAY_URL": "http://your-server:8080",
"RELAY_TOKEN": "your-token"
}
}
}
}claude_desktop_config.json{
"mcpServers": {
"relay": {
"command": "npx",
"args": ["-y", "@relay-org/relay-mcp"],
"env": {
"RELAY_URL": "http://your-server:8080",
"RELAY_TOKEN": "your-token"
}
}
}
}.vscode/mcp.json or settings.json{
"servers": {
"relay": {
"command": "npx",
"args": ["-y", "@relay-org/relay-mcp"],
"env": {
"RELAY_URL": "http://your-server:8080",
"RELAY_TOKEN": "your-token"
}
}
}
}Every tool maps directly to a relayd API endpoint. The server validates inputs and surfaces errors back to the AI client as structured tool results.
list_projectsAll projects and environmentslist_deploysRecent deploys, filterable by app/env/branchget_deploySingle deploy record by IDget_deploy_logsBuild/deploy logs for a deploy IDcancel_deployCancel an in-progress deployrollbackRoll back to the previous imagestart_appStart a stopped containerstop_appStop a running containerrestart_appRestart a container without a new builddelete_laneRemove a lane and its stateget_app_configLane config (access policy, hosts, engine)set_app_configUpdate lane configlist_secretsSecret key names for an app laneadd_secretAdd or update a secretremove_secretDelete a secretlist_promotionsPromotion requests with approval stateapprove_promotionApprove a queued promotionlist_usersAll user accounts (owner only)get_audit_logRecent audit entries (owner only)get_server_configServer-level config and themeset_server_configUpdate server config or themelist_buildpack_pluginsInstalled buildpack pluginsremove_buildpack_pluginRemove a buildpack pluginget_versionrelayd and Station version infocreate_signed_linkTime-bounded share URL for signed-link laneslist_companionsCompanion services for an app lanerestart_companionRestart a companion servicenpx fetches and caches the package automatically. For teams that prefer a locked version, install with npm and pin the version in package.json.
npx -y @relay-org/relay-mcp — resolves from npm and caches locally after first run. Add @latest to force a fresh version check.
npm install -g @relay-org/relay-mcp — adds relay-mcp to PATH globally. Change the command in your MCP config to relay-mcp.
npm install @relay-org/relay-mcp in your project — reference the local binary with npx relay-mcp in your MCP config.
# use directly
npx -y @relay-org/relay-mcp
# or install globally
npm install -g @relay-org/relay-mcp
# package name
@relay-org/relay-mcpThese are the two issues teams run into most often: stale local npx cache and npm publish permission mismatches for maintainers.
npx caches packages after first run. If you want to force the latest package version, pin @latest in the MCP command args.
"command": "npx",
"args": ["-y", "@relay-org/relay-mcp@latest"]This error usually means trusted publishing is configured on npm for a different workflow than the one running npm publish.
Relay-CIRelayauto-release.ymlnpm-publishTrusted publishing is package-specific and currently one trusted publisher connection is allowed per package.