Skip to main content

Before We Begin

Gather the following information about the MCP server you built in Xano — you’ll need it regardless of client. Connecting to the instance-level Xano MCP Server instead? Its URL and token come from a different place; grab them there, then pick your client below.
1

Name

This is just a name you want to give your MCP server. Make sure it is unique to other MCP servers you’re using, and is human readable so you can easily keep track of what each server does.
2

URL

Every MCP server in the workspace is listed in one place. Click Connect this backend at the top left of the page, choose MCP Server URLs, and click the icon next to the server you want. Expand the row to see its URLs — use the streaming one.Working inside the MCP servers area already? From the sidebar, Agents & MCPMCP Servers, then click Connection URL on the server’s card and copy the one under Streaming. The same panel offers an SSE URL, marked Deprecated — don’t use it.
SSE as a connection method has entered deprecation as of release 2.5 and will be fully sunset in the upcoming release 2.6. Per the official MCP SDK, you should be using streaming exclusively going forward.
3

Token

The token for your MCP server is generated the same way your other auth tokens are generated, usually as part of your signup and login API logic.
Most clients authenticate to Xano MCP servers with a Bearer token sent in an Authorization header. Clients that can’t send one — Claude Web, Claude mobile, ChatGPT, and Microsoft 365 Copilot MCP plugins — need a real OAuth layer in front of your server. See Add OAuth to a Xano MCP server.Every setup on this page uses one shared token, so Xano sees a single identity no matter who is asking. It’s a fine basic gate for you or your team. If each user needs to arrive as themselves — so your tools can scope data to whoever is actually calling — you want OAuth too, whatever your client is capable of sending.

Claude Code

Claude Desktop

Claude Web / Mobile

Cursor

Windsurf

Antigravity

VS Code

Raycast

Warp


Claude Code

In your terminal, run the following command, replacing <name>, <url>, and <token> with your server’s details:

Claude Desktop

Claude Desktop’s Add custom connector dialog takes a name and a URL but has no field for an Authorization header. The desktop app also reads a local config file, though, and that route does support headers — you bridge the remote server to stdio with mcp-remote, which injects the header for you. Requires Node.js.
1

Open your config file

Go to Settings > Developer and click Edit Config, or open it directly:
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
2

Add an entry for your MCP server

Put the token in env rather than inline in args. On Windows, spaces inside args aren’t escaped when Claude Desktop invokes npx, which mangles Authorization: Bearer … — writing the header as Authorization:${AUTH_HEADER} with no space around the colon avoids it, and works on macOS too.
3

Restart Claude Desktop

Quit the app completely and reopen it. Your tools appear under Connectors. If the server doesn’t show up, check ~/Library/Logs/Claude/mcp*.log (macOS) or %APPDATA%\Claude\logs (Windows).
This is one shared token for whoever is sitting at that machine, the same as every other client on this page. If you want each user to arrive as themselves, use the connector dialog with OAuth instead — that’s also the only option on Claude Web and mobile.

Claude Web and Mobile

These have no config file — Add custom connector is the only way in, and it takes a name and a URL with no field for an Authorization header. Putting the token in the URL doesn’t work either: Claude runs an OAuth handshake for every custom connector, and a Xano MCP server has no authorization server to hand it off to, so you land on a consent page that can’t complete. What these clients need is a small OAuth layer in front of your server. That’s a separate guide, and it’s mostly agent-driven — you supply two URLs and a couple of clicks in Xano.

Add OAuth to a Xano MCP server

Front your MCP server with a Cloudflare Worker that speaks OAuth 2.1. You get a plain /mcp URL, no token anywhere in it, and every request carrying the signed-in user’s own identity in $auth.

Cursor

Cursor supports one-click MCP server installation via install links, with your token sent as an Authorization header. Use the generator below to create yours.

Windsurf

1

Access your Windsurf settings

Head to Windsurf Settings > Cascade and click MCP Marketplace.Click the icon to access your mcp_config.json file directly.
2

Add an entry for your MCP server

Use the generator below to get the correct JSON.

Antigravity

1

Access your Antigravity MCP settings

  1. Open the MCP store via the ”…” dropdown at the top of the editor’s agent panel.
  2. Click on “Manage MCP Servers”
  3. Click on “View raw config”
  4. Modify the mcp_config.json with your custom MCP server configuration.
2

Add an entry for your MCP server

Use the generator below to get the correct JSON.

VS Code

These instructions may work for other VS Code-based IDEs, but we recommend consulting that client’s official documentation for more specific instructions. Per-project: Create or open .vscode/mcp.json in your workspace and add the configuration generated below. Across multiple projects:
  1. Run the MCP: Open User Configuration command, which opens the mcp.json file for your user profile. Add the configuration generated below.

Raycast

Raycast connects to remote MCP servers through its built-in Install MCP Server form, which supports custom HTTP headers. Native MCP support requires Raycast 1.98 or later.
  1. Run the Install MCP Server command, or run Manage MCP Servers and choose Install New Server.
  2. Set Transport to HTTP and enter your MCP server’s URL.
  3. Under HTTP Headers, add a header with the key Authorization and the value Bearer <token>. Leave the OAuth fields empty — Xano MCP servers authenticate with a static bearer token, not OAuth.
  4. Press ⌘ + Enter to install. Raycast connects to the server and loads its tools, which you can then @-mention in AI Chat.

Warp

  1. Access Warp Drive and click MCP Servers in your Personal settings.
  2. Click + Add and add the configuration generated below.

Other header-capable clients

These clients all accept a Bearer token in an Authorization header — they just configure it differently. Point them at your streaming connection URL and set the header where the table says. Windsurf has been renamed Devin Desktop, and its config key is serverUrl, not url — the Windsurf instructions above still apply.

Validating a token in the URL

If you control the client, you can skip headers entirely: put a token in the URL and validate it yourself with an MCP server trigger. This gives you a shared gate on the connection rather than per-user identity.
This won’t work through Claude’s Add custom connector dialog — on Web, mobile, or Desktop. Adding a connector URL with the token in it sends you to an OAuth consent page that can’t complete, because Claude runs an OAuth handshake for every custom connector and a Xano MCP server has no authorization server to hand it off to.Use OAuth for those, or on Desktop, the config file route above.
1

Get your server's streaming connection URL

Retrieve the streaming connection URL for your MCP server (see Before We Begin). It looks like this, with mcp appearing twice:https://your-instance.xano.io/x2/mcp/{server-id}/mcp/streaming
2

Put your token in the URL

Replace the second mcp with your token:https://your-instance.xano.io/x2/mcp/{server-id}/{token}/streamingThis is the value you paste into the client’s Add custom connector URL field. Server-side, the token is exposed as the token variable.
3

Do not enable native authentication on your tools in Xano

Native MCP authentication expects an Authorization header, which is exactly what this approach avoids sending. Leave Authentication turned off on the tools — you can enforce access with middleware or a trigger instead, so an unauthenticated client can’t reach your tools without a valid URL token.
4

Validate the token with an MCP server trigger or middleware

Add an MCP server trigger that runs on connection and rejects anyone whose URL token isn’t valid. The token arrives on the trigger’s special toolset object as toolset.token. If the trigger throws an accessdenied error, the connection is refused and no tools run.On a valid token, the trigger must return the toolset and tools objects — that’s what hands the available tools back to the client — so pass them through unchanged once the check passes.You can also use middleware for more precise control over the user experience, but triggers are a better option if you have a mix of tools that do and do not require auth.
Please note that if a tool is not using native authentication, it will appear in the list of tools when connected to the MCP server (unless modified via a trigger). We recommend if at all possible, use headers instead.

Validate a single rotating token

The simplest setup checks the URL token against one environment variable. It’s easy to rotate and is shared by everyone who has the URL — a good fit for a system-wide secret.

Validate per-user tokens

To attribute connections to individual users — and revoke them independently — store tokens in a table and look them up on connection.