These cases are covered on other pages:
- Deciding whether your MCP server needs UI: see Decide what to include in your plugin
- Building the server first: see Build an MCP server for Claude
- Finding and using connectors that have an MCP App: see Use interactive connectors in Claude
- Scoping an app, or extending one that already renders in Claude: see what an MCP App can do in Claude, such as open in the side panel, embed your website, or give Claude tools to call
- New to MCP Apps: try an example in Claude Desktop to see how an MCP App looks and behaves
- Ready to build: build your own MCP App from a quickstart, an example implementation, or the MCP Apps skills for AI coding agents
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.
Try an example MCP App in Claude Desktop
The MCP Apps repository publishes example servers that you run locally withnpx 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
- Add an interactive UI to your MCP server: add a one-tool MCP App to the quickstart server on this site, in plain JavaScript with no build step
- MCP Apps Quickstart: step-by-step guide to building your first MCP App
- SDK API documentation: full API reference
- Example implementations: vanilla JS, React, Vue, Svelte, and more
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()andregisterAppResource(), 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:
https://example.com/mcp, the command prints:
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: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 theopenai/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
- Design guidelines: display modes, mobile layout, and style variables for an app that feels native to Claude
- Troubleshoot MCP Apps: developer tools and fixes for an app that doesn’t render
- Submit a connector: list your server and its MCP App screenshots in the directory
- Manage your listing after publishing: update a connector that’s already listed in the directory