Tutorial6 min read

How to Add a Remote MCP Server (ChatGPT, Claude, Cursor)

A remote MCP server is one you connect to by URL — nothing to install locally. Paste the vendor’s HTTPS endpoint into ChatGPT’s Connectors (Developer mode), Claude’s Connectors, or a url field in Cursor’s mcp.json, complete the OAuth flow, and the tools appear. The steps below cover all three clients and the scope discipline that keeps a hosted server safe.

Goal

Connect a hosted MCP by URL

Time

~6 minutes

Prereq

A remote MCP URL + an account on that service

Steps

1

Get the remote MCP URL (and confirm the transport)

A remote MCP server is reached by URL, not by a local command. Vendor-maintained servers — GitHub, Stripe, Cloudflare, Linear, Notion, Sentry — publish an HTTPS endpoint that speaks Streamable HTTP and authenticates with OAuth 2.1. Copy that URL from the vendor’s docs. If the server only documents a stdio command, it is local, not remote — use the per-client install guides instead.

2

Add it in ChatGPT (Developer mode → Connectors)

In ChatGPT: Settings → Apps & Connectors → Advanced settings, enable Developer mode. Then Settings → Apps & Connectors → Create. Name the connector, paste the MCP URL, choose the authentication type (OAuth where the server supports it), accept the risk acknowledgement, and create. ChatGPT walks you through the OAuth consent screen on first use.

3

Add it in Claude (Connectors)

In Claude Desktop or claude.ai: Settings → Connectors → Add custom connector. Paste the Remote MCP server URL. For OAuth servers, Claude opens the provider’s sign-in and stores the scoped token; for token servers, paste the token when prompted. The connector appears in your tool list once authorized.

4

Add it in Cursor (mcp.json with a url field)

Cursor reads ~/.cursor/mcp.json (global) or .cursor/mcp.json (project). Remote servers use a url field instead of command/args. Cursor handles the OAuth handshake in-app on first connect. The same shape works in any client that supports remote MCP.

{
  "mcpServers": {
    "github": {
      "url": "https://api.githubcopilot.com/mcp/"
    }
  }
}
5

Complete the OAuth flow and grant the minimum scope

On first connect, the server redirects you to the provider’s consent screen. Grant only the scopes the workflow needs — read-only where possible, a single repo or project rather than the whole account. OAuth 2.1 with audience binding means the token is scoped to that server, not reusable elsewhere; still, narrow it.

6

Verify the tools appear, then restart if they do not

After authorizing, the server’s tools should show in the client’s tool list. The single most common failure is a stale connection: if the server shows “connected” but no tools appear, fully restart the client. Remote servers also add 30–200ms of latency per call versus local stdio — that is expected, not a fault.

Grant the narrowest OAuth scope the workflow needs

A remote server with broad scope can do anything your account can. On the consent screen, grant read-only where possible and limit to a single repo, project, or workspace rather than the whole account. OAuth 2.1 audience binding scopes the token to that server, but a narrow grant is still your strongest defense.

Remote config shape (any client)

Clients that take a JSON config (Cursor, VS Code, Claude Desktop) use a url field for remote servers instead of command and args. The example uses the official GitHub remote MCP.

~/.cursor/mcp.json (remote server)
{
  "mcpServers": {
    "github": {
      "url": "https://api.githubcopilot.com/mcp/"
    }
  }
}

When it does not work

Connected, but no tools appear

Almost always a stale connection. Fully restart the client (not just reload). If it persists, re-run the OAuth flow — an expired or revoked token leaves the connection up but the tool list empty.

OAuth redirect fails or loops

Confirm the URL is the MCP endpoint, not the vendor’s marketing page, and that it is HTTPS. Some servers require you to be signed into the provider in the same browser session before the consent screen will resolve.

ChatGPT will not let me add the connector

Developer mode must be enabled first (Settings → Apps & Connectors → Advanced settings). Remote MCP connectors are gated behind it, and you must accept the risk acknowledgement to create one.

Calls are noticeably slower than my local servers

Expected. Streamable HTTP adds a network round trip — typically 30–200ms per tool call — versus a local stdio subprocess. The trade is zero local install and managed hosting. Use local servers for latency-sensitive, high-frequency tools.

FAQ

How do I add a remote MCP server to ChatGPT?

Enable Developer mode under Settings → Apps & Connectors → Advanced settings, then go to Settings → Apps & Connectors → Create, name the connector, paste the remote MCP URL, choose the authentication type, accept the risk acknowledgement, and create. ChatGPT runs the OAuth consent flow on first use and the server’s tools then appear to the model.

What is the difference between a remote and a local MCP server?

A local server runs as a subprocess on your machine over stdio — fastest, no auth, you install it with a command. A remote server runs at an HTTPS URL, uses Streamable HTTP transport with OAuth 2.1 for scoped access, and you connect to it by pasting a URL — nothing to install, but each call adds 30–200ms of latency. Vendor-maintained servers (GitHub, Stripe, Cloudflare, Linear) are typically remote.

Do remote MCP servers use OAuth?

Most do. The MCP spec calls for OAuth 2.1 for remote server authentication, with the server acting as an OAuth resource server that accepts scoped access tokens with audience binding. Some servers also accept a static token. Always grant the narrowest scope the workflow needs.

Can I add the same remote server to ChatGPT, Claude, and Cursor?

Yes. The URL is the same across clients — only the place you paste it differs: ChatGPT’s Connectors UI, Claude’s Connectors, or a url field in Cursor’s mcp.json. Each client runs its own OAuth handshake and stores its own scoped token.

Why do my remote MCP tools keep disappearing?

A stale connection or an expired token. Fully restart the client first; if the tools still do not appear, re-run the OAuth flow. Unlike local servers, remote ones depend on a live token, so revocation or expiry empties the tool list without dropping the connection.

Next steps

Connect the most popular remote servers, or read the deep dive on remote vs local MCP transports.