Skip to main content
Metabind lets your agent answer with your own UI components instead of text: in Claude, ChatGPT, and every MCP host, and natively in your iOS, Android, and web apps. Each component is written once in BindJS and validated before it renders. This guide walks you through building and publishing your first MCP App end to end. You won’t write any code in this tutorial. You’ll start from Oak & Ivory, a complete retail sample, connect it to Claude, and watch its product cards render inline in a conversation. The same MCP App also works in ChatGPT and any other MCP-compatible host.
Just want to see interactive answers first, with no account? Try the public Metabind connector in Claude or ChatGPT.

What you’ll build

The Oak & Ivory sample is a retail MCP App for an interior-design brand. It includes:
  • 8 Interactive Tools that render UI: product_detail, product_carousel, product_groupings, product_comparison, product_recommendation, product_specs, product_card_stack, and interior_designer.
  • 4 Data Tools that fetch data: product_search (semantic search over the Oak & Ivory catalog), product_lookup, inspiration_search, and openai_image_generator.
  • Server instructions that tell the model how and when to use each tool. For example: “If the user wants to see a single product, use product_detail. If the user wants to compare products, use product_comparison.”
When you ask Claude something like “Show me a coffee table from Oak & Ivory”, the model calls product_search to fetch matching items, then usually calls product_detail to render one inline. Metabind validates the model’s response against the tool’s schema, and Claude draws the product card in its sandboxed frame in the chat.

Prerequisites

  • A Metabind account. Create one if you haven’t yet.
  • A Claude account that can add custom connectors, on claude.ai or in the Claude desktop app. Claude’s Free plan allows one custom connector.
You don’t need to install any SDK or write any code for this tutorial.

Step 1: Create a project from the Oak & Ivory sample

1

Sign in

Open www.metabind.ai and sign in.
2

Create a new project

From the project picker, choose New project. The sample picker offers a blank starter and Oak & Ivory. Pick Oak & Ivory.The new-project sample picker, with a Blank starter on the left and the Oak & Ivory retail sample on the right
3

Open the project

The project loads with all eight Interactive Tools, all four Data Tools, the component package, and the server instructions already configured.Metabind Studio Server tab for the Oak & Ivory starter project
The left sidebar groups everything by what it does:
  • Server: the project’s metadata, server instructions, and MCP server URLs.
  • Gallery: a live preview gallery of the project’s tools.
  • Playground: a chat for testing the project’s tools.
  • Analytics: tool-call counts and execution history.
  • UI Tools: Interactive Tools, the ones that render UI when the AI calls them.
  • Data Tools: handlers that fetch data. They run in V8 sandboxes with secrets injected at runtime.
  • Components: the BindJS source for everything the tools render.
The main pane shows the project’s name, description, website URL, and the Instructions block. These are the MCP server instructions: every host receives them when it connects, and hosts that read them pass them to the model as guidance for how to use the tools. They’re how a project tells the model “call product_detail when the user wants to see a single product, and always serve it up with a video if there is one.”

Step 2: Test a tool inline

Before connecting Claude, run a tool from inside Metabind Studio to see what the AI will see.
1

Open product_detail

In the UI Tools sidebar, click product_detail. The center pane shows the rendered preview; the right pane is the test panel.
2

Fill the test inputs

Enter values for Title, Price, Button Label, Description, and the other inputs. The defaults from the preview already produce a reasonable lounge chair.
3

Run

Click Run. The platform validates your input against the tool’s schema, compiles the BindJS to a renderable bundle, and displays the result.Testing the product_detail Interactive Tool inside Metabind Studio
This is the same code path that runs when an AI calls the tool from Claude. Schema-validated rendering is the production safety net: the AI can’t inject components you didn’t approve, and a malformed input never reaches the renderer.

Step 3: Inspect the BindJS source (optional)

Skip this step if you want to keep moving. It’s worth a glance, though, because every Interactive Tool in Oak & Ivory is a BindJS component you can read and edit directly in Metabind Studio.
1

Switch to the Components tab

Click Components in the top navigation. The sidebar lists every component the project ships, including ProductDetail, ProductCarousel, ProductSearch, and shared primitives like BrandBackground and ColorInfo.
2

Open ProductDetail

Click ProductDetail. The code editor shows the BindJS source; the right pane shows live previews driven by the previews array at the bottom of the file.ProductDetail component shown in the BindJS editor with a live preview
BindJS is the open component language for agent UI, with a SwiftUI-inspired API. A single component definition compiles to React in MCP hosts and to native SwiftUI or Jetpack Compose when embedded via the Assistant SDK, so what you see in this preview is what your customers will see in production.

Step 4: Connect to Claude using the draft URL

You don’t need to publish to test. Every project has a draft endpoint that exposes every tool for development, whether it’s published, modified, or unpublished. Point Claude at the draft URL first, and publish to production once it’s working.
1

Copy the draft URL

On the Server tab in Metabind Studio, switch the endpoint dropdown to Draft and copy the URL.The Server tab in Metabind Studio with the endpoint dropdown open and Draft selected, showing the project's draft URL
2

Add a custom connector in Claude

In Claude, open Customize → Connectors, click Add, and choose Add custom connector. Enter a Name, paste the draft URL into MCP server URL, and click Continue. Under Authentication, Claude selects Sign in now for the draft URL. Click Add.Claude's Add custom connector dialog with the Name and MCP server URL fields, open over the Customize → Connectors page
3

Authorize Claude

The draft endpoint always requires a Metabind login, so the new connector says you aren’t connected yet. Click Connect to open Metabind’s authorization page, sign in if you aren’t already, and click Authorize.Claude returns to the connector, now connected, and your project’s tools are available in your Claude conversations.
If authorization fails, confirm you’re signed in to Metabind with an account that’s a member of the project’s organization.

Step 5: Try it

In Claude, start a new conversation and try one of these:
  • “Show me a coffee table from Oak & Ivory.”
  • “I’m decorating a small living room. Recommend three accent pieces.”
  • “Compare the Heritage Walnut and Ivory Oak coffee tables.”
Claude calls product_search to find matching items, then calls an Interactive Tool to render the result, usually product_detail, product_carousel, or product_comparison. The rendered card appears inline in the conversation, not as a JSON dump. Behind the scenes, every render goes through schema validation against the tool’s input schema, and only components from the project’s published package can appear. That’s the governance baseline: the AI cannot inject components you didn’t approve, on any surface.

Step 6: Publish to production

When the draft is working the way you want, publish:
1

Click Publish Server

The button is at the bottom-left of the project sidebar. The pending-changes counter resets to zero.
2

Switch Claude to the production URL

In Customize → Connectors, add a custom connector with the Production URL from the Server tab. Under Authentication, Claude selects Sign in now for a private project or No sign-in for a public one.Claude’s Free plan allows one custom connector. If you’re on Free, remove the draft connector first.
3

Share the production URL

Give the production URL to anyone you want to share the MCP App with. They add it the same way. For a private project, they authorize with their own Metabind login and must be members of your organization. A public project needs no sign-in. See Connect to Claude.
The draft endpoint stays available for ongoing development. Editing a published tool puts it in modified status. The production endpoint keeps serving the last published version, while the draft endpoint shows the working copy. You can iterate without breaking what’s already live.

What you’ve built

In a few minutes you have:
  • A live MCP App on mcp.metabind.ai that any MCP host can connect to.
  • Eight Interactive Tools that render schema-validated interactive UI rather than text.
  • Four Data Tools that call your APIs through handlers in V8 isolates, with secrets injected at runtime.
  • A production endpoint and a draft endpoint, with publish-and-rollback already wired in.
The same MCP App definition is also ready to run inside your own iOS, Android, or web app through the Assistant SDK, rendered natively as SwiftUI and Jetpack Compose. A separate guide covers it.

Customize the components

Edit the Oak & Ivory components or write your own with BindJS.

Add a Data Tool

Wrap one of your own REST or GraphQL endpoints as an MCP tool.

Connect to other MCP hosts

Use the same MCP App in ChatGPT and any other MCP-compatible host.

Embed in your own app

Run your agent inside your iOS, Android, or web app, with the same tools.