my-mcp-app
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@my-mcp-apprun the hello world tool"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP App Template
Official starter for building MCP Apps on deco — interactive UIs powered by the Model Context Protocol.
Quick Start
# Clone the template
git clone https://github.com/decocms/mcp-app.git my-mcp-app
cd my-mcp-app
# Install dependencies
bun install
# Start development
bun run devRelated MCP server: TypeScript MCP Server Boilerplate
Project Structure
├── api/ # MCP server (platform-agnostic)
│ ├── app.ts # App core — tools, resources, middleware
│ ├── main.bun.ts # Bun entrypoint (local dev)
│ ├── tools/
│ │ ├── index.ts # Tool registry
│ │ └── hello.ts # Example tool (hello_world)
│ ├── resources/
│ │ └── hello.ts # MCP App resource (serves HTML)
│ └── types/
│ └── env.ts # StateSchema + Env type
├── web/ # React UI (MCP App)
│ ├── tools/ # One folder per tool UI (folder-based routing)
│ │ └── hello/ # hello_world tool UI
│ │ ├── main.tsx # React entry point
│ │ ├── bridge.ts # MCP App SDK integration
│ │ ├── context.tsx # React context for MCP state
│ │ ├── router.tsx # TanStack Router with UI
│ │ └── types.ts # UI state types
│ ├── entry.tsx # Build entry (imports @tool/main.tsx)
│ ├── components/ui/ # shadcn/ui components
│ ├── lib/utils.ts # cn() helper
│ └── globals.css # Tailwind base styles
├── index.html # Single Vite entry (shared by all tools)
├── package.json
├── tsconfig.json
├── biome.json
├── vite.config.ts
├── components.json # shadcn/ui config
├── app.json # Deco mesh config
└── .mcp.json # Local MCP server configDevelopment
# Run API server + web build concurrently
bun run dev
# API server only (port 3001)
bun run dev:api
# Web build only (watch mode)
bun run dev:webConnecting to deco Studio
To test your MCP App in deco Studio, expose your local server through a tunnel:
bun start
# Tunnel started -> 🌐 Preview: https://<your-id>.deco.hostThen connect in Studio using the MCP URL:
https://<your-id>.deco.host/api/mcpAdding a New Tool with UI
Each tool UI lives in web/tools/<name>/. The TOOL env var tells Vite which folder to build — one build per tool, output as dist/client/<name>.html.
Create the tool —
api/tools/my-tool.tsusingcreateToolRegister it — add to the
toolsarray inapi/tools/index.tsCreate the UI —
web/tools/my-tool/withmain.tsx,bridge.ts,context.tsx,router.tsx,types.tsCreate the resource —
api/resources/my-tool.tsservingdist/client/my-tool.htmlUpdate build scripts:
"build:web": "TOOL=hello vite build && TOOL=my-tool vite build", "dev:web": "concurrently \"TOOL=hello vite build --watch\" \"TOOL=my-tool vite build --watch\""
How the Tool Router Works
TOOL=hello vite build
→ resolves @tool/* → web/tools/hello/*
→ index.html imports web/entry.tsx imports @tool/main.tsx
→ outputs dist/client/hello.html (single-file bundle)Tech Stack
Runtime: Bun (default), deployable to any Web Standard runtime
Server: @decocms/runtime MCP server
UI: React 19 + TanStack Router (hash-based) + TanStack Query
Styling: Tailwind CSS v4 + shadcn/ui
MCP Apps: @modelcontextprotocol/ext-apps SDK
Build: Vite + vite-plugin-singlefile
Linting: Biome
How It Works
The app core (
api/app.ts) defines tools, resources, and middleware as a platform-agnosticfetchhandlerA platform entrypoint (
api/main.bun.ts) starts the server using the platform's APITools perform actions and can link to a UI via
_meta.ui.resourceUriResources serve single-file HTML bundles with
mimeType: "text/html;profile=mcp-app"The MCP App UI connects to the host via
@modelcontextprotocol/ext-apps, receives tool input/results, and renders an interactive displayVite builds each tool UI into a self-contained HTML file (CSS + JS inlined) using the
TOOLenv var to select whichweb/tools/<name>/folder to bundle
Deployment
Multi-Platform
The app uses a factory pattern that separates business logic (api/app.ts) from platform wiring. To deploy to a new platform, add a thin entrypoint file — see the add-deploy-target skill for step-by-step instructions.
Supported targets out of the box:
Bun —
api/main.bun.ts(default, used for local dev)
Easy to add:
Cloudflare Workers — ~5 lines +
wrangler.tomlDeno — ~5 lines
Node.js — ~5 lines +
@hono/node-serverAWS Lambda — ~5 lines +
hono/aws-lambda
Publish to deco
Update
app.jsonwith your app's name, description, and connection URLPush to your repository — CI will validate the build
Follow deco mesh publishing instructions to deploy
CI
GitHub Actions runs on every push and pull request:
bun run ci:check— Biome lint + format checkbun run check— TypeScript type checkingbun test— Unit testsbun run build— Production build
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceA starter template for creating Model Context Protocol servers that integrate with Claude Desktop and other MCP-compatible clients. Provides a configurable tool system, Docker support, and TypeScript-ready structure for building custom MCP servers.Last updated19MIT
- Flicense-qualityDmaintenanceA starter project designed to quickly build and deploy Model Context Protocol (MCP) servers using the TypeScript SDK and Zod for schema validation. It features example implementations for tools and resources, providing a solid foundation for custom MCP development and integration.Last updated
- Flicense-qualityDmaintenanceA starter template designed to jumpstart the development of Model Context Protocol (MCP) servers using TypeScript. It provides pre-configured examples for creating tools and resources, along with integration guides for MCP clients like Cursor.Last updated
- Alicense-quality-maintenanceA starter template for building Model Context Protocol (MCP) servers with Node.js. It provides a foundational structure and an example tool to help developers quickly scaffold and deploy new MCP capabilities.Last updated151
Related MCP Connectors
Build, deploy, and operate hosted web apps on VibeKit (vibekit.bot) from any MCP client.
Generate, edit, and deploy immersive 3D/WebGL web projects from any MCP assistant.
MCP (Model Context Protocol) server for Appwrite
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/gsbenevides2/my-mcp-app'
If you have feedback or need assistance with the MCP directory API, please join our Discord server