Connect an AI client
The exact MCP configuration for Claude, Claude Code, Cursor, ChatGPT and everything else — no token to copy
Atribu's MCP server is a Streamable HTTP endpoint at one address:
https://mcp.atribu.app/mcpEvery recipe on this page is the same address handed to a different client. None of them carries a credential. The server speaks OAuth 2.1 with dynamic client registration, so the first time a client calls a tool it sends you to Atribu's own consent screen, where you tick what it may read. A static token is a separate thing, for scripts and CI — see the Quickstart.
The same recipes live in the app
Developer → Connected apps → Connect an AI client shows every config below with a copy button, and lists the clients you have already authorized so you can disconnect one. This page and that panel are generated from the same source, so they cannot disagree.
Pick your client
Add Atribu as a custom connector in Claude on the web.
Open Settings → Connectors (on Pro and Max this is Customize → Connectors).
Click Add, then Add custom connector.
Paste the URL and click Add:
https://mcp.atribu.app/mcpSign in to Atribu in the window that opens and choose the access you grant.
Plans
Custom connectors using remote MCP are available on the Free, Pro, Max, Team and Enterprise plans. On Free you can have one custom connector. On Team and Enterprise an owner adds it under Organization settings → Connectors and members then click Connect.
Same connector, in the desktop app. There is nothing to install — Claude reaches the server itself, so no mcp-remote bridge and no edit to claude_desktop_config.json.
Open Settings (Ctrl/⌘ + ,), then click Connectors.
Click Add, then Add custom connector.
Paste the URL and click Add:
https://mcp.atribu.app/mcpSign in to Atribu and approve. The connector's tools now appear in the chat's attachment menu.
Register the server once per machine:
claude mcp add --transport http atribu https://mcp.atribu.app/mcpThe server answers the first call with 401, which is Claude Code's signal to start the OAuth flow. Run /mcp inside Claude Code to sign in, to see the connection, or to clear it. Tokens are stored and refreshed for you.
To share the server with a repository instead, commit a project-scoped .mcp.json:
{
"mcpServers": {
"atribu": {
"type": "http",
"url": "https://mcp.atribu.app/mcp"
}
}
}Cursor installs an MCP server from a deep link. Open this one — the console's Open in Cursor button is the same link:
cursor://anysphere.cursor-deeplink/mcp/install?name=atribu&config=eyJ1cmwiOiJodHRwczovL21jcC5hdHJpYnUuYXBwL21jcCJ9The config parameter is base64 of {"url":"https://mcp.atribu.app/mcp"} — the server object, nothing more. It carries no headers and no token: Cursor runs the OAuth flow for remote servers itself.
If your browser or OS will not open cursor:// links, add the same server by hand in ~/.cursor/mcp.json (or .cursor/mcp.json for one project):
{
"mcpServers": {
"atribu": {
"url": "https://mcp.atribu.app/mcp"
}
}
}ChatGPT reaches custom MCP servers through developer mode.
Open Settings → Security and login and turn on Developer mode. Availability depends on your plan and, inside a workspace, on your admin's policy.
Create a new connection and give it a name and description.
Under Connection, enter the MCP server URL — the /mcp path included:
https://mcp.atribu.app/mcpCreate the connection, then review the tools ChatGPT discovered.
Any client that speaks the Streamable HTTP transport works. Point it at the same URL:
{
"mcpServers": {
"atribu": {
"type": "http",
"url": "https://mcp.atribu.app/mcp"
}
}
}Leave out any Authorization header. The client will be sent through Atribu's sign-in on its first call — or, if it cannot open a browser, give it a personal access token instead.
What the first connection asks for
The client sends you to Atribu's consent screen. It names the client, the account you are signed in as, and one checkbox per scope. Untick anything you do not need — Read analytics alone answers every performance question.
| Scope | What it allows | Tick it? |
|---|---|---|
Read analytics (mcp:read) | Attribution, campaigns, creatives, journeys. Personal data masked. | Yes |
Read unmasked PII (mcp:read_pii) | Names, emails and phones, when you ask for them | Only if you need it |
Write-back (mcp:write) | Onboarding tools and sending conversions to Meta CAPI | Only if you need it |
Ticking a box never bypasses a workspace control: read-PII still requires the workspace to be in full-PII mode, and write-back still requires a workspace admin to have enabled it.
Every connection you approve is listed under Developer → Connected apps, with the scopes it holds and a Disconnect button that revokes it immediately.
Troubleshooting
- The client says it cannot connect. Check the URL is exactly
https://mcp.atribu.app/mcp,/mcppath included.curl https://mcp.atribu.app/health/liveshould answer{ "status": "ok" }. - Nothing happens when you open the Cursor link. The browser asks permission to open Cursor the first time; if the prompt is blocked, use the
~/.cursor/mcp.jsonfallback above. - The client keeps asking which workspace. Expected when you belong to more than one — name it in your prompt, or ask the client to list your workspaces first.
- A tool answers "write-back is not enabled". The scope is not the whole story: a workspace admin also has to turn write-back on. See Write-back.
- You want to start over. Disconnect under Developer → Connected apps, then add the client again.