Skip to main content
Every client below connects to the same endpoint. What changes is where you put the URL, and which of the two credentials you use.

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.
You can do both at once. Claude Code on your laptop over OAuth and an n8n workflow on a static key are two independent credentials against the same server, and revoking either leaves the other alone.

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 the mcp-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 it Attensira, and enter:
Server URL
Leave every authentication field alone — do not add a header, and do not paste a client ID or secret. Save, and Claude sends you to Attensira to sign in. Pick the workspace you want this connector to reach, approve the access it asks for, and you land back in Claude with the connector enabled. Open a new chat and enable Attensira from the tools menu. Existing conversations do not pick up new connectors.
Availability of custom connectors depends on your Claude plan and, on Team and Enterprise, on whether an administrator has allowed them.

Claude Code

Add the server with no credential at all, then authenticate from inside Claude Code:
Shell
Then run /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.
Two Claude Code instances can authenticate at the same time. Each listens on its own ephemeral loopback port, and both are accepted.

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
Reload Cursor and open Settings → MCP. The entry shows as needing authentication; click through it, sign in and approve, and the tool count fills in.

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
Start the server from the Start link above the entry. VS Code opens a browser for sign-in and stores the resulting token in its own account storage, not in the file. Then open Copilot Chat in Agent mode and check the tools picker.

ChatGPT

Under Settings → Connectors → Create, choose a custom or developer-mode connector and enter https://mcp.attensira.com/mcp. At the authentication step, select OAuth — Attensira publishes standard OAuth discovery, so there is no client ID or secret for you to fill in. Save, complete the sign-in, and enable the connector per conversation from the tools menu.
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 and other stdio-only clients

Zed launches MCP servers as local processes, so it needs the mcp-remote bridge. The bridge runs the OAuth flow itself and caches the token under your home directory:
Zed settings.json
The bridge needs Node.js. Its first run downloads the package and opens a browser, so allow a few seconds and expect a sign-in prompt before the tools appear.

What you are approving

The consent screen names the application, the workspace, and the access it wants. Read all three. Read covers metrics, prompts, pages, sessions, automations and account details. Read and write adds everything that changes the workspace or spends credits — adding prompts, creating and running automations, deleting things, asking the agent. Most AI clients ask for read and write, because a client that can only read cannot do the half of the job you connected it for.
Anyone can register an MCP client and pick its display name. Read the name and the access it asks for before approving, and be sure about anything unfamiliar asking to write. If you did not just start a connection yourself, do not approve one — close the tab.
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 at app.attensira.com/settings/developer. 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.
Export it once and reference it by name wherever a client supports environment variables:
Shell
Put that line in your shell profile so GUI clients launched from a terminal inherit it.
.cursor/mcp.json, .vscode/mcp.json, and any config file inside a repository are shared files. A key pasted into one and committed is a leaked key — assume it is public the moment it is pushed, revoke it, and mint a new one. Use the environment-variable form in repo-visible files, add local overrides to .gitignore, or use OAuth, which puts no secret in the file at all.

n8n

Use the MCP Client Tool node inside an AI Agent workflow. Set the endpoint to https://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 the Authorization header itself, so the key never enters ~/.codex/config.toml:
Shell
That writes an 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
Restart Codex after editing the file.

Windsurf

Windsurf reads ~/.codeium/windsurf/mcp_config.json:
~/.codeium/windsurf/mcp_config.json
If your Windsurf version rejects 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
Cline also has a “Remote Servers” tab where you can paste the URL and header without editing JSON. If your Cline version offers only stdio entries, use the 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 does not expand shell variables in 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
Restart the app afterwards. The Attensira tools appear in the tool menu of a new conversation; existing conversations do not pick up new servers.

Any other MCP client

Any client that supports remote MCP servers can connect with these facts:
Connection details
Client authors: the full wire detail — endpoints, scopes, PKCE, registration, token lifetimes — is in the OAuth reference. If the client speaks stdio only, run the bridge locally and point the client at it. Omit --header to let the bridge run OAuth for you:
Shell
To confirm the endpoint is reachable before you debug the client, request the unauthenticated health path:
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.
If a client stays silent or shows no tools, see Troubleshooting.