---
title: "What is an MCP connector | Host, server, ceiling | Len P. van der Hof"
description: "An MCP connector is how a host attaches an MCP server: local stdio on the same machine, or a remote HTTPS endpoint. It is not a product you buy and not a substitute for a permission ceiling."
image: "https://lenvanderhof.com/media/generated/blog-hero-mcp-connector-v1.64ae8cfc989f.wide.webp"
---

[AI Systems](https://lenvanderhof.com/en/blog/category/ai-systems/) Research guide

# What is an MCP connector?

The connector is a plug. The server is the tool. The ceiling is still the product.

Len P. van der HofPublished 27 August 20266 min read

One plug seated. The rest capped. The log still hangs on the hook.

Direct answer

An MCP connector is the attachment between a host (ChatGPT, Claude, Gemini, Grok, a desktop app, a CLI) and an MCP server. The server exposes tools, resources, and prompts. The host opens one client per server. Local connectors usually start a process over stdio. Remote connectors speak HTTPS (Streamable HTTP or SSE) so a cloud host can reach the server. ChatGPT custom MCP is remote-only. Claude Desktop can run local stdio servers from a config file. Grok custom connectors need a public HTTPS URL; localhost must be tunnelled. Gemini managed agents and Gemini CLI can attach remote MCP servers. Start first-connect diagnosis with transport, restart, and auth, not the model. Menus move. Recheck first-party docs. A connector without visibility, mutation, and a log is still a hole.

## Key takeaways

- Connector = host attaches server. Server = tools, resources, prompts. MCP = the contract.
- Local stdio vs remote HTTPS is the split that decides ChatGPT vs Claude Desktop vs Grok.
- First-connect failures are boring: the app was not fully quit, the JSON is invalid, stdout was polluted by a log line, or the remote auth never completed.
- Tool descriptions and tool output are untrusted input. They are data, not instructions.
- Easy paths exist. They are not a ceiling. Read visibility, mutation, log before you enable write.

Vendors could not agree on the word. Connector, app, custom app, plugin, MCP server. The Dutch search is **MCP koppeling**. The object is the same: a **host** attaches a **server** that speaks MCP.

[MCP](https://lenvanderhof.com/glossary/mcp/) is the dictionary. [MCP explained for founders](https://lenvanderhof.com/en/blog/mcp-explained-for-founders/) is the ceiling. This page is the plug.

## What a koppeling actually is

The host (Claude Desktop, ChatGPT, Grok, Gemini CLI, VS Code, this site’s own tools) creates **one client per server**. The server exposes **tools** (actions), **resources** (reads), and **prompts** (templates).

Two transports matter in daily work:

- **Local stdio.** The host starts a process on your machine and talks JSON-RPC over its standard input and output. Claude Desktop’s `claude_desktop_config.json` is the usual example. No network and no public URL. The files it can see are the files on that machine, running as your user.
- **Remote HTTPS.** Streamable HTTP or SSE. A cloud host can reach it. ChatGPT custom MCP needs this (or OpenAI’s Secure MCP Tunnel). Grok custom connectors reject localhost; you tunnel. Gemini managed agents attach a remote `mcp_server` URL.

That one split decides almost every “why will this not connect” question:

HostLocal stdioRemote HTTPSWhere it is configuredClaude DesktopYesYesclaude_desktop_config.json, or reviewed ExtensionsChatGPT (custom MCP)NoYes, requiredDeveloper mode, then a public HTTPS URL or OpenAI’s tunnelGrok (grok.com connectors)No, localhost rejectedYes, requiredConnector settings, public URL or an xAI tunnelGrok CLIYesYesgrok mcp addGemini (managed agents, CLI)CLI onlyYesAgent config or CLI settings, Google credentials or API key

If the setup starts with `npx` and no public URL, ChatGPT will not see it until you bridge it. That is not a bug in your JSON. It is the remote-only rule.

## Easy connectors, four hosts

Menus move. Recheck the first-party link before you treat a path as law. The split above is the durable part.

**Claude.** Desktop can install reviewed **Extensions**, or you paste a local server into `claude_desktop_config.json` and fully quit the app. The [official MCP walkthrough](https://modelcontextprotocol.io/docs/develop/connect-local-servers) and [Anthropic’s help article](https://support.claude.com/en/articles/10949351-getting-started-with-local-mcp-servers-on-claude-desktop) both use a **filesystem** server: `npx -y @modelcontextprotocol/server-filesystem` plus the directories you allow. That is the easiest real connector: one folder, then a restart. Note what the argument list is doing. The allowed directories define the file boundary. Write tools still need a review.

**ChatGPT.** Built-in **apps** (OpenAI also still says connectors) are packaged integrations: Gmail, Drive, and similar, clicked and signed in. **Custom MCP** is different: [developer mode](https://help.openai.com/en/articles/12584461-developer-mode-and-full-mcp-connectors-in-chatgpt-beta), then create an app or connector pointing at a **public HTTPS** MCP URL, scan the tools, authenticate. OpenAI [documents the connect flow](https://developers.openai.com/plugins/deploy/connect-chatgpt) and describes full write MCP as a **beta** for Business, Enterprise, and Edu. Plan access and workspace admin policy still apply. Do not paste an `npx` stdio command into ChatGPT and expect it to boot.

**Gemini.** Managed agents in the Gemini API can take a remote `mcp_server` tool at interaction time (Google’s July 2026 agent update). Gemini CLI and Cloud Agent Platform speak HTTP MCP with Google credentials or an API key. Consumer Gemini chat UI labels change; use Google’s current docs, not a screenshot from a roundup blog.

**Grok.** [Custom connectors](https://x.ai/docs/build/features/mcp-servers) on grok.com need a **public HTTPS** URL. xAI’s [tunneling doc](https://x.ai/docs/grok/connectors/custom-mcp-tunneling) says localhost and RFC1918 addresses are rejected. The **Grok CLI** can add local stdio (`grok mcp add filesystem -- npx …`) or remote HTTP. Same contract, two surfaces.

The [MCP Registry](https://registry.modelcontextprotocol.io/) lists published servers. It is a catalogue, not a safety review. Official **reference** servers (filesystem, fetch, git, memory, time, sequential thinking, everything) teach the protocol. They are educational, not production-ready. This site’s [ReasonKit](https://reasonkit.sh/) is a specialised reasoning server, not an official reference.

## When it does not connect

The failures are boring and they repeat. Work them in this order before you blame the model.

**The server never appears after you edited the config.** Quit the desktop app completely, not just the window. On macOS, closing the window leaves it running. Then validate the JSON. A trailing comma is a common cause of a config the app silently ignores.

**The server appears and immediately dies.** Run the exact command from the config in a terminal, as the same user. Common causes are a binary missing from the app’s `PATH` (the app does not inherit your shell profile) and a relative path resolving somewhere unexpected. Use absolute paths in the config.

**A local server connects, then behaves strangely.** On stdio, standard output *is* the transport. Anything a server prints there that is not a valid protocol message corrupts the stream. Logs go to stderr. If you wrote the server, check for a stray `print` before you check anything else.

**A remote server 404s or hangs.** Confirm the URL is the MCP endpoint, not the marketing page, and that it is reachable from outside your network. A tunnel that expired looks exactly like a broken server.

**Auth loops.** Remote connectors that use OAuth need a callback the host can actually reach, and a token whose audience is that server. A token issued for something else is not a substitute.

**Tools are listed but never called.** That is not a connection failure. Check the host allowlist, then the tool names and descriptions. Fix those before you rewrite the prompt.

## Before you attach someone else’s server

A remote connector is an integration with somebody else’s infrastructure, holding credentials you issued.

Five questions, in writing, before you click connect:

1. **Who runs it?** A named company or maintainer, not a GitHub handle you found in a thread.
2. **Whose credentials does it hold, and at what scope?** One credential per server. Never a shared admin token.
3. **What does it log, and can you get your own trail out?**
4. **Read or write?** Attach the read-only version first, always, even when the write version is one checkbox away.
5. **What happens when you revoke it at 17:00?** If nobody knows, you have not attached a tool. You have taken a dependency.

One more thing that gets skipped. **Tool descriptions and tool output are untrusted input.** A server describes its own tools, and a fetched page can contain text that looks like an instruction. The specification tells clients not to trust tool annotations unless the server itself is trusted, and the same logic runs downstream: content a tool returns is data, not orders. A connector that reads the open web and can also write somewhere is the shape of the problem, not a convenience.

## Daily workflow without a hole

1. Decide **read vs write**. Attach a read-only connector first.
2. Name an **owner** in the repo or the settings note.
3. Fill the three reads: visibility, mutation, log. If you cannot reconstruct Tuesday, do not enable send.
4. Review the **first ten** write calls in full. Then use the log to decide whether any reversible gate can be relaxed. Keep irreversible writes gated.
5. Re-read the host’s help article when the Settings tree moves. It will.

A koppeling that “just works” with write access is a junior hire with root. The plug is easy. The ceiling is the work.

## Terminology

- [MCP](https://lenvanderhof.com/glossary/mcp/)

## Sources

1. [MCP (glossary)](https://lenvanderhof.com/glossary/mcp/)
2. [MCP explained for founders](https://lenvanderhof.com/en/blog/mcp-explained-for-founders/)
3. [MCP (glossary)](https://lenvanderhof.com/glossary/mcp/)
4. [Connect to local MCP servers](https://modelcontextprotocol.io/docs/develop/connect-local-servers) · MCP project
5. [Getting started with local MCP servers on Claude Desktop](https://support.claude.com/en/articles/10949351-getting-started-with-local-mcp-servers-on-claude-desktop) · Anthropic Help Center
6. [Developer mode, apps and full MCP connectors in ChatGPT](https://help.openai.com/en/articles/12584461-developer-mode-and-full-mcp-connectors-in-chatgpt-beta) · OpenAI Help Center
7. [Connect and test your plugin (ChatGPT MCP)](https://developers.openai.com/plugins/deploy/connect-chatgpt) · OpenAI
8. [Connectors and MCP servers (OpenAI API)](https://platform.openai.com/docs/guides/tools-connectors-mcp) · OpenAI
9. [Grok MCP servers](https://x.ai/docs/build/features/mcp-servers) · xAI
10. [Grok custom MCP server tunneling](https://x.ai/docs/grok/connectors/custom-mcp-tunneling) · xAI
11. [MCP Registry](https://registry.modelcontextprotocol.io/) · MCP project

## Further reading

- [MCP](https://lenvanderhof.com/glossary/mcp/)
- [MCP explained for founders](https://lenvanderhof.com/en/blog/mcp-explained-for-founders/)
- [MCP Registry](https://registry.modelcontextprotocol.io/)

About the author

## [Len P. van der Hof](https://lenvanderhof.com/en/authors/len-p-van-der-hof/)

Entrepreneur, AI Innovator and Venture Builder

Len P. van der Hof builds practical AI systems, digital ventures and evidence-informed tools for founders.

```json
{
	"@context": "https://schema.org",
	"@graph": [
		{
			"@type": "Person",
			"@id": "https://lenvanderhof.com/#person",
			"name": "Len P. van der Hof",
			"alternateName": [
				"Len van der Hof",
				"L.P. van der Hof",
				"Leendert Pieter van der Hof"
			],
			"honorificSuffix": "MSc",
			"url": "https://lenvanderhof.com/",
			"image": [
				"https://lenvanderhof.com/photos/len-portrait-1.jpg",
				"https://lenvanderhof.com/photos/len-portrait-2.jpg",
				"https://lenvanderhof.com/photos/len-portrait-3.jpg",
				"https://lenvanderhof.com/photos/len-portrait-4.jpg",
				"https://lenvanderhof.com/photos/len-speaking.jpg",
				"https://lenvanderhof.com/photos/len-hero.jpg"
			],
			"jobTitle": "Entrepreneur, AI Innovator and Venture Builder",
			"description": "Len P. van der Hof is a Dutch entrepreneur and AI innovator building ReasonKit, MindSesh, Undominated.ai and technology ventures through LPH98.ventures.",
			"address": {
				"@type": "PostalAddress",
				"addressLocality": "Zwijndrecht",
				"addressCountry": "NL"
			},
			"alumniOf": {
				"@type": "CollegeOrUniversity",
				"name": "Rotterdam School of Management, Erasmus University"
			},
			"knowsAbout": [
				"Artificial intelligence",
				"AI agents",
				"Agentic AI systems",
				"SEO",
				"Generative engine optimization",
				"Answer engine optimization",
				"Venture building",
				"Founder performance",
				"Founder psychology",
				"Evidence-based decision-making"
			],
			"sameAs": [
				"https://www.linkedin.com/in/lenvanderhof/",
				"https://x.com/LenvanderHof",
				"https://www.youtube.com/channel/UCTG20buKqYYbitqqf7l3zJA",
				"https://www.instagram.com/Lenvanderhof/",
				"https://www.threads.com/@lenvanderhof",
				"https://github.com/Lenvanderhof",
				"https://www.goodreads.com/author/show/70983905.Len_P_van_der_Hof",
				"https://www.amazon.com/stores/author/B0H8B1SCLQ",
				"https://www.bol.com/nl/nl/b/len-p-van-der-hof-msc/609879394/",
				"https://bsky.app/profile/lenvanderhof.com",
				"https://mastodon.social/@Lenvanderhof",
				"https://crates.io/users/Lenvanderhof",
				"https://cursor.com/@Lenvanderhof",
				"https://medium.com/@Lenvanderhof",
				"https://gitlab.com/Lenvanderhof",
				"https://hub.docker.com/u/lenvanderhof/",
				"https://dev.to/lenvanderhof",
				"https://www.facebook.com/Lenvanderhof",
				"https://soundcloud.com/Lenvanderhof"
			],
			"affiliation": [
				{
					"@id": "https://lenvanderhof.com/#publisher"
				},
				{
					"@id": "https://lenvanderhof.com/#mindsesh"
				}
			]
		},
		{
			"@type": "WebSite",
			"@id": "https://lenvanderhof.com/#website",
			"url": "https://lenvanderhof.com/",
			"name": "Len P. van der Hof",
			"description": "Len P. van der Hof is a Dutch entrepreneur and AI innovator building ReasonKit, MindSesh, Undominated.ai and technology ventures through LPH98.ventures.",
			"inLanguage": [
				"en",
				"nl"
			],
			"publisher": {
				"@id": "https://lenvanderhof.com/#person"
			}
		},
		{
			"@type": "Organization",
			"@id": "https://lenvanderhof.com/#publisher",
			"name": "LPH98.ventures",
			"url": "https://lph98.ventures",
			"founder": {
				"@id": "https://lenvanderhof.com/#person"
			}
		},
		{
			"@type": "Organization",
			"@id": "https://lenvanderhof.com/#mindsesh",
			"name": "MindSesh",
			"url": "https://mindsesh.net",
			"founder": {
				"@id": "https://lenvanderhof.com/#person"
			}
		},
		{
			"@type": "SoftwareApplication",
			"@id": "https://lenvanderhof.com/#reasonkit",
			"name": "ReasonKit",
			"url": "https://reasonkit.sh",
			"creator": {
				"@id": "https://lenvanderhof.com/#person"
			}
		},
		{
			"@type": "SoftwareApplication",
			"@id": "https://lenvanderhof.com/#undominated",
			"name": "Undominated.ai",
			"url": "https://undominated.ai",
			"creator": {
				"@id": "https://lenvanderhof.com/#person"
			}
		},
		{
			"@type": "ImageObject",
			"@id": "https://lenvanderhof.com/en/blog/what-is-an-mcp-connector/#primaryimage",
			"url": "https://lenvanderhof.com/media/generated/blog-hero-mcp-connector-v1.64ae8cfc989f.wide.webp",
			"contentUrl": "https://lenvanderhof.com/media/generated/blog-hero-mcp-connector-v1.64ae8cfc989f.wide.webp",
			"representativeOfPage": true
		},
		{
			"@type": "BreadcrumbList",
			"@id": "https://lenvanderhof.com/en/blog/what-is-an-mcp-connector/#breadcrumb",
			"itemListElement": [
				{
					"@type": "ListItem",
					"position": 1,
					"name": "Home",
					"item": "https://lenvanderhof.com/"
				},
				{
					"@type": "ListItem",
					"position": 2,
					"name": "Blog",
					"item": "https://lenvanderhof.com/en/blog/"
				},
				{
					"@type": "ListItem",
					"position": 3,
					"name": "AI Systems",
					"item": "https://lenvanderhof.com/en/blog/category/ai-systems/"
				},
				{
					"@type": "ListItem",
					"position": 4,
					"name": "What is an MCP connector?",
					"item": "https://lenvanderhof.com/en/blog/what-is-an-mcp-connector/"
				}
			]
		},
		{
			"@type": "WebPage",
			"@id": "https://lenvanderhof.com/en/blog/what-is-an-mcp-connector/#webpage",
			"url": "https://lenvanderhof.com/en/blog/what-is-an-mcp-connector/",
			"name": "What is an MCP connector?",
			"description": "An MCP connector is how a host attaches an MCP server: local stdio on the same machine, or a remote HTTPS endpoint. It is not a product you buy and not a substitute for a permission ceiling.",
			"isPartOf": {
				"@id": "https://lenvanderhof.com/#website"
			},
			"primaryImageOfPage": {
				"@id": "https://lenvanderhof.com/en/blog/what-is-an-mcp-connector/#primaryimage"
			},
			"breadcrumb": {
				"@id": "https://lenvanderhof.com/en/blog/what-is-an-mcp-connector/#breadcrumb"
			},
			"inLanguage": "en-GB"
		},
		{
			"@type": "BlogPosting",
			"@id": "https://lenvanderhof.com/en/blog/what-is-an-mcp-connector/#article",
			"mainEntityOfPage": {
				"@id": "https://lenvanderhof.com/en/blog/what-is-an-mcp-connector/#webpage"
			},
			"headline": "What is an MCP connector?",
			"description": "An MCP connector is how a host attaches an MCP server: local stdio on the same machine, or a remote HTTPS endpoint. It is not a product you buy and not a substitute for a permission ceiling.",
			"datePublished": "2026-08-27T16:00:00.000Z",
			"author": {
				"@id": "https://lenvanderhof.com/#person"
			},
			"publisher": {
				"@id": "https://lenvanderhof.com/#person"
			},
			"image": [
				"https://lenvanderhof.com/media/generated/blog-hero-mcp-connector-v1.64ae8cfc989f.square.webp",
				"https://lenvanderhof.com/media/generated/blog-hero-mcp-connector-v1.64ae8cfc989f.landscape.webp",
				"https://lenvanderhof.com/media/generated/blog-hero-mcp-connector-v1.64ae8cfc989f.wide.webp"
			],
			"articleSection": "AI Systems",
			"inLanguage": "en-GB"
		}
	]
}
```
