All MCP setup guides
MCPComparison

Which AI Apps Support Custom MCP Servers (2026 Comparison)

A dated, source-checked comparison of which AI chat apps, IDEs, CLIs, and automation tools let you add a custom remote MCP server — where the setting lives, the transport, OAuth support, and plan gates, per app's own docs.

Last verified September 29, 2026

A custom MCP server is any Model Context Protocol server you point an AI app at yourself, by URL, rather than one from a built-in directory or app store the vendor curates. Remote means the server is reachable over HTTP — a Streamable HTTP or legacy SSE endpoint sitting somewhere reachable by URL, as opposed to a local (stdio) server the app launches as a subprocess on your machine. This page covers remote only: every row below is "does this app let me add my own server by URL," not "does this app support MCP at all" (several also support local servers, a separate config shape).

Every claim below comes from that app's own documentation, read on the date shown. Nothing here is a claim about how well an app works with any particular server — including ours. Where a guide's own text uses a generic example, this page describes that example the same way the guide does: a standard remote MCP server, connected the way that app connects any standard remote MCP server.

How to read this table

  • Where you add it — the UI path or the config file key, per that app's docs.
  • Remote transport — Streamable HTTP, SSE, or "bridge" when the app is really configuring a harness underneath it (GLM) rather than the app itself.
  • OAuth sign-in — whether the app can complete an OAuth flow with the server on its own. "Manual" means you supply a client ID/secret yourself; "no IDE flow" means the app has no OAuth UI at all and needs a proxy.
  • Plan / availability notes — any gate the vendor's own docs state: paid plan, admin/maker role, region, or platform restriction. "Not documented" means the source guide didn't find a stated gate, not that the app is confirmed gate-free.
  • Guide link — the full walkthrough, config examples, and troubleshooting FAQ for that app, each independently dated.

Guides are re-verified on a rolling schedule, so their dates differ from one app to the next. Rows were last updated in October 2026 — check the linked guide's own lastVerified date before relying on any single cell.

Chat apps

AppWhere you add itRemote transportOAuth sign-inPlan / availability notesGuide
ChatGPTPlugins → + → Add custom MCP server → Create as a plugin (web only)Custom MCP server added as a plugin, OAuthYesFull MCP, including writes, is documented for Business, Enterprise, and Edu (admins and owners create and publish; Enterprise and Edu can delegate creation by role). Pro connects with read and fetch permissions. Plus isn't mentioned in OpenAI's current article; the pricing page lists Developer mode (beta) and plugin creation on Plus, so test saves rather than assume them. No Developer Mode toggle in the current flow./guides/add-mcp-server-to-chatgpt
ClaudeCustomize → Connectors (sidebar being renamed Plugins) → + Add → Add custom connectorRemote MCP over HTTPSYes (or static request headers)Available on Free, Pro, Max, Ultra, Team, and Enterprise — Free users are limited to one custom connector. Runs from Anthropic's cloud, so add once on web/desktop and it syncs to mobile on next sign-in. Claude Code signed in with the same claude.ai account loads these connectors too./guides/add-mcp-server-to-claude
Gemini (consumer app)gemini.google.com → Settings → Connected Apps (or Settings → Personal Intelligence → Connected Apps) → Custom apps → Add a custom app (web only)Custom app added by URLYes — a browser consent screen opens when you add the appMust be 18+, in the US, on a personal (not work/school) Google account, with Keep Activity on; English only. Added on web, then available in the mobile app./guides/add-mcp-server-to-gemini
Grokgrok.com/connectors → New Connector → CustomCustom connector by URL, automatic tool discoveryCompleted in-app if the server requires it (per xAI docs)xAI documents connectors as available to all Grok users (The X Subscription tiers since October 2026; no plan named). Business/Enterprise need a team admin to provision the connector first. Server must be reachable over the public internet — Grok rejects localhost and private IP ranges./guides/add-mcp-server-to-grok
PerplexityPlugins → Add custom → Connector → Add MCP connector → Remote (accounts without Plugins yet: Customize → Connectors)Streamable HTTP or SSE, chosen per connectorYes — one of three auth options (None, API Key, OAuth 2.0)Pro, Max, and Enterprise (shipped March 2026). A separate, older Perplexity help page still says remote MCP is "coming soon" — that page is stale; follow the custom-connector article instead./guides/add-mcp-server-to-perplexity
Mistral Vibe (formerly Le Chat)Connectors page (from the sidebar) → + Add ConnectorCustom MCP Connector by URL, transport not specified by name — auth auto-detectedYes, auto-detected — None, OAuth 2.1, or Bearer/Basic all work without picking a modeListed on every plan, Free included (beta) — requires administrator access, and on Free/Pro/Student the account owner is the admin by default. Dynamic tool discovery is a documented current limitation: the tool list doesn't auto-update when the server changes, so use Refresh tools on the connector's Functions tab./guides/add-mcp-server-to-mistral-vibe

IDEs / editors

AppWhere you add itRemote transportOAuth sign-inPlan / availability notesGuide
CursorCustomize (sidebar) → MCPs, or .cursor/mcp.json / ~/.cursor/mcp.jsonNative Streamable HTTP, no proxyYes, automatic on first connectionNot documented as plan-gated. Customize panel requires v3.9+ (June 22, 2026); older builds edit mcp.json directly./guides/add-mcp-server-to-cursor
VS CodeCommand Palette → MCP: Add Server (Copilot Global), or .mcp.json / ~/.copilot/mcp-config.json (mcpServers) or .vscode/mcp.json (servers)Native HTTPYes, browser OAuth on first connect; works in the default Copilot harness (servers needing ${input:...} variables are not forwarded there)Not documented as plan-gated directly, but a Copilot org policy (disabled by default per GitHub) can hide MCP on Business and Enterprise seats. Tools only surface when Chat is running an agent./guides/add-mcp-server-to-vs-code
JetBrains IDEsSettings → Tools → AI Assistant → Model Context Protocol (MCP) → AddRemote HTTP, requires a 2025.3+ build; bearer headers onlyNo IDE OAuth flow — AI Assistant has none; use the mcp-remote proxy for OAuth-protected serversAI Assistant has Free-tier exclusions per JetBrains' licensing docs. Junie (the JetBrains agent) does have its own OAuth Authorize flow and can reuse the same server configs./guides/add-mcp-server-to-jetbrains
ZedSettings → AI → MCP Servers → Add Server → Add Remote Server, or the settings file → context_servers → urlNative, tokens stored in the system keychainYes, via an Authenticate button (v0.230.0+) — but only when no Authorization header is configured (one skips the other)Not documented as plan-gated. Open Zed issue as of October 2026: tools from OAuth-authenticated servers may not appear in an external agent driven through ACP./guides/add-mcp-server-to-zed
Windsurf (Devin Desktop)Devin Local's config: ~/.config/devin/mcp_config.json or .devin/mcp_config.json → mcpServers → url, or devin mcp addStreamable HTTP, with SSE fallbackYes — via devin mcp login or on first useOn Enterprise, an admin turns on Devin Local and controls MCP access (on/off, allowlist, registry). Devin Local has been the only agent since Cascade was removed in September 2026./guides/add-mcp-server-to-windsurf
ClineMCP Servers icon → Remote Servers tab, or cline_mcp_settings.jsonStreamable HTTP — requires "type": "streamableHttp" explicitly; omitted defaults to legacy SSEYes, for OAuth-capable servers (no headers entry needed) since v4.1.7 added pre-registered OAuth client support; earlier versions only documented static header authNot documented as plan-gated./guides/add-mcp-server-to-cline

CLIs / agents

AppWhere you add itRemote transportOAuth sign-inPlan / availability notesGuide
Claude Codeclaude mcp add (add --scope user for every project), or .mcp.json → mcpServers with "type": "http"Streamable HTTPYes, browser OAuth via /mcpNot documented as plan-gated. Config entries missing type are skipped (with an error in v2.1.202+) rather than silently failing. Signed in with a claude.ai account, it also loads your claude.ai connectors automatically (not under an API key, apiKeyHelper, or a cloud provider such as Amazon Bedrock); a server added in Claude Code wins over a connector at the same URL./guides/add-mcp-server-to-claude-code
OpenAI Codexcodex mcp add, or ~/.codex/config.toml → mcp_servers.<name> → url + optional bearer_token_env_varStreamable HTTPYes — codex mcp add starts the sign-in when it detects OAuth, and codex mcp login <name> re-runs it; bearer token is the alternativeSame config shared by the CLI, IDE extension, and ChatGPT desktop app — add once, available in all three. A project-local config.toml only loads for trusted projects./guides/add-mcp-server-to-codex
Gemini CLIgemini mcp add --transport http ... -s user for global, or settings.json → mcpServers → url with "type": "http" (the config schema source marks httpUrl deprecated in favour of url + type; the docs page still lists both)Streamable HTTPYes, via /mcp authStopped serving consumer Google accounts (Free, AI Pro, Ultra) on June 18, 2026. Works with a Gemini API key or an existing Gemini Code Assist Standard/Enterprise license (no new Standard/Enterprise sales after October 9, 2026)./guides/add-mcp-server-to-gemini-cli
Qwen Code~/.qwen/settings.json or .qwen/settings.json → mcpServers → httpUrl (url means SSE here — the rule Gemini CLI has since dropped)Streamable HTTP via httpUrlYes, automatic dynamic client registration via /mcpNot documented as plan-gated./guides/add-mcp-server-to-qwen-code
OpenCodeopencode.json (or .opencode/opencode.json on 2.x) or ~/.config/opencode/opencode.json → mcp → type: "remote" + url on OpenCode 1; mcp → servers → the same entry on OpenCode 2, or opencode mcp add <name> --url <url>Remote HTTPYes, automatic discoveryNot documented as plan-gated. type is required by the config schema — an entry without it silently fails to load. As of November 2026 two lines are current: OpenCode 1 (opencode-ai on npm) and OpenCode 2 (/cli), and OpenCode 2 does not read names placed directly under mcp./guides/add-mcp-server-to-opencode
Kiro.kiro/settings/mcp.json (project) or ~/.kiro/settings/mcp.json (global); a custom agent's own mcpServers outranks bothURL-only entryYes, automatic — attempts dynamic client registration, falls back to a default clientNothing in Kiro's pricing tiers gates MCP in the IDE or CLI (free tier works the same as paid); Kiro Web itself is a paid-plan surface. Real gates: no MCP in Kiro Mobile, and an enterprise admin can disable MCP or restrict it to an allow-list./guides/add-mcp-server-to-kiro
GitHub Copilot CLI/mcp add, or ~/.copilot/mcp-config.json → mcpServers → type: "http" + url + headersStreamable HTTP / SSEYes — browser callback sign-in since CLI v1.0.69 (July 2026), CIMD in v1.0.83 (Sept 4, 2026); GitHub's command reference documents /mcp auth for re-authentication, while its setup page only shows static headersAvailable with all Copilot plans (an org-provided seat needs the Copilot CLI policy enabled; enterprise MCP allowlists apply). Project-scoped servers (.mcp.json / .github/mcp.json) don't follow you across repos — use the user-level file for that./guides/add-mcp-server-to-github-copilot-cli
WarpSettings → Agents → MCP servers, or ~/.warp/.mcp.json (global) / .warp/.mcp.json (project) → mcpServers → urlNative, tokens stored on-deviceYes, for local agents — browser flow, once per machineNot documented as plan-gated. Cloud agents are a hard limitation: a url server that requires OAuth with no Authorization header cannot be used by cloud agents at all — use a local agent, or a managed installation referenced by warp_id./guides/add-mcp-server-to-warp
GooseDesktop: Extensions → Add custom extension; CLI: goose configure → Add Extension → Remote Extension; or ~/.config/goose/config.yaml → extensions → type: streamable_http (underscore, not hyphen) + uriRemote HTTP (streamable_http)Yes, when the server supports Dynamic Client Registration or a Client ID Metadata Document; otherwise manual client_id (and client_secret_key) on the extension entryNot documented as plan-gated./guides/add-mcp-server-to-goose
LM StudioChat sidebar → Program tab → Install and Edit mcp.json → mcpServers → urlRemote HTTPYes, since v0.4.10 (MCP support itself since v0.3.17)Not documented as plan-gated (LM Studio is local/free). Caveat isn't the app but the model: only models with native tool-calling support (marked with a hammer badge) reliably call MCP tools; smaller models can get worse after connecting one./guides/add-mcp-server-to-lm-studio
RaycastRun the Install MCP Server command → fill in name, Transport: HTTP, URL, OAuth Type: DynamicRemote HTTPYes, OAuth Type DynamicRaycast AI, including MCP, comes with the paid plans (Pro, Pro+ and Max), labeled "Tier: Pro Exclusive" in Raycast's manual across Mac, Windows, iOS (as of October 2026). Pro starts with a 7-day free trial. Add separately on each platform — installing on macOS doesn't carry to iOS automatically./guides/add-mcp-server-to-raycast

Automation / other

AppWhere you add itRemote transportOAuth sign-inPlan / availability notesGuide
Microsoft Copilot StudioAgent → Tools → Add a tool → New tool → Model Context Protocol (onboarding wizard; standard harness — GitHub Copilot harness agents use Build → Tools → Add → MCP, preview)MCP onboarding wizard (Streamable HTTP)Yes, in three modes: Dynamic discovery (server supports OAuth 2.0 DCR with a discovery endpoint), Dynamic, or Manual (you supply client ID/secret)Maker/admin flow, not an end-user chat setting — needs a Copilot Studio user license or the Copilot Studio authors role, or a Microsoft 365 Copilot license for the GitHub Copilot harness, plus a tenant with Copilot Credit capacity provisioned. Generative orchestration must be turned on for the agent or the server's tools won't be used. Trial licenses can build/test but not publish./guides/add-mcp-server-to-copilot-studio
n8nAdd an MCP Client Tool node as a tool on an AI Agent node; set its Endpoint and Server TransportRemote HTTP: SSE or Streamable HTTP, per the server (node v1.2+ defaults to HTTP Streamable; v1 only had an "SSE Endpoint" field)Yes, two ways — pick a server from n8n's built-in MCP registry (sign-in creates the credential for you), or add the node manually and choose OAuth2 as the Authentication option (alongside Bearer, Header, and None)Not documented as plan-gated — this is a workflow-builder node, available wherever n8n's AI Agent node is. This is the opposite direction from the separate MCP Server Trigger node, which makes n8n itself an MCP server./guides/add-mcp-server-to-n8n
Open WebUIAdmin Settings → Integrations → External Tool Servers (admin-only)Remote Streamable HTTP onlyYes, per-user OAuth 2.1, or a bearer tokenRegistration is admin-only, unlike OpenAPI tool servers which users can self-add if granted permission — once registered, individual users authenticate to it themselves. Self-hosted: a Dockerized Open WebUI reaching a server on the host machine needs host.docker.internal, not localhost./guides/add-mcp-server-to-open-webui
GLM (Z.ai)Not the model itself — configured on whatever harness runs it (Claude Code, OpenCode, Cline)Harness-level — MCP is not configured on the model at allWhatever the harness supports (see that harness's row)Swapping to GLM changes nothing about the MCP connection; it's entirely the harness's config. Included here because "does GLM support MCP" is a common question with a "wrong question" answer./guides/add-mcp-server-to-glm

Caveats

  • Docs lag releases. More than one guide behind this table exists because a vendor's own help page was stale or contradicted its own changelog — Perplexity's "coming soon" page sitting next to a shipped feature for months, and Gemini CLI's docs page still describing a url rule its code dropped. Read the linked guide's sources, not just this table, before making a decision that depends on a specific behavior.
  • Recheck before relying on any cell. MCP support across these apps changed multiple times within 2026 (Gemini CLI's consumer-account retirement, Raycast's move to Pro-exclusive, Windsurf's rename and Cascade's removal, Mistral's rename to Vibe). Each guide's lastVerified date is the last confirmed-accurate date, not a guarantee it's unchanged today.
  • "Not documented" is not "unsupported." Several plan/OAuth cells above say the source guide found no stated gate. That means the vendor's own docs didn't call one out at the time of verification — it is not the same as a vendor statement that no gate exists.
  • This table doesn't rank or recommend. It restates what each vendor documents about their own product. Choosing among these apps depends on factors this table doesn't cover — pricing beyond the MCP-specific gates listed, existing workflow, and non-MCP features.

Sources

The dated claims on this page were checked against these vendor documents. Client UIs move constantly, so if one of these has changed since the date shown, trust the vendor over this page — and tell us.

Frequently asked questions

Does 'supports custom MCP servers' mean it works with any server, including one I host myself?
For every app in this table, yes — a custom or remote MCP server means any server reachable at a URL you supply, not just the ones the vendor lists in a built-in directory. Some apps add requirements on top of that: Grok rejects localhost and private IP ranges and needs a public URL (tunnel a local server first), and Open WebUI's Docker install needs host.docker.internal instead of localhost to reach a server running on your own machine.
Which of these apps work with a local (stdio) MCP server, not just remote?
This table only covers remote servers — the ones reachable over HTTP. Several of the listed apps also support local stdio servers (Claude Code, Cursor, VS Code, JetBrains, Zed, Cline, LM Studio, and others all do), but that's a separate config shape from what's documented here. Check the linked per-app guide for the local-server config if that's what you need.
Why do some rows say OAuth works automatically and others need a proxy or manual client ID?
It depends on whether the client supports Dynamic Client Registration (DCR) or a Client ID Metadata Document (CIMD), and whether the server does too. When both sides support it, the client registers itself and opens a browser consent screen with nothing to configure — that's the common case in this table. When the client has no OAuth flow at all (JetBrains AI Assistant, as of the version in this guide) you need a proxy like mcp-remote. When the server doesn't support DCR, some clients (Copilot Studio, Goose, n8n) fall back to a manual client ID and secret you get from the server operator.
A vendor changed something after this was written. What do I do?
Check the readOn date on the source next to the claim, and the lastVerified date on the specific app's own guide (linked from the table) — that's the date someone actually read the vendor doc, not the date this comparison page was assembled. A plan gate, config key, or OAuth behavior can change between verifications. When in doubt, open the per-app guide and its sources directly.