Which credential to use
Both work, on the same endpoint, and neither is going away.
If a human is going to be sitting there when the client first starts, use OAuth: there is no key to paste, nothing to leak into a committed config file, and revoking one client does not break the others. If nothing can open a browser, use a key.
Which clients need a bridge
The Attensira server speaks Streamable HTTP only. Clients that speak remote HTTP natively connect directly. Clients that only launch local stdio processes cannot, and need themcp-remote bridge, which runs locally over stdio and forwards to the HTTPS endpoint.
Connecting with OAuth
Nothing to mint and nothing to paste. You add the URL, a browser opens, you sign in and choose a workspace, and the client stores a token it refreshes on its own.Claude.ai and Claude Desktop
Go to Settings → Connectors → Add custom connector, name itAttensira, and enter:
Server URL
Availability of custom connectors depends on your Claude plan. On Team and Enterprise, an owner adds the connector first, under Organization settings → Connectors.
Claude Code
Add the server with no credential at all, then authenticate from inside Claude Code:Shell
/mcp, select attensira, and choose to authenticate. A browser opens, you sign in and approve, and the callback returns to a local port Claude Code is listening on.
Add --scope user to make the server available in every project rather than only the current one. Verify with claude mcp list, then ask Claude to call get_account — a successful reply lists the workspaces the credential can reach.
Cursor
Add to Cursor — one-click install link. Cursor must already be installed; clicking it opens Cursor and prompts you to add the server. It writes the URL and nothing else — no key, and nothing is read or transmitted. You can also add it by hand. Create.cursor/mcp.json in the project, or ~/.cursor/mcp.json for all projects. With OAuth there is no secret in the file, so the in-repo path is safe:
.cursor/mcp.json
VS Code + Copilot
VS Code reads.mcp.json at the workspace root or .vscode/mcp.json. With OAuth the whole file is three lines and carries nothing secret:
.vscode/mcp.json
ChatGPT
1
Turn on developer mode
In ChatGPT on the web, open Settings and turn on Developer mode.
2
Create the app
Create an app, name it
Attensira, enter https://mcp.attensira.com/mcp and choose OAuth. Attensira publishes standard OAuth discovery, so there is no client ID or secret to fill in.3
Sign in
Sign in to Attensira and allow. The connection reaches every workspace your organisation owns.
4
Turn it on in a chat
In a chat, open the + menu, choose Developer mode and turn Attensira on.
Developer mode depends on your ChatGPT plan and, on Business and Enterprise, on what an admin allows. Custom MCP connectors in ChatGPT depend on your plan and workspace settings, and some surfaces restrict which tools a connector may call. If write tools such as
add_prompts are unavailable, that is a ChatGPT-side restriction, not a scope problem — check Connections to see what you actually granted before assuming otherwise.Zed
Current Zed builds connect to remote MCP servers directly. In Settings → AI → MCP Servers, choose Add Server → Add Remote Server, or add the entry to your settings file yourself:Zed settings.json
Authorization header, Zed runs the standard MCP OAuth flow itself: it opens a browser, you sign in and approve, and the tools appear in the Agent Panel. To use a key instead, add "headers": { "Authorization": "Bearer atn_live_..." } to the same entry. The indicator next to the server in Settings → AI → MCP Servers turns green when it is active.
Older builds and stdio-only clients
A client, or an older Zed build, that can only launch local processes needs themcp-remote bridge. The bridge runs locally over stdio, forwards to the HTTPS endpoint, runs the OAuth flow itself and caches the token under your home directory:
Zed settings.json (older builds)
What you are approving
The consent screen names the application and the access it wants. Read both. An OAuth connection always carries read and write: there is no read-only consent. Write covers everything that changes the workspace or spends credits — adding prompts, creating and running automations, deleting things, asking the agents, approving or declining what they propose. A client that can only read cannot do the half of the job you connected it for. Where you need a credential that cannot write, mint a read-only API key instead. What an approved client can reach, and how to disconnect one, is in Connected applications.Connecting with a static key
This is the path for anything without a human and a browser: n8n, CI, a scheduled script, a server-side agent. It is fully supported and is not going anywhere.Get a key first
Mint a key under Settings → Your assistant at app.attensira.com/settings/access. It is shown exactly once: only a hash is stored, so Attensira cannot re-display it. Copy it somewhere safe — a password manager or your shell environment — before you close the dialog. The key names your workspace, so no tool asks for a workspace id. If you lose it, revoke and mint a new one; there is no recovery path.n8n
Use the MCP Client Tool node inside an AI Agent workflow. Set the endpoint tohttps://mcp.attensira.com/mcp and the transport to HTTP Streamable — not SSE, which the server does not offer.
For credentials, choose the Bearer or header-auth credential type and store the key there. n8n credentials are encrypted at rest and are not written into the workflow JSON, so an exported or version-controlled workflow does not carry the key. Once connected, the node exposes the Attensira tools to the agent; restrict the tool list on the node if you do not want the agent reaching credit-spending tools such as run_automation.
This is exactly the case OAuth cannot serve: a workflow fires at 3am with nobody to approve a browser prompt. Use a key, give it the narrowest scope the workflow needs, and name it after the workflow so revoking it later is unambiguous.
Codex CLI
Codex reads the token from a named environment variable at runtime and sends it as theAuthorization header itself, so the key never enters ~/.codex/config.toml:
Shell
mcp_servers.attensira table to ~/.codex/config.toml without the key. Make sure ATTENSIRA_API_KEY is set in the shell profile Codex launches from.
Only if your Codex build does not support --bearer-token-env-var, edit ~/.codex/config.toml directly with the key written literally:
~/.codex/config.toml
Windsurf
Windsurf reads~/.codeium/windsurf/mcp_config.json:
~/.codeium/windsurf/mcp_config.json
serverUrl, use "url" instead — the two spellings have both shipped. Press the refresh control in the Cascade MCP panel after saving. Since this file lives in your home directory, it is not part of any repository, but it is still plaintext on disk.
Cline
In VS Code, open Cline → MCP Servers → Configure, and add a remote entry:cline_mcp_settings.json
mcp-remote command shown below.
Claude Desktop and Claude Code with a key
Both support OAuth, and OAuth is the better path on a machine with a browser. Use a key only where you deliberately want a fixed credential — a shared build machine, or a container without an interactive session.Claude Code
claude_desktop_config.json, so the key is written literally — protect the file with filesystem permissions and never copy it into a repository:
claude_desktop_config.json
Marked via your assistant
Anything your assistant files in your workspace (an Inbox row, a change to approve, a question) is marked with the client it came through, such as via Claude or via Cursor. The Inbox gathers those rows under From your assistant, and an approval or decline your assistant makes is recorded in the item’s history the same way, for example “OAuth connection via Claude”. You can tell at a glance which items you asked your assistant for and which the agents raised. The name comes from the client itself. When a client connects to the MCP server it says what it is, and the server passes that name on. Attensira shows it only when it is one it recognises:
A REST caller can name itself with the
X-Attensira-Client header, for example X-Attensira-Client: n8n. Work you do yourself in the dashboard is never marked.
The mark is a label and nothing more. A client chooses what it calls itself, so the name never grants or limits anything: what a client can do is decided only by the access you approved or the key’s scope.
Any other MCP client
Any client that supports remote MCP servers can connect with these facts:Connection details
--header to let the bridge run OAuth for you:
Shell
Shell
Connected. Ask your assistant to call
get_account — it answers without you supplying a workspace id, and its workspaces array is what every other tool’s project takes. With one workspace it is also named as project; with several, project is null until you name one, which is expected rather than a fault.