MCP Apps Starter Kit
Provides interactive, React-based UI apps inside Claude Desktop for tracking workouts, planning trips, budgeting, comparing products, and making decisions with bidirectional communication.
README
MCP Apps Starter Kit
I built these 2 mini mcp apps for my own daily use inside Claude Desktop — tracking workouts, planning trips, budgeting, comparing products, and making decisions. They turned out to be genuinely useful, so I'm putting them out here for anyone to explore, remix, or use as a starting point for their own MCP Apps.
Each app renders as a real interactive UI right inside Claude's chat — not just text, but React components with charts, forms, progress tracking, and two-way communication with Claude. If you've ever wished Claude could show you something visual instead of just describing it, this is what that looks like.
Built with the MCP Apps SDK.
The 5 Apps
Workout Tracker
"Give me a 4-week strength training plan"
This is the app I've spent the most time on — it's the most feature-rich and thoroughly tested of the five. It demonstrates what's really possible with MCP Apps:
- Dark theme with a clean zinc + blue palette
- Expandable exercise cards with form cues, sets/reps, and muscle group indicators
- Progress tracking — check off exercises, log actual weights/reps, save to disk
- Persistent history — saved to
~/.claude-workout-log.json, with automatic dedup - Video references — auto-fetches YouTube form guides and opens them via
app.openLink() - Batch modifications — tweak multiple exercises, send all changes to Claude at once
- Bidirectional chat — the app talks back to Claude to modify plans, request videos, or regenerate
<!--
-->
Trip Planner
"I'm in Mumbai and want a 5-day vacation with a ₹50,000 budget — show me some options"
A two-phase trip planning experience. Phase 1 (Trip Explorer) shows 3-5 destination options side by side with:
- Distance + travel modes — km away, with flight/train/drive durations from your city
- Weather — expected temperature range and conditions
- Budget fit — color-coded against your budget (green/yellow/red)
- Adjustable sliders — change budget or trip duration, hit "Refresh options" to regenerate
- Multi-select — pick up to 2 destinations to compare detailed itineraries side by side
- Currency support — INR, USD, EUR, etc. with proper formatting
Phase 2 (Itinerary) renders a day-by-day plan where you can:
- Swap or remove individual activities with one tap
- Comment on any activity with specific feedback
- Adjust trip style — quick chips like "More relaxed", "Foodie focus", or type your own
- Queue changes and send them all to Claude at once to regenerate
<!--
-->
<!--
-->
The following 3 apps are work-in-progress — they render and are functional, but haven't been as heavily tested or polished. Feel free to try them out and iterate on them.
Budget Planner (WIP)
"Help me plan a $5K monthly budget"
Pie chart + bar chart breakdown of spending categories with surplus/deficit tracking. I use this whenever I want to sanity-check how I'm allocating money across categories.
<!--
-->
Product Comparison (WIP)
"Compare MacBook Air M3 vs ThinkPad X1 Carbon"
Side-by-side cards with pros/cons, star ratings, and a "Best Pick" badge. Great for any time you're weighing two or more options — laptops, tools, services, whatever.
<!--
-->
Decision Matrix (WIP)
"Help me decide between 3 apartments"
Weighted criteria table with heatmap-style scoring and automatic rankings. I use this for any multi-factor decision — it forces you to think about what actually matters.
<!--
-->
Screenshots
Coming soon — I'll add screenshots showing each app running inside Claude Desktop so you can see what these look like in practice before you install them.
To add your own screenshots:
- Take a screenshot of each app in Claude Desktop
- Save them in a
screenshots/folder - Uncomment the image lines in this README
Quick Start
# Clone
git clone https://github.com/rushildharhakim/mcp-apps-starter-kit.git
cd mcp-apps-starter-kit
# Install & build
npm install --legacy-peer-deps
npm run build
# Add to Claude Desktop
# Edit: ~/Library/Application Support/Claude/claude_desktop_config.json
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"starter-kit": {
"command": "node",
"args": ["/absolute/path/to/mcp-apps-starter-kit/dist/server.js"]
}
}
}
Restart Claude Desktop. Try any of the example prompts above.
How It Works
You type a prompt → Claude calls a render_* tool → MCP server returns structured data + UI
↓
Claude Desktop loads the HTML view
↓
React app renders in a sandboxed iframe
↓
You interact → app talks back to Claude
Each view is a self-contained React app bundled into a single HTML file via Vite + vite-plugin-singlefile. The MCP server registers both a tool (to receive structured data from Claude) and a resource (to serve the HTML view to Claude Desktop).
Key SDK Patterns
| API | What it does |
|---|---|
registerAppTool() |
Registers a tool that returns structuredContent + links to a UI resource |
registerAppResource() |
Serves the HTML view file to Claude Desktop |
useApp() + ontoolresult |
React hook to receive tool result data in the iframe |
app.callServerTool() |
Calls MCP server tools from the iframe (e.g., save workout log) |
app.sendMessage() |
Injects a message into Claude's conversation from the iframe |
app.openLink() |
Opens external URLs in the default browser (bypasses iframe sandbox) |
File Structure
mcp-apps-starter-kit/
src/
server.ts # MCP server — 6 tools + 6 resources + 2 utility tools
views/
shared/styles.ts # Inline style helpers
BudgetView.tsx # Pie + bar charts (Recharts)
ComparisonView.tsx # Side-by-side comparison grid
TripExplorerView.tsx # Destination comparison + selection (Phase 1)
TripPlannerView.tsx # Interactive day-by-day itinerary (Phase 2)
WorkoutPlanView.tsx # Interactive workout tracker
DecisionMatrixView.tsx # Weighted decision matrix + heatmap
*.html # Entry points for each view
package.json
tsconfig.json
vite.config.ts
Tech Stack
- MCP SDK:
@modelcontextprotocol/sdk+@modelcontextprotocol/ext-apps - React 19 with inline styles (no CSS framework needed in sandboxed iframes)
- Recharts for pie/bar/line charts
- Vite +
vite-plugin-singlefilefor bundling views into self-contained HTML - TypeScript for the server, JSX for views
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.