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 28, 2026

Which AI apps support custom MCP servers (2026 comparison)

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 span three verification windows: seven guides from August 15–24, 2026; fourteen from September 15, 2026; and eleven verified or re-verified September 28, 2026. All facts below are as of September 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
ChatGPTSettings → Apps → Advanced Settings → Create App (also Settings → Security and login → Developer mode)Custom app with OAuth, Developer Mode requiredYesPaid plan required (Plus, Pro, Business, Enterprise, Edu) — not Free. Web only. Business/Enterprise/Edu need an admin to enable custom MCP first. Write tools are limited on Plus/Pro even though lookups work./guides/add-mcp-server-to-chatgpt
ClaudeCustomize → Connectors → Add custom connectorRemote MCP over HTTPSYes (or static request headers)Available on every plan including Free — Free is capped at one custom connector at a time. Runs from Anthropic's cloud, so add once on web/desktop and it syncs to mobile on next sign-in./guides/add-mcp-server-to-claude
Gemini (consumer app)gemini.google.com → Settings → 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)Every plan including Free. 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
PerplexityAccount settings → Connectors → + Custom connector → RemoteStreamable 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 (under Work) → + 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 modeNo stated plan gate in Mistral's docs — 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./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, or .vscode/mcp.json (root key servers, not mcpServers)Native HTTPYes, via an Auth CodeLensNot documented as plan-gated directly, but a Copilot org policy can hide MCP entirely. Tools only surface when Chat is in agent mode./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
ZedAgent Panel settings menu, or settings.json → context_servers → urlNative, tokens stored in the system keychainYes, automatic — but only when no Authorization header is configured (one skips the other)Not documented as plan-gated. Open Zed issue as of August 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)Cascade: ~/.codeium/windsurf/mcp_config.json → mcpServers → serverUrl; Devin Local: .devin/mcp_config.local.json → urlHTTP server entryYes — Devin Local via devin mcp login or on first useEnterprise gate: MCP ships off by default on Enterprise. Two separate agents (legacy Cascade vs. the now-default Devin Local) read different config files and won't see each other's servers./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./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, via codex mcp login <name>; 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 → httpUrl (not url — that key means SSE)Streamable HTTP via httpUrlYes, via /mcp authStopped serving consumer Google accounts (Free, AI Pro, Ultra) on June 18, 2026. Works with Gemini Code Assist Standard/Enterprise licenses and paid Gemini API keys./guides/add-mcp-server-to-gemini-cli
Qwen Code~/.qwen/settings.json or .qwen/settings.json → mcpServers → httpUrl (same url-vs-httpUrl trap as Gemini CLI)Streamable HTTP via httpUrlYes, automatic dynamic client registration via /mcpNot documented as plan-gated./guides/add-mcp-server-to-qwen-code
OpenCodeopencode.json or ~/.config/opencode/opencode.json → mcp → type: "remote" + urlRemote HTTPYes, automatic discoveryNot documented as plan-gated. type is required by the config schema — an entry without it silently fails to load./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 (free tier works the same as paid). 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, in current releases — Client ID Metadata Document (CIMD) support landed in CLI v1.0.83 (Sept 4, 2026); GitHub's setup page itself only documents static headersNot documented as plan-gated. 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 DynamicMCP is Pro-exclusive as of August 2026 (labeled "Tier: Pro Exclusive" in Raycast's manual across Mac, Windows, iOS). Free tier gets 50 trial AI messages, then is pointed at Pro. 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)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, 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 next to a shipped feature, and Cline's OAuth behavior living only in GitHub release notes, not the docs page. 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 default-agent switch, 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.