---
title: "Discussion on \"MCP Apps: When AI Agents Hand You an Interface, Not Just Text\" | Hashnode"
description: "Discussion on \"MCP Apps: When AI Agents Hand You an Interface, Not Just Text\". A developer's guide to the official MCP extension for interactive UI, from the spec to a working Expense Approval Desk you can run in Claude."
url: "https://hashnode.com/posts/mcp-apps-when-ai-agents-hand-you-an-interface-not-just-text/6af701b74a54c6faf91a4d32"
---

[Feed](https://hashnode.com/feed) /

Discussion

# [MCP Apps: When AI Agents Hand You an Interface, Not Just Text](https://jdoshi2091.hashnode.dev/mcp-apps-when-ai-agents-hand-you-an-interface-not-just-text?utm_source=hashnode&utm_medium=feed)

A developer's guide to the official MCP extension for interactive UI, from the spec to a working Expense Approval Desk you can run in Claude.

1d ago · 40 min read · jdoshi2091.hashnode.dev  
Read the article

-   [#mcp](https://hashnode.com/tag/mcp)
-   [#mcp-server](https://hashnode.com/tag/mcp-server)
-   [#mcp-client](https://hashnode.com/tag/mcp-client)
-   [#mcp-host](https://hashnode.com/tag/mcp-host)
-   [#mcp-apps](https://hashnode.com/tag/mcp-apps)
-   [#model-context-protocol](https://hashnode.com/tag/model-context-protocol)
-   [#ai-agents](https://hashnode.com/tag/ai-agents)
-   [#claude](https://hashnode.com/tag/claude)
-   [#typescript](https://hashnode.com/tag/typescript)
-   [#automation](https://hashnode.com/tag/automation)
-   [#human-in-the-loop](https://hashnode.com/tag/human-in-the-loop)

## Written by

[Jeet Doshi](https://hashnode.com/@jdoshi)

@jdoshi · Bangalore, India

  
[View profile](https://hashnode.com/@jdoshi)

🚀 Technical Account Manager | Agentic Automation | AI Agents | Enterprise Automation Strategist

🚀 Helping enterprises transform operations through Agentic Automation using UiPath Agents, Maestro, and AI-powered orchestration capabilities. With 11+ years of experience across Intelligent Automation, Enterprise Application Development, and Cloud Technologies, I work closely with customers to drive: ✨ Platform Onboarding &amp; Adoption ✨ Automation Strategy &amp; Architecture ✨ Agentic Workflow Design ✨ AI-Driven Process Orchestration ✨ Enterprise Automation Scaling ✨ Customer Success &amp; Technical Enablement 💡 Passionate about bridging the gap between business processes and AI-powered automation to help organizations evolve from traditional RPA to autonomous enterprise workflows. 🔹 Expertise Includes: • UiPath Automation Platform • UiPath Maestro &amp; AI Agents • Agentic Automation Strategy • RPA Solution Design &amp; Implementation • Azure Cloud Platform &amp; Azure DevOps • Agile Methodologies &amp; DevOps Practices • Technical Consulting &amp; Training • SOLID Design Principles &amp; Scalable Architecture 👨‍💻 Previously worked as a seasoned .NET Developer and RPA Developer with hands-on experience in building enterprise-grade applications and automation solutions from scratch using Microsoft technologies and cloud-native architectures. 📌 Actively exploring and sharing insights on: • AI &amp;Agentic workflows • Enterprises agent orchestration • Prompt Engineering • Developer Tooling • Intelligent Workflows • Enterprise AI Adoption

## Responses 1

Markdown supported · ⌘↵ to post

[Tarun Sharma](https://hashnode.com/@101beardo)

[21h ago](https://hashnode.com/posts/mcp-apps-when-ai-agents-hand-you-an-interface-not-just-text/6af701b74a54c6faf91a4d32/comment/6af72e5d6de7ba9a52434e06)

Making decide\_expense app-only is the part I liked most. One small catch in the View code: decide() wraps both the server call and shareContextWithModel in the same try. If updateModelContext throws after the decision is already saved, the user sees Could not reach the server, may click again, and then gets an already decided error. Giving the context update its own catch avoids that misleading message.
