Learn MCP

Evergreen guides for evaluating, connecting, building, and operating Model Context Protocol integrations.

Understand

What MCP is, how remote servers differ from local ones, and when building one is worth it.

  1. What is the Model Context Protocol?

    A developer introduction to MCP roles, tools, resources, prompts, transports, and the two protocol lifecycle eras.

    6 min readNewcomer

  2. Remote vs. Local MCP Servers

    How stdio and Streamable HTTP servers differ in sessions, authentication, deployment, CORS, and compatibility.

    7 min readPractitioner

  3. Should you build an MCP server?

    A decision framework for choosing MCP, a normal API, direct function calling, client-specific apps or skills, or an integration gateway.

    8 min readNewcomer

  4. What is MCP? A plain-English explanation

    What the Model Context Protocol is, what problem it solves, and what happens when an AI assistant uses a connected server, explained without code.

    5 min readNewcomer

  5. What can you do with MCP?

    Six practical uses of MCP servers, from searching your own documents to coding agents and unattended automation, each with a real public server and its honest limits.

    4 min readNewcomer

  6. Is MCP safe?

    What a connected MCP server can see and do, how tool poisoning and prompt injection work, what OAuth consent and tool approvals protect, and how to vet a server before you connect it.

    6 min readNewcomer

  7. MCP vs API vs function calling

    How MCP relates to ordinary APIs and to model function calling, with a comparison table and guidance on when each one is the right layer.

    5 min readPractitioner

  8. MCP glossary

    Forty-one Model Context Protocol terms in alphabetical order, from API key to transport, each defined in one or two sentences and linked by anchor.

    7 min readNewcomer

  9. A short history of MCP: from launch to the 2026 specification

    The Model Context Protocol from its November 2024 launch to the stateless 2026-07-28 revision: governance, adoption, and what each specification revision changed for users.

    4 min readNewcomer

  10. mcptest.io vs MCP Inspector, MCPJam, Glama and Postman

    An honest comparison of five MCP testing tools on install, remote OAuth, browser CORS evidence, shareable reports, catalogs, CI and price, with what each does best.

    6 min readPractitioner

  11. Remote MCP testing tools compared (2026)

    Eight MCP testing tools, from the official Inspector and conformance suite to MCPJam, Glama, Postman, two compliance CLIs and mcptest.io, compared on OAuth, CORS evidence, output validation, reports, CI, price and license.

    11 min readPractitioner

  12. mcptest.io vs the glama.ai inspector

    Two zero-install browser inspectors for remote MCP servers compared on connection path, OAuth, CORS evidence, report sharing and badges, catalog, diagnostics, structured output, price and openness.

    6 min readPractitioner

  13. How to vet an MCP server before you connect it: assessment, audit and allowlisting

    Turn an MCP server assessment into an approval decision with recorded evidence, a limited pilot, organisation allowlisting and a repeatable audit trail.

    7 min readPractitioner

Use

Connect clients to remote servers, compare host support, and get through OAuth.

  1. How to connect to a remote MCP server

    A client-oriented walkthrough for testing an authless or OAuth-protected Streamable HTTP endpoint and diagnosing the first connection.

    8 min readNewcomer

  2. MCP clients compared

    Compare the documented transports, authentication paths, capabilities, configuration, and approval controls in six widely used MCP clients.

    11 min readPractitioner

  3. OAuth for MCP explained

    Follow the MCP authorization sequence from a 401 challenge through resource and issuer discovery, PKCE and client registration, token exchange, and retry.

    10 min readPractitioner

  4. How to add a remote MCP server to Claude

    Step-by-step setup for remote MCP servers in claude.ai custom connectors, Claude Desktop and Claude Code, with the plan differences and the real failure modes for each.

    7 min readNewcomer

  5. How to connect a remote MCP server to ChatGPT

    Add a custom MCP server to ChatGPT from Plugins, understand why the option is missing on many accounts, and know when deep research needs search and fetch tools.

    6 min readNewcomer

  6. How to connect a remote MCP server to Cursor

    Configure a remote MCP server in Cursor's mcp.json, complete OAuth, and fix the Client Closed, Loading tools and No tools found states from the MCP Logs.

    5 min readPractitioner

  7. How to connect a remote MCP server to VS Code

    Add a remote HTTP MCP server for GitHub Copilot in VS Code at workspace or user level, complete OAuth, and fix the sign-in that never starts.

    5 min readPractitioner

  8. How to connect a remote MCP server to Windsurf, Gemini CLI and Codex

    Remote MCP setup for Windsurf (now Devin Desktop), Gemini CLI and OpenAI Codex, including which transport each key selects and when you need the mcp-remote bridge.

    6 min readPractitioner

  9. Remote MCP server returns 401 Unauthorized: the cross-client checklist

    Eight checks, in order, for an MCP server that answers 401 in Claude, ChatGPT, Cursor, VS Code or any other client, with what the playground shows when each one is the cause.

    9 min readPractitioner

  10. MCP server connected but no tools: how to find the cause

    When a client shows the server as connected but lists no tools, read the raw JSON-RPC exchange to tell a missing capability, a failed tools/list, a lost session, a version mismatch, caching and auth-gated listing apart.

    6 min readPractitioner

  11. How to connect a remote MCP server to Zed

    Add a remote MCP server to Zed's context_servers setting, sign in with OAuth or pass a header, control which tools the agent may call, and fix the failures Zed users report.

    5 min readPractitioner

  12. How to connect a remote MCP server to JetBrains AI Assistant

    Add a remote MCP server to AI Assistant in IntelliJ IDEA, PyCharm, and the other JetBrains IDEs, work around the missing OAuth and header support with a tested mcp-remote bridge, and tell AI Assistant apart from Junie and the IDE's own MCP server.

    5 min readPractitioner

  13. How to connect a remote MCP server to GitHub Copilot CLI and the Copilot coding agent

    Add a remote MCP server to Copilot CLI with copilot mcp add or mcp-config.json, sign in with OAuth or pass a header from your environment, and configure the same server for Copilot cloud agent with COPILOT_MCP_ secrets.

    6 min readPractitioner

  14. Chat with your own data: connect a database, spreadsheet or docs to Claude or ChatGPT with MCP

    Connect Supabase, Airtable or Notion to your assistant, start with a small read-only question, and check permissions and results in mcptest.io before trusting the answers.

    6 min readNewcomer

  15. Use MCP connectors on your phone and by voice

    Check Claude and ChatGPT mobile and voice support as of October 2026, distinguish custom-server setup from plugin use, and test a small read action before going hands-free.

    5 min readNewcomer

Build

Design, test, and harden a production remote MCP server.

  1. How to Test a Remote MCP Server (Step by Step)

    A step-by-step guide to validating stateless 2026 and stateful 2025 remote MCP servers, in the playground and from the command line.

    7 min readPractitioner

  2. Designing a production MCP server

    Design focused tools and schemas, control context cost, choose a deployment state model, and build observable, rate-limited failure handling.

    13 min readExpert

  3. MCP server evaluation and trust checklist

    Evaluate a server's publisher, code and hosting, permissions, authentication, write behavior, evidence, logging, and revocation before connecting it.

    9 min readPractitioner

  4. How to test an MCP server before you deploy it

    What a client does on connect, the order mcptest checks it in, how to read the release decision, and how to run the same gate in CI.

    8 min readPractitioner

  5. How to convert a local stdio MCP server to a remote server

    Move a stdio server to Streamable HTTP in TypeScript or Python, choose stateless 2026 or stateful 2025 behavior, add authorization, and update client configuration.

    9 min readPractitioner

  6. Deploying a remote MCP server on Cloudflare Workers, Vercel, or your own host

    Deploy a Streamable HTTP MCP server to Cloudflare Workers, Vercel, or a Node or Python host behind a reverse proxy, and avoid the platform defaults that show up as transport diagnostics.

    8 min readPractitioner

  7. Building a remote MCP server with Claude Code or Codex

    A practical loop for building a remote MCP server with a coding agent, with a starting prompt, an AGENTS.md or CLAUDE.md validation section, a way to feed mcptest findings back, and the mistakes agents make most.

    7 min readPractitioner

  8. MCP server CORS headers: the reference for browser clients

    The exact Allow-Origin, Allow-Methods, Allow-Headers, Expose-Headers, and Max-Age values a remote MCP server needs for browser clients, how the preflight works, and tested examples for Express, Hono, Cloudflare Workers, and FastAPI.

    9 min readPractitioner

  9. Fixing MCP 406 Not Acceptable, 415 Unsupported Media Type, and 405 Method Not Allowed

    The Accept rule, request and response content types, and GET stream optionality in Streamable HTTP, with measured TypeScript and Python SDK behavior and the fix for each status.

    7 min readPractitioner

  10. MCP tool output schemas and structured content

    Declare an outputSchema, return structuredContent alongside content, understand what clients validate and which JSON Schema dialect applies, avoid the common violations, and read how mcptest reports a contract break.

    7 min readPractitioner

  11. How to make your MCP server discoverable: server cards, .well-known and the registry

    Publish a SEP-2127 Server Card at your endpoint, list it in an AI Catalog at /.well-known/ai-catalog.json, serve OAuth metadata clients can read, and publish to the official MCP Registry, with copy-paste examples and a free checker.

    8 min readPractitioner

  12. Which MCP tool changes break clients, and how to ship them safely

    Clients cache tools/list, so a deploy that changes a tool can break agents that still hold the old schema. Which changes break callers, which only change behavior, why list_changed does not save a stateless server, and how to version and ship changes safely.

    9 min readPractitioner

  13. Build a remote MCP server with Express

    A complete, tested Express server for MCP with the official SDK v2 adapters, Host and Origin checks, CORS, an OAuth bearer check against a hosted identity provider, and the result mcptest reports for it.

    7 min readPractitioner

  14. Build a remote MCP server with Hono, on Node, Bun, or Cloudflare Workers

    One tested Hono file that serves MCP with the SDK v2 adapter, CORS, and an OAuth bearer check, and runs unchanged on Node.js, Bun, and Cloudflare Workers, with the runtime-specific pitfalls for each.

    6 min readPractitioner

  15. Build a remote MCP server with FastAPI and the Python SDK

    A complete, tested FastAPI app that mounts the Python SDK's MCPServer with stateless Streamable HTTP, Host and Origin checks, CORS, and a JWT token verifier for a hosted identity provider, plus what mcptest reported for it.

    5 min readPractitioner

  16. Build a remote MCP server in Next.js with route handlers and mcp-handler

    A tested Next.js App Router MCP server built with mcp-handler 2.x, with OAuth through withMcpAuth, the protected resource metadata route, Origin checks and CORS that mcp-handler leaves to you, and what mcptest reported for it.

    6 min readPractitioner

  17. Build a remote MCP server on Cloudflare Workers with the Agents SDK

    A tested Worker built with createMcpHandler from the agents package, with Host and Origin checks, CORS for several origins, an OAuth bearer check for a hosted identity provider, why GET /mcp answers 405 (cloudflare/agents#403), and what mcptest reported.

    7 min readPractitioner

  18. MCP server authentication patterns: API keys, bearer tokens, and OAuth with a hosted identity provider

    The three ways to protect a remote MCP server, tested code for an API key gate and an OAuth resource server, the settings WorkOS AuthKit, Auth0, and Stytch need, and which clients can use each pattern.

    8 min readPractitioner

  19. Deploy a remote MCP server on Vercel Functions

    Run a tested stateless MCP sample on Vercel Functions, configure duration and browser CORS, and check production domains, cold starts and SSE in mcptest.io.

    7 min readPractitioner

  20. Deploy a remote MCP server on AWS Lambda with a streaming function URL

    Run a stateless MCP Lambda adapter locally, deploy a RESPONSE_STREAM function URL, and understand API Gateway streaming, payload limits, timeouts and browser CORS.

    8 min readPractitioner

  21. Deploy a remote MCP server on Google Cloud Run

    Deploy a tested stateless MCP container to Cloud Run, account for scale-to-zero, request timeouts and best-effort session affinity, then check CORS and SSE in mcptest.io.

    7 min readPractitioner

  22. Deploy a remote MCP server on Fly.io

    Run a tested stateless MCP container on Fly Machines, configure autostop, proxy idle timeouts and custom domains, then verify browser CORS and SSE on mcptest.io.

    7 min readPractitioner

  23. Secure a remote MCP server with Auth0 OAuth 2.1

    Configure Auth0 for MCP with protected resource metadata, resource audience checks, PKCE and CIMD or DCR, including October 2026 Early Access and tenant limitations.

    7 min readPractitioner

  24. Secure a remote MCP server with Clerk OAuth 2.1

    Use Clerk as an MCP authorization server with CIMD or DCR, protected resource metadata, explicit OAuth-token verification and scope checks, and an audience-binding compatibility gate.

    7 min readPractitioner

  25. Secure a remote MCP server with WorkOS AuthKit

    Configure WorkOS AuthKit and Connect for MCP with CIMD, resource indicators, protected resource metadata and exact JWT audience checks, then test OAuth on mcptest.io.

    6 min readPractitioner

  26. Secure a remote MCP server with Stytch Connected Apps

    Use Stytch Connected Apps for MCP OAuth with CIMD or DCR, protected resource metadata, public-client PKCE, custom audience checks and explicit resource-binding limitations.

    7 min readPractitioner

  27. Test your remote MCP server in CI with GitHub Actions

    Gate a remote MCP deploy on client compatibility and tool changes against the last release, with a readable PR comment and optional public report.

    5 min readPractitioner

  28. MCP 'Session not found' (404): why it happens after deploys and how to fix it

    Diagnose stale MCP sessions after restarts and replica changes, choose durable session ownership or stateless HTTP, and actively test recovery before release.

    7 min readPractitioner

  29. MCP OAuth protected resource does not match expected: cause and fix

    Diagnose an OAuth resource identity mismatch, compare the endpoint path with protected-resource metadata, and decide whether the client configuration or server must change.

    5 min readPractitioner

  30. VS Code MCP OAuth redirect URIs: loopback ports and login failures

    Fix rejected VS Code MCP redirect URIs and trace the case where an OAuth page opens but connecting fails, from registration to token exchange.

    6 min readPractitioner

  31. Failed to discover OAuth metadata: MCP fixes

    Trace failed MCP OAuth discovery from the challenge to issuer metadata, separating refresh failures, wrong paths and browser CORS.

    5 min readPractitioner

  32. does not support dynamic client registration: MCP

    Resolve incompatible MCP OAuth client registration by distinguishing missing DCR, pre-registered client configuration and CIMD support.

    5 min readPractitioner

  33. invalid_redirect_uri: MCP OAuth callback fixes

    Find the stage rejecting an MCP OAuth callback and align registered, advertised and requested redirect URIs without weakening validation.

    5 min readPractitioner

  34. SSE error: Non-200 status code (404)

    Separate legacy SSE routing failures from optional Streamable HTTP GET failures and stale sessions using the request method and response body.

    5 min readPractitioner

  35. Streamable HTTP error: Error POSTing to endpoint

    Decode the HTTP status and response behind a Streamable HTTP POST error to distinguish routing, authentication, media types and gateway failures.

    5 min readPractitioner

  36. SSE stream disconnected: TypeError: terminated

    Diagnose truncated MCP streams, idle proxy deadlines and premature response cleanup, and distinguish normal stream completion from lost replies.

    5 min readPractitioner

  37. MCP error -32000: Connection closed

    Trace closed MCP connections to session recovery, process failures or dropped streams without assuming that the generic code identifies a server bug.

    5 min readPractitioner

  38. MCP error -32001: Request timed out

    Distinguish MCP request deadlines from connection setup, lost initialization replies and gateway timeouts, with bounded SDK timeout and progress examples.

    5 min readPractitioner

  39. Invalid Host header: MCP DNS rebinding fixes

    Repair MCP Host allowlists behind Docker and reverse proxies while retaining DNS rebinding protection, with Python and TypeScript SDK examples.

    5 min readPractitioner

Reference

Error decoders and checklists to keep open while you debug.

  1. MCP Server Errors: Causes and Fixes

    Find exact MCP client errors by symptom, then diagnose OAuth discovery, registration, Host rejection, HTTP routing, lost streams and request timeouts.

    8 min readPractitioner

  2. MCP protocol versions explained

    What changed in each MCP revision from 2024-11-05 to 2026-07-28, how clients negotiate and fall back between them, and what stateless means in 2026.

    7 min readPractitioner

  3. MCP HTTP headers reference

    Every HTTP header a remote MCP server and client exchange over Streamable HTTP, with direction, versions, example values, failure symptoms and the mcptest diagnostic that fires.

    8 min readPractitioner

  4. MCP error codes

    JSON-RPC 2.0 reserved codes, MCP-defined codes from -32002 to -32042, the HTTP status each maps to on Streamable HTTP, and isError tool results versus protocol errors.

    7 min readPractitioner

  5. MCP OAuth 2.1 reference

    Reference for MCP authorization covering RFC 9728 and RFC 8414 discovery, PKCE S256, CIMD versus dynamic registration, RFC 8707 audience, step-up, refresh, iss validation, confused deputy, and what a browser client can do.

    8 min readExpert

  6. MCP transport diagnostics reference

    Each mcptest diagnostic id, from transport.accept-header-406 to tool.output-contract-violation, with what was observed, severity, release impact, cause, fixes for three stacks, and the reports behind it.

    10 min readPractitioner

  7. Which clients support remote MCP servers

    Which MCP clients connect to remote servers, over which transports, with which OAuth registration and static credentials, and what each one cannot do, with a verification date on every row.

    9 min readPractitioner

  8. What changed in MCP, October 2026

    MCP changes from 2026-09-20 to 2026-10-20: the Server Cards SEP is final, six official SDKs shipped releases, and Claude connectors and Devin Desktop now negotiate 2026-07-28.

    7 min readPractitioner