Terminology
A few MCP-App-specific terms used throughout this section:- Host: the AI client that embeds the model and runs your app (e.g., ChatGPT, Claude)
- MCP App: the unit you build; a server exposing tools, plus optional views
- MCP Server: the tool set exposed to models and views
- Tool: a function on the server that the model or a view can call
- View: a React component shipped bound to a tool and rendered inside the host
- Runtime: the host’s bridge between the server’s response, the model, and the view
- View Instance: one mounted occurrence of a view
- View State: state attached to a view instance
App Lifecycle
An MCP App moves through three phases: it’s mounted when a tool call brings the view into the conversation, it runs while the user interacts with that view, and it’s torn down when the conversation closes. Each phase changes who’s driving and what data flows where.App is Mounted
The user talks to the model, which calls a tool on your server. The server’s response includes:- a view reference that the host uses to mount the view inline with the conversation
- an output (text, structured content, media) shared with the model and fed to the view
The tool output shape lets you address each piece of data to a specific recipient: some fields can be sent only to the model, some only to the view, and some to both. Choosing the recipient is a design decision: it controls what context each actor sees.
App is Running
Once mounted, the view becomes the active surface where the user can trigger:- tool calls
- state mutations
The view can call the tools it’s bound to, or any other tool. Tool calls initiated from the view won’t mount views.
App Teardown
When the conversation is closed, every view instance unmounts. The next time it’s loaded, each one remounts with its own state restored.Hands On: Build a Personal Shopper
A shopping app driven by two tools:search-products and create-checkout. The user tells the model what they’re looking for; the model calls search-products once to surface a catalog in a carousel; from there the user picks items, and a view-side button hands off to create-checkout when they’re ready to pay.
What turns the model into a personal shopper is state. The view holds the cart and the currently displayed products. The model reads them to give context-aware advice in chat, pointing at items already on screen based on what’s been added.
Here’s how it plays out at runtime:
And the implementation:
Pair with the Skill
The Skybridge Skill is the best teacher for crafting excellent MCP App architecture. It knows the lifecycle, the data-flow patterns, and the design moves that actually work inside ChatGPT and Claude. Install it now:Go Further
Build
Learn everything that makes great MCP Apps
Test
Validate your app at every step
Ship
Deploy your app to a stable, public URL