Back to blog
mcpguidescross-llmbridgesportability

How to Connect a Custom MCP Server to Any LLM: The Complete Guide

Brandon Briggs·
Connect a custom MCP server to any LLM — the complete guide

Last verified October 15, 2026. Client UIs move fast — every section links to a maintained per-client guide that we re-verify as vendors ship.

TL;DR: If an AI app supports adding custom remote MCP servers with OAuth, you can connect it to any hosted MCP server in about two minutes: find the MCP or connectors setting, paste the server URL, approve the sign-in. That app now includes Claude on every plan, ChatGPT on Plus and up, the Gemini app (through custom apps), Perplexity, Cursor, VS Code, and thirty-plus more. And because MCP lives in the app rather than the model, open models like GLM, Kimi, and DeepSeek get the same superpower through whichever harness runs them. The tables below map every client we've verified — where the setting hides, what each vendor calls it, what plan you need, and the one-word config traps.

I run Tempreon, a personal intelligence layer that ships as a hosted MCP server, which means my team's job is literally connecting one MCP server to every AI client that exists. This post is the map we wish we'd had — every working path, every dead end, and every naming quirk, as of mid-July 2026. The examples use Tempreon's server URL because it's the one we test with daily; every step works the same for any spec-compliant hosted MCP server.

The one pattern that works everywhere

MCP — the Model Context Protocol, announced by Anthropic on November 25, 2024, and donated to the Linux Foundation's Agentic AI Foundation in December 2025 — standardized how AI apps call external tools. By late 2025 the official SDKs were pulling 97 million downloads a month. The practical result: connecting a hosted MCP server to any compliant client is the same six moves, whatever the menus are called.

  1. Find the setting. Look for "MCP," "Connectors," "Custom apps," "Tools," or "Extensions" — usually under Settings. A command palette search for "MCP" finds it in most editors.
  2. Add a custom server. You'll be asked for a name and a URL. For Tempreon: https://api.tempreon.com/functions/v1/tempreon-mcp/mcp — note the /mcp endpoint path. Leaving that path off is the single most common connection failure across every client.
  3. Pick the transport, if asked. Choose Streamable HTTP (sometimes labeled "HTTP" or "Remote"). Never stdio — that's for local servers running as subprocesses.
  4. Pick the auth, if asked. Choose OAuth. A well-built 2026 server supports dynamic client registration, which means no client IDs, no secrets, no API keys — the client registers itself.
  5. Approve the sign-in. A browser tab opens on the server's consent screen. Sign in, approve, done.
  6. Approve the first tool call. Most clients gate the first actual tool use behind an Allow button. Choose "always allow" if you trust the server, or you'll be clicking it a lot.

That's the whole ceremony. The rest of this guide is where each client hides steps 1–4, and what to do when a client doesn't play by the rules.

The terminology decoder

Vendors could not agree on what to call this. Same feature, six names:

VendorWhat they call a custom MCP serverWhere it lives
Anthropic (Claude)Custom connectorCustomize → Connectors (Settings → Connectors now redirects there)
OpenAI (ChatGPT)Custom app (was "custom connector" until Dec 2025)Settings → Apps → developer mode
Google (Gemini)Custom appSettings → Connected Apps (or Settings → Personal Intelligence → Connected Apps)
xAI (Grok)Custom MCP connectorgrok.com/connectors
PerplexityCustom connectorPlugins → Add custom → Connector
Editors & CLIsMCP servermcp.json / settings, various shapes

And the deeper trap — the transport keyword differs per client config file:

ClientThe magic word
VS Code, Visual Studio, Codex, Droid, Crush"type": "http"
Cline"type": "streamableHttp"
Continue, Zoo Code"type": "streamable-http"
OpenCode"type": "remote"
Goosetype: streamable_http
Qwen Code"httpUrl" (the url key means legacy SSE)
Gemini CLI"url" + "type": "http" (httpUrl still works but is deprecated; Gemini CLI dropped the url-means-SSE rule Qwen Code kept)
Antigravity"serverUrl" (Antigravity's CLI docs list url and httpUrl as unsupported)
Windsurf / Devin Desktopplain "url" (Devin Local, the only agent since September 2026)
Cursor, Zed, Claude Desktop, Kiro, LM Studio, Warp, JetBrainsplain "url"

If a connection fails instantly and the URL is right, the transport keyword is the next thing to check. Cline is the sharpest edge: omit its type and it silently falls back to legacy SSE, which fails against modern Streamable HTTP servers.

Chat assistants

Claude — every plan, including Free

The most permissive custom-connector policy of any major assistant, fitting for the company that created MCP. Customize → Connectors → the + next to "Connectors" → Add custom connector → paste URL → authorize — on the web, claude.ai/customize/connectors takes you straight there, and the older Settings → Connectors page now only redirects to it. Works on claude.ai web, Claude Desktop, and Cowork; connectors sync to the iOS/Android apps automatically (add on web — mobile can use but not reliably add them). Free accounts get one custom connector; paid plans get more. Claude Code inherits these connectors when you sign in with your claude.ai account; otherwise add it with claude mcp add --transport http tempreon <url>, then /mcp to sign in. Full guides: Claude · Claude Code. Step-by-step for any server: Claude · Claude Code.

Claude also has a connectors directory, and if the server you want is listed there you skip the URL step entirely — find it, click Connect, approve. Tempreon is listed at claude.ai/directory/tempreon. Worth knowing what the listing does and doesn't mean: a directory entry is a discovery and install path, not a security review. Listings marked community passed automated checks, and Claude tells you so once with a note that the connector hasn't been reviewed in depth. The paste-a-URL route above remains the one that works for every server, listed or not.

ChatGPT — Plus and up, web only, developer mode

OpenAI renamed connectors to "apps" in December 2025 and moved the directory to plugins in July 2026, so ignore any screenshot older than six months. The path: Settings → Apps → Advanced Settings → toggle Developer mode, then Settings → Apps → Create — name, URL, OAuth, click Scan Tools, complete the sign-in, Create. Custom MCP apps require Plus, Pro, Business, Enterprise, or Edu (not Free), and they're web-only. OpenAI documents full MCP — including write actions — for Business, Enterprise, and Edu; on Plus and Pro, saves are worth testing rather than assuming. On Business, developer mode is for workspace admins and owners; on Enterprise and Edu, an admin grants access under Permissions & Roles → Connected Data. OpenAI's developer documentation describes a second path for individual accounts — Settings → Security and login → Developer mode, with apps created from chatgpt.com/plugins — so try that if the Apps path doesn't match your build. One thing to stop relying on: OpenAI retired its Atlas browser, which was scheduled to stop working on August 9, 2026; use ChatGPT on the web instead. Full guide: ChatGPT.

Gemini — yes, as custom apps

The answer changed this summer. The Gemini app now accepts custom MCP servers as custom apps: gemini.google.com → Settings → Connected Apps → Custom apps → Add a custom app (if Connected Apps isn't listed, Google now nests it under Settings → Personal Intelligence). Dynamic client registration is supported, so a compliant server needs only its URL. Google lists no subscription for custom apps themselves — what it requires is a personal account, 18 or over, the US, English, and Keep Activity on. Gemini Spark is listed separately and does require Google AI Pro or Ultra, so that requirement attaches to Spark workflows rather than to adding the app. Some personal accounts that meet every listed requirement still don't show a Custom apps section, and Google doesn't document why — if yours doesn't, check Google's help page again later, since this is still rolling out. Google widened Spark itself to many more countries in July 2026, but the custom-apps requirements are listed separately and still say US and English, so don't assume the two moved together. If that's not you, Google Antigravity (the IDE and CLI that replaced Gemini CLI for consumers in June 2026) connects custom MCP servers to Gemini models and is now generally available with a free tier for individuals — config key serverUrl, OAuth through dynamic registration, finished by pasting an authorization code back. Gemini CLI itself still works for Code Assist Standard/Enterprise licenses and paid API keys, with the httpUrl config key, and Google has not announced an end-of-life date for those tiers. Full guides: Gemini app · Antigravity · Gemini CLI.

Perplexity — Pro, Max, Enterprise

Plugins → Add custom → Connector → Add MCP connector → Remote (accounts that don't show Plugins yet: Customize → Connectors), then name, URL, OAuth, Streamable HTTP, acknowledge the risk note, add, click the card to authorize. The quiet superpower: Perplexity runs many models — GPT, Claude, Gemini, Grok, Kimi — so one connector gives every one of them the same tools. Full guide: Perplexity · any MCP server in Perplexity.

Vibe (formerly Le Chat) and Grok

Mistral's assistant is now called Vibe, and connectors live under its Work mode — the docs moved from /le-chat/* to /vibe/* with the rename. It auto-detects auth, naming "OAuth 2.1 with dynamic client registration" explicitly. Connectors (in the sidebar) → + Add Connector → Custom MCP Connector → Connect. One current limitation: Mistral lists dynamic tool discovery as not yet supported, so the tool list won't refresh itself when a server adds tools — re-add the connector. Custom MCP connectors are available on every plan including Free, currently labeled beta. Grok added custom MCP connectors with its connectors launch: grok.com/connectors → New Connector → Custom — web, iOS, and Android, and xAI documents connectors as available to all Grok users, Free included; the only gate is organizational, on Business and Enterprise. Note that Grok Bot is a different xAI product and is plan-gated, which is where the "connectors are paid" claims circulating elsewhere come from. Full guides: Vibe / Le Chat · Grok.

Editors and IDEs

Cursor is a two-line ~/.cursor/mcp.json entry — plain url, OAuth on first use; in the UI, MCP servers moved to the Customize page in the sidebar in Cursor 3.9 (June 2026). VS Code with GitHub Copilot reads .vscode/mcp.json with root key servers, or the portable .mcp.json with mcpServers (which its Add Server flow now prefers), plus "type": "http"; on 1.140 and later, use the Local harness, since the new Copilot harness can't yet reach OAuth servers; on Copilot Business/Enterprise seats an admin must enable the MCP policy, which ships disabled. Visual Studio (17.14+) reads .mcp.json with a CodeLens-driven OAuth flow. Windsurf became Devin Desktop in June 2026, and in September Cognition removed the legacy Cascade agent, so Devin Local is the only agent. It keeps MCP servers in .devin/mcp_config.json or ~/.config/devin/mcp_config.json with plain url, or you can add one with devin mcp add. Zed landed the cleanest implementation of the year: add a URL under context_servers, and it walks the full OAuth + dynamic-registration flow with tokens in your system keychain. JetBrains IDEs take the standard mcpServers JSON in Settings → AI Assistant → MCP, with an "Import from Claude" button that reads your existing Claude Desktop config — a remote url entry needs 2025.3+, since 2025.2 is stdio-only. Be aware of the auth gap: JetBrains documents no OAuth flow for AI Assistant's MCP client — only a pasted bearer token or a local process — so an OAuth-protected server needs the mcp-remote proxy, or Junie, which does have browser authorization. Cline works via its Remote Servers tab — set "type": "streamableHttp" explicitly. Kiro, AWS's IDE, might be the easiest of all: URL-only config, automatic OAuth, one-click install deeplinks, and no plan gate on MCP — though remote servers are IDE- and CLI-only, not Kiro Web or Mobile.

Full guides: Cursor · VS Code · Windsurf · Zed · JetBrains · Cline · Kiro.

Terminal agents

The command-line generation treats remote MCP + OAuth as table stakes:

  • Claude Code: already connected Tempreon at claude.ai? Sign in to Claude Code with that claude.ai account and it's there, with no setup. Otherwise claude mcp add --transport http tempreon <url>, then /mcp. Guide
  • Codex: codex mcp add tempreon --url <url>, which starts the OAuth sign-in as soon as it detects OAuth (codex mcp login tempreon re-runs it). TOML config, shared across CLI, IDE extension, and the ChatGPT desktop app. Guide · any server
  • OpenCode: "type": "remote" in opencode.json; OAuth and dynamic registration are automatic — its docs cite RFC 7591 by name. 75+ model providers behind one interface. Guide
  • Kimi Code CLI: add the server with /mcp-config, then /mcp-config login <name>. Guide
  • Qwen Code: httpUrl config, then authorize from the /mcp dialog — automatic discovery and registration. (/mcp auth still exists but only redirects you to that dialog; in Gemini CLI it is the command that actually authenticates.) Guide
  • Amp and Droid: both URL-only with automatic OAuth (amp mcp add, droid mcp add --type http). Droid's free open-weights pool (GLM, Kimi, MiniMax) all inherit your MCP servers.
  • Warp: paste the standard JSON under Settings → Agents → MCP servers; local agents are the reliable route (cloud agents need Warp's managed MCP installation). Guide

The harness rule: how open models get MCP

Here's the fact that unlocks the whole open-model ecosystem: models don't speak MCP — applications do. The model decides when to call a tool; the harness holds the connection, runs the OAuth, and executes the call. Swap the model inside an MCP-capable harness and every custom server keeps working.

That matters right now because the open-weight frontier is on a tear — Moonshot's Kimi K3 (announced July 16, 2026 and released as open weights on July 27 — 2.8 trillion parameters, the largest open-weight model published to date) debuted just behind the top closed models on the major leaderboards, and GLM, DeepSeek, Qwen, and MiniMax all shipped frontier-class opens this year. None of their consumer chat apps accept custom MCP servers. All of their models get them anyway:

  • GLM in Claude Code. Z.ai's coding plan runs an Anthropic-compatible endpoint: point ANTHROPIC_BASE_URL at https://api.z.ai/api/anthropic, set your Z.ai key, and Claude Code's whole MCP stack — including every custom server you've added — works under GLM. (Connectors inherited from claude.ai are the exception: they load only under a claude.ai sign-in, so add servers with claude mcp add for this setup.) Guide
  • Kimi in Claude Code or its own CLI. Moonshot runs the same pattern at https://api.moonshot.ai/anthropic, and its native Kimi Code CLI speaks MCP with browser OAuth directly. Guide
  • DeepSeek, Qwen, MiniMax: all run Anthropic-compatible endpoints too — the "swap the base URL, keep the MCP stack" pattern is now vendor-endorsed across every major Chinese lab. OpenRouter even ships a native Anthropic-protocol endpoint, so one key covers 400+ models inside Claude Code.
  • Fully local models. LM Studio is the standout: a desktop app that runs GGUF/MLX models on your machine and ships a complete MCP client with OAuth and dynamic registration. A local Qwen or Llama with a hosted memory layer is a genuinely private, genuinely capable setup. Ollama's app doesn't speak MCP itself, but Ollama v0.14+ implements the Anthropic API natively — so ANTHROPIC_BASE_URL=http://localhost:11434 puts Claude Code's MCP support in front of any local model. Guides

One honest caveat: tool-calling quality varies across open models, and token-heavy tool lists can overwhelm smaller local ones. Pick models documented as tool-capable, and start with a server that keeps its tool surface tight.

Self-hosted and open-source clients

Open WebUI (native MCP since v0.6.31, Streamable HTTP only, OAuth 2.1 including dynamic registration), LibreChat (DCR is literally the default when you configure no credentials), Goose (now under the Linux Foundation's Agentic AI Foundation — extensions are MCP servers, with a one-click deeplink format), Cherry Studio, Msty Studio, Jan (built-in OAuth with dynamic registration and PKCE is merged but, as of October 2026, not yet announced in a stable release), and AnythingLLM — of which AnythingLLM, and Jan's current stable releases, still need mcp-remote for OAuth, which brings us to the universal escape hatch:

npx -y mcp-remote https://api.tempreon.com/functions/v1/tempreon-mcp/mcp

mcp-remote is a small local proxy that presents as a stdio server to any client, while handling the browser OAuth flow itself. Any client that can run a local command can reach an OAuth-protected remote server through it — it's the bridge for AnythingLLM, Trae, Crush, Zoo Code, and any older build that predates native OAuth. Full guide: open-source clients.

What doesn't work (and what died this year)

Honesty section — the answers that are genuinely "no" as of July 18, 2026:

  • Microsoft Copilot (consumer): fixed connector list, no custom MCP. The enterprise path exists via Copilot Studio, where the MCP tool wizard's "Dynamic discovery" auth option handles DCR servers cleanly — but that's an admin flow, not a consumer one.
  • GitHub Copilot's cloud coding agent: supports remote MCP servers, but explicitly not OAuth-authenticated ones. Static-header servers only, for now.
  • NotebookLM: no MCP client capability; the "NotebookLM MCP" projects you'll find go the other direction.
  • The open-model consumer apps: kimi.com, chat.z.ai, DeepSeek's app, Meta AI — no custom connector paths. The harness rule is the route.
  • Aider: still no MCP client support; the feature requests remain open.
  • Departed in 2026: Roo Code shut down in May (its community fork Zoo Code carries on), Continue.dev froze after its acquisition by Cursor in June, Gemini CLI retired for consumers in June, and iFlow CLI closed in April. Client landscapes move — check dates on any MCP tutorial you read.

Troubleshooting, cross-client

Five failure modes cover nearly everything:

  1. Instant failure → URL problem. The endpoint path (ours ends in /mcp) is required; no trailing slash.
  2. Connects, then rejects → transport keyword. Check the decoder table above; Cline's silent SSE fallback and Qwen Code's url-vs-httpUrl split are the classics.
  3. OAuth window never opens → pop-up blocker, no default browser, or a headless environment. CLI clients usually print the auth URL — open it manually.
  4. Worked yesterday, 401 today → expired token. Disconnect and reconnect the server; a few clients need a delete-and-re-add.
  5. Connected but no tools → restart the session (many clients refresh tool lists only at session start), check plan/policy gating, and in Vibe's case click Refresh tools on the connector's Functions tab (or re-add it), since Mistral lists dynamic tool discovery as not yet supported for custom MCP connectors.

If you want the long version for one specific client rather than the map of all of them, the MCP setup guides go client by client — where the setting actually lives, which config key that client reads for a remote server, and the failure mode particular to it. The troubleshooting guide goes deeper on each of the five failure modes above.

Why we built on this

Tempreon exists because the connection problem above is only half the problem. Once every AI app can reach external context, the question becomes what context deserves to travel. Our answer is the part that's you — identity, knowledge, decisions, and the patterns you'd otherwise re-teach every new tool. One Bridge URL, and the same you shows up in Claude, ChatGPT, Cursor, a local model in LM Studio, or whatever ships next month. The model does the thinking. The lessons live on.

If you've read this far, you're exactly who we built it for. Start free — one Bridge is included on every plan, and the universal setup guide covers any client we haven't met yet.

Frequently asked questions

What is a custom MCP server?
A custom MCP server is one you add to an AI app yourself — by pasting its URL into the app's connector or MCP settings — instead of picking it from a built-in directory. MCP (Model Context Protocol) is the open standard, introduced by Anthropic in November 2024, that lets AI applications call external tools and context sources. If a server is hosted and speaks Streamable HTTP with OAuth, connecting it is usually paste-URL, sign in, done.
Which AI apps support custom MCP servers in 2026?
Most major ones. Chat assistants: Claude (every plan, including Free), ChatGPT (Plus and up, via developer mode), Gemini (through its custom apps feature; US, 18 or over, personal account), Perplexity (Pro/Max/Enterprise), Vibe (formerly Le Chat), and Grok (every plan, including Free). Editors and IDEs: Cursor, VS Code with GitHub Copilot, Visual Studio, Windsurf (now Devin Desktop), Zed, JetBrains, Cline, and Kiro. Terminal agents: Claude Code, Codex, OpenCode, Gemini CLI, Qwen Code, Kimi Code CLI, Amp, and Droid. Plus self-hosted and local clients like LM Studio, Open WebUI, LibreChat, and Goose.
Does ChatGPT Free support custom MCP connectors?
No. As of August 2026, custom MCP apps in ChatGPT require Plus, Pro, Business, Enterprise, or Edu, with developer mode enabled — and they're web-only. OpenAI's docs describe full MCP support (including write actions) for Business, Enterprise, and Edu workspaces.
Does the Gemini app support custom MCP servers?
Yes — new in 2026. The Gemini app accepts custom MCP servers as custom apps, added by MCP server URL under Settings → Connected Apps → Custom apps (if Connected Apps isn't listed, it's under Settings → Personal Intelligence). Google lists no subscription for custom apps; it requires a personal Google account, 18 or over, in the US, in English, with Keep Activity on. For everyone else, Google Antigravity (generally available, with a free tier) connects custom MCP servers to Gemini models with no subscription.
Can open-source models like GLM, Kimi, or Qwen use custom MCP servers?
Yes, through the harness. MCP support lives in the client application, not the model — so any model running inside an MCP-capable harness gets custom MCP servers automatically. Run GLM or Kimi inside Claude Code (both vendors run Anthropic-compatible endpoints), OpenCode, or LM Studio, and your MCP servers work exactly as they do with a frontier model.
Do I need OAuth for a remote MCP server?
For most consumer clients, yes — OAuth 2.1 with dynamic client registration is the 2026 default for hosted MCP servers, and it's why connecting is paste-URL-and-sign-in instead of managing API keys. A few clients only support static header auth; those use the mcp-remote proxy, a small local bridge that runs the OAuth flow for them.
Why won't my MCP connector connect?
The four most common causes, in order: the URL is missing its /mcp endpoint path or has a trailing slash; the transport type is wrong or misspelled (each client uses a different keyword — http, remote, streamableHttp, streamable-http, httpUrl, or serverUrl); an expired OAuth token needs a disconnect-and-reconnect; or the plan or admin policy for custom connectors isn't enabled in that client.