Guide · Setup
How to add a remote MCP server to Claude Code, Cursor and VS Code (Streamable HTTP, OAuth)
To add a remote MCP server, give your client the server's HTTPS URL and let it sign in with OAuth. In Claude Code that is one command: claude mcp add --transport http <name> <url>. In Cursor and VS Code it is a few lines in an mcp.json file. In the Claude app it is Settings, Connectors, Add custom connector. This guide uses the URL of actionlake, an MCP gateway, https://connect.actionlake.com/mcp, and marks which paths we tested ourselves and which follow the vendor's documentation.
Remote vs local MCP servers
A local MCP server runs on your machine as a process the client starts; the client talks to it over standard input and output. A remote MCP server runs on the internet, and the client talks to it over HTTPS using the Streamable HTTP transport. Remote servers usually sign you in with OAuth instead of reading a token from an environment variable.
| Local (stdio) | Remote (Streamable HTTP) | |
|---|---|---|
| Runs on | Your machine | The provider's servers |
| Configured with | A command and arguments | A URL |
| Credentials | Often an env variable on each machine | OAuth sign-in, or a bearer header |
| Updates | You update the package | The provider updates the server |
| Works in browser and mobile clients | No | Yes, where the client supports it |
actionlake's server is remote. It supports OAuth 2.1 with dynamic client registration, so a client registers itself with no client id to copy. It also accepts an actionlake key as Authorization: Bearer.
What we tested
| Client | Method | Status |
|---|---|---|
| Claude Code | claude mcp add | Tested by us |
| Claude app (claude.ai, desktop) | Custom connector | Tested by us, on our own account, with an existing key; creating a new sandbox from the Claude app is not yet tested |
| Cursor | mcp.json with url | From Cursor's documentation, checked 22 October 2026; not yet tested by us |
| VS Code (Copilot agent mode) | .vscode/mcp.json or code --add-mcp | From VS Code's documentation, checked 22 October 2026; not yet tested by us |
| Other MCP clients | URL plus OAuth or bearer | Not tested by us: needs Streamable HTTP on revision 2025-06-18 or 2025-11-25, and OAuth with dynamic client registration or a bearer key |
Claude Code
Run:
claude mcp add --transport http actionlake https://connect.actionlake.com/mcp
Start claude. When the first tool call needs a tenant, the server answers 401 with an OAuth challenge, and Claude Code opens the consent page in your browser. Paste an actionlake key, or press Create one for a free sandbox tenant with no signup and no card. Approve, and the eight tools are available: help, find_actions, get_action, do, ask, check, cost and account.
Useful checks:
claude mcp list # is actionlake registered, and is it connected?
Inside a session, /mcp shows each server's status and lets you sign in again.
Prefer a fixed key over OAuth, for example on a CI runner? Send it as a header instead:
claude mcp add --transport http actionlake https://connect.actionlake.com/mcp \
--header "Authorization: Bearer $ACTIONLAKE_KEY"
The Claude app
- Open Settings, then Connectors.
- Choose Add custom connector.
- Name it
actionlakeand pastehttps://connect.actionlake.com/mcp. Add it. - Press Connect. The consent page opens: paste an existing actionlake key, then approve. We tested this path with an existing key. Create one is offered here too, but we have not yet tested it from the Claude app; if it fails, create the sandbox in Claude Code or the console and paste its key.
- Ask Claude: "help". The tools answer.
On Team and Enterprise plans, your workspace owner may need to add a custom connector before members can connect it.
Cursor
Cursor reads MCP servers from ~/.cursor/mcp.json (every project) or .cursor/mcp.json (one project). A remote server has a url instead of a command:
{
"mcpServers": {
"actionlake": {
"url": "https://connect.actionlake.com/mcp"
}
}
}
Cursor's documentation says it supports OAuth for remote servers that need it, and discovers the server's OAuth settings itself. Our server publishes them at https://connect.actionlake.com/.well-known/oauth-protected-resource. To use a key instead, add a header:
{
"mcpServers": {
"actionlake": {
"url": "https://connect.actionlake.com/mcp",
"headers": { "Authorization": "Bearer ${env:ACTIONLAKE_KEY}" }
}
}
}
VS Code
VS Code's own format uses a top-level servers object. For one workspace, create .vscode/mcp.json:
{
"servers": {
"actionlake": {
"type": "http",
"url": "https://connect.actionlake.com/mcp"
}
}
}
Or add it to your user profile from the command line:
code --add-mcp '{"name":"actionlake","type":"http","url":"https://connect.actionlake.com/mcp"}'
With type: http, VS Code tries the Streamable HTTP transport first. A browser window opens for sign-in on the first connection when the server asks for it. Use the tools in Copilot's agent mode.
Other MCP clients
We have not tested other clients. One that supports remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way. Give it three facts:
URL https://connect.actionlake.com/mcp
Auth OAuth 2.1 with dynamic client registration and PKCE
or Authorization: Bearer al_…
Scopes actions, account, billing (the consent page names what it grants)
A client that does not support OAuth can use the bearer header. A client that supports neither remote servers nor headers needs a local bridge; check its documentation.
Project or user configuration?
| Put it in | When |
|---|---|
User configuration (~/.cursor/mcp.json, the VS Code user profile, claude mcp add --scope user) | You want the server in every project on your machine |
Project configuration (.cursor/mcp.json, .vscode/mcp.json, claude mcp add --scope project) | A team shares the repository and should share the server entry |
A project file is committed with the code, so never put a key in it. Commit the URL only, and let each person sign in with OAuth, or read the key from an environment variable as in the Cursor example above.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| No browser window, and every call fails with 401 | The client does not handle the OAuth challenge | Use the bearer header with an actionlake key |
The server connects, but do says "not permitted" | The key does not allow that action | Use a key whose allowed_actions covers it; help explains the refusal |
| "missing confirmation" on a delete | Destructive actions need confirm: true | The agent confirms, or a person approves, depending on the key's confirm_policy |
| Tools list is empty | The client saved the server but did not start it | Restart the client; in Claude Code run /mcp |
| Connection refused or a web page instead of tools | The URL points at the website, not the server | Use https://connect.actionlake.com/mcp exactly |
When something fails, ask the agent to call help with about: "why did that fail?". It reads your last run and says what went wrong. help is free.
After it connects
Ask for something real. The credential-free public services, such as exchange rates, public holidays and DNS lookups, need no setup, so the first call works at once. Then connect a business system: see connect Claude to Xero or connect Claude to Autotask. Before you hand the server to a team, give each agent its own scoped key: seven controls for agent access.
Frequently asked questions
What is the Streamable HTTP transport?
It is the MCP transport for remote servers. The client sends JSON-RPC requests over HTTPS POST, and the server can stream responses back on the same connection. It replaced the older HTTP with server-sent events transport.
Do I need a separate MCP server for every system?
Not with a gateway. One remote server, actionlake, fronts 1,000+ connectors, and your client sees eight tools however many systems you connect. See MCP server vs MCP gateway.
Is a bearer key less secure than OAuth?
They protect different things. OAuth lets you approve access in a browser and revoke the client's token without touching the key. A bearer key suits headless runners. Either way, scope the key and give it a cap, and the agent never holds a vendor credential.
Does adding the server cost anything?
No. Connecting, listing tools, help, find_actions, get_action, check, cost and account are free. You pay only for upstream calls sent to a vendor, and the Free plan includes 100,000 a month. See pricing.
Try it on your own systems.
100,000 free calls a month. No card. Hard caps on every key.