Skip to main content
An MCP App is interactive UI that your MCP server renders inside a Claude conversation, such as an interactive chart or map. You build one with the MCP Apps SDK as part of your own MCP server. This page is for developers who have an MCP server, or are building one, and want it to show UI in Claude.
These cases are covered on other pages:
Start at the section that matches where you are:

What an MCP App can do in Claude

  • Side panel and full screen: show your app beside the conversation or full screen when it needs more room than the conversation gives it
  • Entry points: let people open your app from the Artifacts page in Claude, without asking Claude for the app, and let them pin it to the sidebar
  • App tools: register tools in your app’s UI so that Claude can change what your app shows, such as a list on screen or the selected rows
  • Messages: send Claude a message from your app, such as when someone clicks a button in your app that asks Claude for a plan
  • Embedded websites: load your own website in an <iframe> inside your app, such as your product’s editor or dashboard
  • Downloads: save a file from your app to the user’s device

Check what a capability requires

Check requirements such as these before you build:
  • Organization access: before you build on a capability such as the side panel, entry points, or app tools, check whether your organization has access by following the steps on that capability’s page
  • Remote server: app tools, entry points, and embedded websites need a connector that’s backed by a remote server
  • Verified listing: for a directory connector, entry points and embedded websites are available only under a Verified listing.
    • People who install your connector from a Community listing don’t get either one, even if both worked while you tested with a custom connector.
    • To compare a directory connector with a custom connector, see Directory connectors vs custom connectors.
Claude Desktop runs the example servers as local servers, so test app tools, entry points, and embedded websites with your own server. Add your server to Claude as a custom connector, and expose it through a tunnel first if it runs on your machine. For the conditions on embedded websites in a custom connector, see Where embedded sites load.

Try an example MCP App in Claude Desktop

The MCP Apps repository publishes example servers that you run locally with npx and connect to Claude Desktop through its configuration file.

Connect an example server

1

Install Claude Desktop

Install Claude Desktop and sign in.
2

Open the configuration file

Go to Settings > Developer and click Edit Config.
3

Add an example server

Add one of these example servers to your claude_desktop_config.json:The MCP Apps repository has more examples, each with a ready-to-use config snippet. The config entry for each example in the table runs its server with npx, which fetches the latest published version each time. Pin a version, such as @modelcontextprotocol/server-map@2.0.1, if you keep an entry beyond trying it out:
4

Save and restart

Save the file and restart the desktop app to connect the server.

Ask Claude to use the app

Once the server is connected, prompt Claude to use it. For example, with the customer segmentation server connected, ask Claude to show you recent customer data. Claude asks for permission to display the app. Click Allow once, or Always allow for a server you trust, and the MCP App renders inline in the conversation. If the permission setting in the message box is Auto, Claude can display the app without asking. If the tool runs but no app appears, Troubleshoot MCP Apps lists what to check.

Build your own MCP App

To test a server on your machine as a custom connector in Claude, see Test a local server.

Register tools and resources once for every host

An MCP App can run in Claude and in other hosts that support MCP Apps from one codebase.
  • On the server: register your tools and resources with registerAppTool() and registerAppResource(), which generate each host’s metadata for you
  • In the app: call App.connect() without a transport argument, and the SDK detects the host and picks the transport

Set ui.domain for Claude

Each host defines its own format for the Resource._meta.ui.domain field, the sandbox origin your app is served from. For Claude, the value is the first 32 hex characters of the SHA-256 of your server URL, followed by .claudemcpcontent.com. Compute it with this command, replacing https://example.com/mcp with your server URL:
For https://example.com/mcp, the command prints:
If Claude reports Invalid ui.domain format or ui.domain mismatch, see Troubleshoot MCP Apps.

Build with an AI coding agent

If you use an AI coding agent, the MCP Apps skills guide it through MCP App development. They work in any agent that supports the Agent Skills standard, including Claude Code. In Claude Code, install the MCP Apps skills plugin with these commands:
Once the MCP Apps skills plugin is installed, ask your agent to “Create an MCP App” or “Add a UI to my MCP tool”.

Migrate from the OpenAI Apps SDK

If you have an existing app built on the OpenAI Apps SDK, follow the migration reference to move it to the MCP Apps SDK. The MCP Apps skills can also do the migration: ask your agent to “Migrate from OpenAI Apps SDK” or “Convert my OpenAI App to an MCP App”. If your tools already declare global entry points under the openai/ui key, check what else each tool needs in Claude in Mark a tool as a global entry point.

Send feedback on MCP Apps

To report a problem or suggest a change to MCP Apps, email mcp-apps@anthropic.com or open an issue on the ext-apps repository.

Next steps