MCP server with an interactive dinosaur dashboard (MCP Apps UI). No API keys required.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
๐ก Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
A production-grade MCP server with interactive HTML dashboard UI โ written in Go, styled for delight.
dino-mcp is a reference implementation of the Model Context Protocol (MCP) in Go that demonstrates every layer of the modern MCP stack:
| Layer | Implementation | Why it matters |
|---|---|---|
| Transport | stdio + Streamable HTTP | Works in Claude Desktop AND web browsers |
| MCP Apps | @modelcontextprotocol/ext-apps App class | Interactive HTML UIs in Claude Desktop iframes |
| Tools | dino_think, dino_ask, dino_dashboard | Typed Go handlers, structured JSON results |
| Resources | //go:embed HTML โ text/html;profile=mcp-app | Self-contained ~11MB binary, zero deps at runtime |
Whether you're building an MCP server from scratch, learning the MCP Apps protocol, or need a Go โ Gin โ ext-apps SDK integration blueprint, this project has you covered.
Data flows through three pipes:
| Pipe | Protocol | Client | Use case |
|---|---|---|---|
| MCP Tools | JSON-RPC over stdio | Claude Desktop | Text tools (dino_think, dino_ask) |
| MCP Apps | JSON-RPC over stdio + postMessage | Claude Desktop iframe | Interactive UI (dino_dashboard) |
| Standalone | HTTP GET | Browser | Direct access (/dashboard, /api/dinosaurs) |
| Feature | Status | Notes |
|---|---|---|
Tools (tools/list, tools/call) | โ Complete | 3 typed tools with structured JSON responses |
Resources (resources/list, resources/read) | โ Complete | //go:embed HTML served at ui:// URIs |
| MCP Apps protocol | โ Complete | _meta.ui.resourceUri + ui/initialize handshake |
| stdio transport | โ | Claude Desktop, Cursor, Copilot |
| Streamable HTTP | โ | MCP Inspector, curl, browser, tunnel |
| SSE transport | โ Removed | Deprecated in MCP spec v2025-11-25 |
make build-fast && make dev-httpmake test exercises every protocol methodmake test-inspector launches MCP Inspectormake run-tunnel creates a public trycloudflare.com URLThe dino_dashboard tool renders an HTML card grid inside Claude Desktop's iframe:
http://localhost:9010/dashboardNote: the filter is applied server-side at the time the tool is called. Once opened with a specific filter, the in-app filter buttons can only narrow further within that same result set โ they can't widen back out to species the initial call excluded.
The HTML view is built with the official @modelcontextprotocol/ext-apps SDK and communicates via JSON-RPC over postMessage.
โ Claude detects the MCP App โ renders an iframe โ you see filterable dinosaur cards
โ Standalone HTML with all dinosaur data fetched from the built-in REST API
โ Opens http://localhost:5173 โ connects to http://localhost:9010/mcp
| Tool | Type | Input | Output | Example Prompt |
|---|---|---|---|---|
dino_think | Text | {} | Random fact + species JSON | "Tell me a dinosaur fact" |
dino_ask | Text | {"question": "..."} | Answer + question JSON | "What did T-Rex eat?" |
dino_dashboard | MCP App | {"filter": "Carnivore"} | HTML iframe + JSON data | "Show me carnivore dinosaurs" |
dino_askcurrently returns the same general dinosaur-era overview regardless of the question asked โ it doesn't yet branch on the question text. Tracked as a known limitation.
Example dino_think response:
Example dino_dashboard response:
Locate the binary and add to your claude_desktop_config.json:
No reviews yet โ be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/mcp-dino)<a href="https://allmcps.com/mcp/mcp-dino"><img src="https://allmcps.com/api/badge/mcp-dino?style=directory" alt="MCP Dino on AllMCPs" /></a>