Skip to main content
An MCP server gives Claude access to your product or data, and people who use Claude see it as a connector. It’s the piece of your plugin that reaches your product: the plugin’s .mcp.json points at the server you build and host, and any skills you include teach Claude how to use it. Claude connects to your server from claude.ai, Claude Desktop, Claude mobile, Cowork, and Claude Code, and the same connector infrastructure backs all of them. This page is for developers building a remote MCP server for other people to use in Claude. It covers the decisions you make as you build, in the order you meet them, and what Claude’s MCP client supports for each one.

Plan your server

Claude implements a subset of the MCP specification, with its own callback URL and its own size and timeout limits.
To build with Claude’s help, install the official mcp-server-dev plugin in Claude Code. It walks you through building, testing, and packaging an MCP server interactively, using these docs as its reference.

Choose where the server runs

A remote server runs on infrastructure you host and is reachable over the internet. Claude connects to it from every Claude app, and a remote server is the recommended kind for a directory listing. A local server runs on the user’s computer. To package one for the Claude desktop app, see Build a desktop extension with MCPB. A transport is how Claude and your server exchange MCP messages. Use Streamable HTTP, which the MCP specification defines for remote servers. Claude also supports the legacy HTTP+SSE transport, which is being deprecated in favor of Streamable HTTP.

Choose how users authenticate

Decide on authentication before you write tool code. Claude’s OAuth client differs from the generic MCP specification in a few places. Your server can let Claude in with OAuth 2.0, where each user signs in with their own account; with a static credential that an organization Owner enters once and Claude sends as a request header; or with no authentication at all. Supported authentication types lists each type and which ones you contact Anthropic to use. If you use OAuth, check these parts of your setup against Claude’s client:
  • Specification version: Claude follows the 2025-03-26, 2025-06-18, and 2025-11-25 authorization specifications
  • Client registration: Claude can register itself with your authorization server through Dynamic Client Registration (DCR). If your server doesn’t support DCR, Register Claude as an OAuth client lists the other ways to give Claude a client identity
  • Redirect URI: allow https://claude.ai/api/mcp/auth_callback for the hosted surfaces and a loopback redirect for Claude Code, as Callback URLs describes
  • Token refresh: Claude refreshes access tokens when they expire. Token refresh has the requirements for your token endpoint
If you need one of these related flows, follow its page:
  • Lazy authentication: if some of your tools work without the user’s account, people can use those right away and sign in only when Claude reaches a tool that needs it
  • Enterprise Managed Auth: lets enterprise users connect through their organization’s SSO without a consent screen

Decide what the server exposes

Your server can expose these to Claude: Claude doesn’t yet support these MCP features, so don’t build a feature that depends on them:
  • Resource subscriptions
  • Sampling
  • Advanced or draft capabilities
If you plan to list the server in the directory, Design tools that pass review covers how to name, describe, and annotate tools.

Design within the size and timeout limits

Keep tool results and tool call durations within these limits. They differ between the hosted surfaces and Claude Code.

Decide whether to add interactive UI

An MCP App is interactive UI that your MCP server renders inside a Claude conversation, such as an interactive chart or map. It’s optional, and you build it as part of the same server. Get started with MCP Apps shows an example and how to build your own.

Test your server against Claude

You test against the real Claude client, not a staging environment. Test your connector covers adding the server to Claude as a custom connector, validating auth flows with the MCP Inspector, tunneling a local server, and preparing test credentials for review. To connect and debug from the Claude Code command line, see the Claude Code MCP quickstart.

Decide how people get your server

People add your server to Claude as a connector in one of these ways:
  • As a custom connector: a user or an organization Owner adds it by entering its URL, with no review by Anthropic
  • From the directory: Anthropic lists it in the directory after review, so people find it in Claude. Publish to the directory covers who can submit and what review involves
  • Inside a plugin: you bundle the server with the skills that teach Claude to use it, so people install both together. See Plugin structure and testing
Directory and custom connectors run on the same infrastructure. Directory connectors vs custom connectors compares the two and explains when to offer both. These resources cover the MCP protocol itself rather than Claude’s client:

Next steps

  • Authentication for connectors: pick an authentication type and meet Claude’s OAuth requirements
  • Test your connector: add your server as a custom connector and debug connection failures
  • Plugin structure and testing: bundle your connector with skills so people install both together
  • Publish to the directory: submit your connector for review so people find it in claude.ai on the web, the desktop and mobile apps, and Cowork. Anyone on a paid Claude plan can submit, and on Team and Enterprise an Owner submits