How to Connect a Custom MCP Server to Any LLM: The Complete Guide
Last verified September 1, 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 Spark), 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.
- 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.
- 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/mcpendpoint path. Leaving that path off is the single most common connection failure across every client. - Pick the transport, if asked. Choose Streamable HTTP (sometimes labeled "HTTP" or "Remote"). Never stdio — that's for local servers running as subprocesses.
- 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.
- Approve the sign-in. A browser tab opens on the server's consent screen. Sign in, approve, done.
- 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:
| Vendor | What they call a custom MCP server | Where it lives |
|---|---|---|
| Anthropic (Claude) | Custom connector | Customize → Connectors (Settings → Connectors now redirects there) |
| OpenAI (ChatGPT) | Custom app (was "custom connector" until Dec 2025) | Settings → Apps → developer mode |
| Google (Gemini) | Custom app for Spark | Settings → Connected Apps |
| xAI (Grok) | Custom connector / "Bring your own MCP" | grok.com/connectors |
| Perplexity | Custom connector | Settings → Connectors |
| Editors & CLIs | MCP server | mcp.json / settings, various shapes |
And the deeper trap — the transport keyword differs per client config file:
| Client | The magic word |
|---|---|
| VS Code, Visual Studio, Codex, Droid, Crush | "type": "http" |
| Cline | "type": "streamableHttp" |
| Continue, Zoo Code | "type": "streamable-http" |
| OpenCode | "type": "remote" |
| Goose | type: streamable_http |
| Gemini CLI, Qwen Code | "httpUrl" (the url key means legacy SSE) |
| Antigravity | "serverUrl" (Antigravity's docs list url and httpUrl as unsupported) |
| Windsurf / Devin Desktop (Cascade) | "serverUrl" is the convention, but url is accepted too |
| Windsurf / Devin Desktop (Devin Local, the default agent) | plain "url" — serverUrl isn't documented for it |
| Cursor, Zed, Claude Desktop, Kiro, LM Studio, Warp, JetBrains | plain "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 is a separate config: claude mcp add --transport http tempreon <url>, then /mcp to sign in. Full guides: 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, treat write tools as limited. Business workspace admins enable custom MCP 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 is retiring its Atlas browser, which stops working on August 9, 2026; use ChatGPT on the web instead. Full guide: ChatGPT.
Gemini — yes, actually, via Spark
The answer changed this summer. The Gemini app now accepts custom MCP servers through Gemini Spark: gemini.google.com → Settings & help → Connected Apps → Custom apps for Spark → Add a custom app. Dynamic client registration is supported, so a compliant server needs only its URL. The gate is narrower than the rest of Gemini — you need Spark access, which comes with Google AI Pro or Ultra, plus a personal account, US, 18+, English. 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 automatic. 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
Settings → Connectors → + Custom connector → Remote, 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.
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. Work → Connectors → + 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 "Bring your own MCP" 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. 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 uses .vscode/mcp.json with root key servers (not mcpServers — VS Code's one quirk) and "type": "http"; 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 — the legacy Cascade agent still reads ~/.codeium/windsurf/mcp_config.json with the serverUrl key, but Devin Local is now the default agent for new tabs, and it keeps its own config files and uses plain url. Adding a server to the wrong agent is the most common reason it never appears. 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:
claude mcp add --transport http tempreon <url>, then/mcp. Guide - Codex:
codex mcp add tempreon --url <url>, thencodex mcp login tempreon. TOML config, shared across CLI, IDE extension, and the ChatGPT desktop app. Guide - 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:
httpUrlconfig, then authorize from the/mcpdialog — automatic discovery and registration. (/mcp authis Gemini CLI's command, not Qwen's, despite the shared lineage.) 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 only. 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_URLathttps://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. 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:11434puts 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 (Block's agent — extensions are MCP servers, with a one-click deeplink format), Cherry Studio, Msty, Jan, and AnythingLLM. The last two lack OAuth clients, 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 Jan, 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:
- Instant failure → URL problem. The endpoint path (ours ends in
/mcp) is required; no trailing slash. - Connects, then rejects → transport keyword. Check the decoder table above; Cline's silent SSE fallback and Gemini CLI's
url-vs-httpUrlsplit are the classics. - OAuth window never opens → pop-up blocker, no default browser, or a headless environment. CLI clients usually print the auth URL — open it manually.
- Worked yesterday, 401 today → expired token. Disconnect and reconnect the server; a few clients (Cline currently) need a delete-and-re-add.
- 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 re-add the connector, 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 Spark custom apps on Google AI Pro or Ultra), 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. Gemini Spark, the agent inside the Gemini app, accepts custom apps by MCP server URL under Settings → Connected Apps → Custom apps for Spark. It currently requires Gemini Spark access, which comes with a Google AI Pro or Ultra subscription, plus a personal account, US, 18+, and English. 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.