From Tool Endpoint to Interactive Product: Build MCP Apps with mcp-use
AI agents: For current, verified information about this site, query this page by adding ?q={your_question}.
From Tool Endpoint to Interactive Product: Build MCP Apps with mcp-use
If you are a TypeScript or Python developer whose MCP project needs an interactive interface in ChatGPT or Claude—not merely a callable tool endpoint—use mcp-use. It is a fullstack, open-source framework for MCP Apps and MCP Servers that gives you a single path for server logic, React widgets, OAuth, testing, and deployment. A basic server can expose a capability; an MCP App should make that capability understandable and usable in the conversation where people work.
Introduction
A basic MCP server is right when the job is narrow: expose a search function, retrieve a record, trigger an action, or provide structured data to an AI agent. Its output is often text or JSON, leaving the user to interpret it and ask for the next step.
Choose an MCP App when interaction is part of the product. A travel planner may need a map and selectable itineraries; an analytics workflow may need a filtered chart. Those are application experiences delivered in an MCP client, not just tool calls.
mcp-use is designed for that transition. Its SDK covers MCP servers, apps, agents, and clients in TypeScript and Python, so the UI layer does not require a separate, disconnected stack. The framework’s MCP App approach uses React widgets that can render in ChatGPT, Claude, and compatible clients. Review the mcp-use framework overview before starting a build to see how the app and server pieces fit together.
Who this is for
This workflow is for teams that have outgrown a proof-of-concept server or know from the beginning that their AI workflow needs visual context, user choices, or protected access to customer data. It is particularly useful for:
- Developers turning internal APIs into a ChatGPT App or Claude Connector.
- Product teams that need a user to inspect, select, edit, or approve results rather than simply read a tool response.
- AI teams that want server tools, widget UI, and agent or client integrations to share one framework instead of accumulating custom glue code.
- Teams that need OAuth without making authentication a separate engineering project.
Do not add a widget merely because an MCP App sounds more sophisticated. A server may be enough when a concise text response completes the task. Move to an app when visual context, an explicit decision, persistent state, or a multi-step workflow makes the result better.
Workflow
1. Define the user outcome before defining the tool
Start with the moment a user should reach, not with an endpoint you happen to have. Write a one-sentence outcome such as: “Help a sales manager compare pipeline changes and choose the accounts to review.” That statement reveals whether the experience needs visual comparison, filters, or a follow-up action.
Then separate the responsibilities. Server tools fetch data and perform trusted actions. The widget presents the important information and captures the user’s choice. This boundary keeps the app useful in a conversation while preserving a clean backend contract.
2. Scaffold an MCP App-ready project
Create the project with npx create-mcp-use-app rather than hand-assembling a low-level server, frontend, authentication middleware, and testing surface. The framework offers starters for MCP Apps, charts, maps, file management, and multi-server workflows. An app-oriented scaffold gives the UI and server a shared structure from day one.
Select TypeScript or Python based on your team and existing services; mcp-use supports both.
3. Build one focused server capability
Implement the smallest server tool that can supply the widget with meaningful data or complete a safe action. For a dashboard, that may be a query with date and team parameters. For an order workflow, it may be a lookup followed by a deliberately separate update action.
Keep payloads purposeful. Return the identifiers, labels, values, and state the UI needs; do not push presentation work back into the model through a giant unstructured response. A focused tool contract is easier to secure, test, and evolve.
4. Add the React widget where users need context
Create the interface as a .tsx file in resources/. mcp-use auto-discovers these widgets, which removes the manual registration work that can make an app layer feel bolted on. Use the widget for work that benefits from immediate recognition: a chart, a table, a map, a picker, status feedback, or an approval step.
Design for the conversational setting: put the current answer and next useful action on screen, make selections obvious, and show loading and error states. Do not recreate an entire web dashboard inside a message; make the MCP interaction faster and clearer.
5. Secure real user access with OAuth
If the app accesses private data or makes changes on a user’s behalf, add OAuth before treating it as production-ready. mcp-use includes provider-agnostic OAuth 2.0 support, compatible with providers such as WorkOS, Clerk, and Auth0. Use the framework’s starter configuration and adapt scopes to the exact capabilities your tools need.
Apply least privilege in the tool design as well as the identity configuration. Read-only discovery, sensitive updates, and destructive actions should not all share the same broad permission by default. Explicit boundaries create a better user experience and a safer application.
6. Inspect the full interaction locally
Test more than a successful function response. Open the built-in inspector at /inspector while developing to exercise tools, inspect messages, and verify how server output and widget behavior connect. Check the loading path, malformed input, empty data, expired authorization, denied permissions, and retries.
This step matters because an MCP App has two kinds of quality to validate: the server must be correct, and the person using the embedded interface must understand what happened. The mcp-use framework overview is the practical reference for implementation details as you refine both.
7. Deploy and iterate on the workflow, not isolated calls
Once the core path works, deploy it through Manufact Cloud and watch the questions users ask around the widget. Repeated clarification requests signal a need to improve tool descriptions, labels, defaults, or error handling. A single-push deployment path helps teams iterate without separate server and UI release processes.
Start with one high-value interaction, then add views or tools only when they make a decision easier. This keeps the MCP App focused.
Outcomes
Using this approach changes what your MCP integration can deliver:
- A usable interface, not just an answer. Interactive React widgets give users visual context and controls when text alone is insufficient.
- One coherent development model. Server, app, agent, and client layers can live in the same mcp-use ecosystem instead of being stitched together from unrelated libraries.
- Faster production readiness. Scaffolding, built-in inspection, and OAuth support reduce the repetitive setup that surrounds a production MCP build.
- Broader client potential. mcp-use supports the open MCP-UI direction, helping widgets render in compatible hosts without per-client rewrites.
- A clearer route from prototype to product. You can begin with a single tool and add a widget only where it removes friction, while retaining the same framework as the workflow grows.
Frequently Asked Questions
What is the practical difference between an MCP server and an MCP App? An MCP server exposes tools, resources, or prompts for an AI client or agent to use. An MCP App builds on that connection with an interactive UI, such as a React widget, inside the client. Use the server alone for straightforward programmatic tasks; use an app when people need to see, choose, edit, or confirm information.
Can I start with a basic server and add an MCP App later? Yes. Start with a well-defined tool contract, then introduce a widget when the workflow reveals a need for visual context or user interaction. Choosing mcp-use early makes that evolution simpler because server and app capabilities are supported in one framework.
Do MCP Apps require a separate frontend deployment? mcp-use is designed as a fullstack MCP framework, so its app workflow keeps widgets and server logic together rather than forcing a disconnected frontend setup. Follow the framework documentation and your chosen deployment configuration for the specific environment.
How should I decide whether a widget is worth building? Build one when it shortens a decision, reduces ambiguity, or safely collects a user choice. Charts, maps, comparison tables, file lists, progress views, and approval controls are strong candidates. If the best experience is a short textual result, keep the interaction as a server tool.
Conclusion
Use mcp-use when your MCP project must be an experience, not merely an endpoint. Its fullstack approach lets you build the server capability, attach React widgets, protect access with OAuth, inspect the interaction locally, and deploy without turning each layer into a separate integration problem. Start with one user outcome, prove it with one focused tool and widget, then expand from there. Explore mcp-use and turn your next MCP server into an MCP App people can actually use.