Skip to content

Anthropic

Claude expands MCP Apps support with app tools and more

4 min read

Written by an AI model from the linked sources and checked against them by a second model. How we work

Image: techinformed.com

Anthropic on November 10 widened Claude’s support for the MCP Apps extension, the interactive UI an MCP server renders inside a conversation. Claude can now call tools that your app registers, and your app can load your own website in an iframe. The new capabilities are in public preview. If you publish a directory connector, entry points and embedded websites reach your users only under a Verified listing: people who install it from a Community listing get neither, even if both worked in your custom-connector tests.

Anthropic’s getting-started guide sets out what an app can now do in Claude, what each capability requires and how to test it. Anthropic says implementation details may change as it works with the MCP Apps community to standardize them.

What an app can do in Claude

  • Side panel and full screen: the app opens beside the conversation, or takes the whole screen when it needs more room.
  • Entry points: people open the app from the Artifacts page without asking Claude for it, and can pin it to the sidebar.
  • App tools: tools registered in the app’s UI let Claude change what the app shows, such as a list on screen or the selected rows.
  • Messages: the app sends Claude a message, for example when someone clicks a button that asks Claude for a plan.
  • Embedded websites: your product’s editor or dashboard loads in an <iframe> inside the app.
  • Downloads: the app saves a file to the user’s device.

Under the hood the host fetches the app’s UI resource, renders it in a sandboxed iframe and talks to it over JSON-RPC via postMessage, the MCP blog explains. The model stays in the loop and sees what users do, the blog says, so a click in the app no longer needs another prompt to reach Claude.

Check access before you build

Three conditions decide whether a capability reaches anyone. Organization access comes first: for the side panel, entry points and app tools, each capability’s own docs page has the steps to check whether your organization has it. App tools, entry points and embedded websites also need a connector backed by a remote server. And the Verified-listing rule applies to directory connectors only, which is why a custom connector can behave differently from the same server once it is listed.

Testing has a catch of its own. Claude Desktop runs the published example servers locally, so the examples will not show app tools, entry points or embedded websites. Anthropic’s advice is to test those with your own server added to Claude as a custom connector, exposed through a tunnel first if it runs on your machine. Embedded sites in a custom connector carry further conditions, listed on the page about where embedded sites load.

The examples are still the quickest way to see how an app looks and behaves: a customer-segmentation chart, a 3D globe built on CesiumJS, a ShaderToy-style GLSL renderer and an ABC sheet-music player, each added to claude_desktop_config.json. Their config entries run the server through npx, which fetches the latest published version every time, so Anthropic suggests pinning one, such as @modelcontextprotocol/server-map@2.0.1, for any entry you keep.

One codebase, several hosts

Because the app ships with your MCP server, it can run in any AI application that supports the extension, not only Claude; MCP Apps has been part of the protocol’s final spec since July 28. On the server, registering tools and resources with registerAppTool() and registerAppResource() generates each host’s metadata. In the app, calling App.connect() without a transport argument lets the SDK detect the host and pick the transport.

One field stays host-specific. Resource._meta.ui.domain is the sandbox origin the app is served from, and each host defines its own format. For Claude it is the first 32 hex characters of the SHA-256 of your server URL, followed by .claudemcpcontent.com. A wrong value shows up as Invalid ui.domain format or ui.domain mismatch, both covered on the Troubleshoot MCP Apps page.

Coming from the OpenAI Apps SDK

Apps built on the OpenAI Apps SDK have a migration reference for moving to the MCP Apps SDK. The MCP Apps skills, which work in any agent that supports the Agent Skills standard including Claude Code, can do the move too: ask the agent to “Migrate from OpenAI Apps SDK” or “Convert my OpenAI App to an MCP App”. The same plugin handles new work with “Create an MCP App” or “Add a UI to my MCP tool”.

If your tools already declare global entry points under the openai/ui key, the page on marking a tool as a global entry point lists what else each one needs before it works in Claude.

No comments yet. Be the first.

Join the conversation

Sign in to leave a comment. It appears after moderation.