Connect your assistant
Control's MCP server is a remote server: there's nothing to install. Every assistant connects to the same address and signs in with your Control account.
- Server URL:
https://app.cntrl.site/mcp - Transport: Streamable HTTP
- Sign-in: OAuth, on the Control sign-in page. No API key needed.
- You need: a Control account that can edit the project, and an assistant that supports remote MCP servers.
The first time your assistant uses Control, it opens the Control sign-in page. Sign in and approve access. From then on, the assistant acts as you.
- Claude
- Claude Code
- ChatGPT
- Cursor
- VS Code
In Claude on the web or in the desktop app:
- Open Connectors in Claude's settings and choose Add custom connector.
- Name it
Controland pastehttps://app.cntrl.site/mcpas the URL. If Claude asks how to sign in, choose Register automatically. - Choose Connect and sign in with your Control account.
- In a chat, check that Control is turned on in the tools menu.
Custom connectors are available on every Claude plan; the free plan allows one. On Team and Enterprise plans, an owner adds the connector in the organization's settings first, then each member connects with their own Control account. See Anthropic's guide to custom connectors.
Run:
claude mcp add --transport http cntrl https://app.cntrl.site/mcp
Then run /mcp inside Claude Code, choose cntrl and sign in.
The server is added for the current folder. Add --scope user to use it in every folder, or --scope project to share it with your team through the project's .mcp.json.
- Open Plugins, choose +, then Add custom MCP server.
- Name it
Control, pastehttps://app.cntrl.site/mcpas the URL, and choose OAuth for authentication. - Accept the risk acknowledgement and create it, then sign in with your Control account.
- In a chat, add Control from the tools menu.
ChatGPT allows tools that change content, which most of Control's are, on Business, Enterprise and Edu plans, on the web. On those plans an admin or owner creates and publishes the server for the workspace. See OpenAI's guide to custom MCP servers in ChatGPT.
Add Control to ~/.cursor/mcp.json to use it everywhere, or to .cursor/mcp.json in a project:
{
"mcpServers": {
"cntrl": {
"url": "https://app.cntrl.site/mcp"
}
}
}
Then open Cursor Settings → MCP, choose Connect next to cntrl, and sign in.
Run MCP: Add Server from the Command Palette, choose HTTP, and enter https://app.cntrl.site/mcp. Or add it to an mcp.json file yourself:
{
"servers": {
"cntrl": {
"type": "http",
"url": "https://app.cntrl.site/mcp"
}
}
}
Start the server and sign in when VS Code asks. Control's tools are then available to Copilot in agent mode. In Copilot Business and Enterprise organizations, an admin must allow MCP servers first.
Other clients
Most assistants that support remote MCP servers take the server URL directly. Look for "custom connector", "remote MCP server" or "add MCP server" in their settings. For example, in the OpenAI Codex CLI:
codex mcp add cntrl --url https://app.cntrl.site/mcp
If your client only runs local servers, connect through mcp-remote, which runs on your computer and handles the sign-in. It needs Node.js 18 or later.
{
"mcpServers": {
"cntrl": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://app.cntrl.site/mcp", "--transport", "http-only"]
}
}
}
mcp-remote keeps your sign-in in ~/.mcp-auth. Delete that folder to sign in again from scratch.
Check that it works
Ask your assistant: "List my Control projects." It should answer with your projects and their site addresses. If it doesn't, see Troubleshooting.
For developers
Building your own client, or testing the server with the MCP Inspector:
- Endpoint:
POST https://app.cntrl.site/mcp. The server is stateless: there are no sessions and no event stream, soGETandDELETEanswer405. Responses are JSON. - Authorization: a request without a token gets
401with aWWW-Authenticateheader that points to the protected-resource metadata athttps://app.cntrl.site/.well-known/oauth-protected-resource/mcp(RFC 9728). That names the authorization server,https://auth.cntrl.site/, which supports dynamic client registration and the authorization code flow with PKCE. - Requests: send the access token as
Authorization: Bearer <token>. Request bodies are limited to 4 MB. - Tools: 18, listed in the tools reference. Each declares
readOnlyHintordestructiveHintannotations. A refused call returns a tool result withisError: trueand a message saying what to do instead. - Rate limits: 120 requests a minute per user. Past that, the server answers
429withRetry-After: 60.
npx @modelcontextprotocol/inspector
In the Inspector, choose Streamable HTTP, enter the server URL and connect. It runs the sign-in for you.