An interactive workshop for SE interns to learn about Model Context Protocol (MCP) servers. Deploy a live dashboard app that can be controlled in real-time via MCP tools.
- ๐จ Interactive Dashboard - A beautiful dark-themed web app with real-time stats
- ๐ง MCP Server - A fully functional MCP server with 8 tools to control the dashboard
- ๐ก Real-time Connection - Watch the dashboard update live as you call MCP tools
- ๐ Dark-themed beautiful UI with Cloudflare branding
- ๐ Live statistics that update in real-time
- ๐๏ธ Feature toggles (Analytics, Notifications, Dark Mode, Animations)
- ๐ก Activity feed showing all MCP actions
- โก Server-Sent Events for instant updates
- ๐ ๏ธ 8 MCP Tools for controlling the dashboard
- ๐ No authentication required - perfect for learning
- ๐ Edge deployed - runs on Cloudflare's global network
- ๐ฆ KV storage for state management
Click the button above to deploy to your Cloudflare account:
The deploy process will:
- โ Clone the repo to your GitHub
- โ Create a KV namespace automatically
- โ
Deploy TWO workers:
mcp-demo-app(dashboard) andmcp-server(MCP tools) - โ Give you live URLs instantly
Important: The deployment creates two separate workers. Make sure both are deployed successfully!
If you prefer to deploy manually:
# Clone the repo
git clone https://github.com/MattDMitch/mcp-lab-workshop.git
cd mcp-lab-workshop
# Install dependencies
npm install
# Login to Cloudflare
npx wrangler login
# Run deploy script (creates KV namespace and deploys both workers)
npm run deployThis will deploy:
- โ
mcp-demo-app- The monitoring dashboard UI - โ
mcp-server- The MCP tools server
Once deployed, you'll get ONE worker with multiple endpoints:
- Dashboard:
https://YOUR-WORKER-NAME.YOUR-SUBDOMAIN.workers.dev/ - MCP Server:
https://YOUR-WORKER-NAME.YOUR-SUBDOMAIN.workers.dev/mcp
Both the dashboard and MCP server run in the same worker using path-based routing
Add the MCP server to your OpenCode or MCP client:
{
"mcpServers": {
"demo": {
"url": "https://REPO-NAME-mcp.YOUR-SUBDOMAIN.workers.dev"
}
}
}| Tool | Description | Example |
|---|---|---|
toggle_feature |
Toggle features on/off | Toggle dark mode |
update_stats |
Change dashboard numbers | Set visitors to 9999 |
set_message |
Update banner message | "Hello Interns! ๐" |
get_state |
View current app state | Get all settings |
reset_demo |
Reset to defaults | Clean slate |
simulate_traffic |
Generate fake activity | Simulate high traffic |
enable_all_features |
Turn on all features | Enable everything |
disable_all_features |
Turn off all features | Disable everything |
curl -X POST https://mcp-server.YOUR-SUBDOMAIN.workers.dev/mcp/tools/call \
-H "Content-Type: application/json" \
-d '{
"tool": "toggle_feature",
"arguments": {"feature": "darkMode"}
}'curl -X POST https://mcp-server.YOUR-SUBDOMAIN.workers.dev/mcp/tools/call \
-H "Content-Type: application/json" \
-d '{
"tool": "set_message",
"arguments": {"message": "Welcome SE Interns! ๐"}
}'curl -X POST https://mcp-server.YOUR-SUBDOMAIN.workers.dev/mcp/tools/call \
-H "Content-Type: application/json" \
-d '{
"tool": "simulate_traffic",
"arguments": {"amount": "high"}
}'curl -X POST https://mcp-server.YOUR-SUBDOMAIN.workers.dev/mcp/tools/call \
-H "Content-Type: application/json" \
-d '{
"tool": "update_stats",
"arguments": {"stat": "visitors", "value": 9999}
}'โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Demo App Worker โ
โ - Dark-themed dashboard โ
โ - Server-Sent Events โ
โ - Real-time updates โ
โโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโ
โ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Cloudflare KV Namespace โ
โ - App state storage โ
โ - Activity logs โ
โโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโ
โ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MCP Server Worker โ
โ - 8 MCP tools โ
โ - Tool execution โ
โ - State management โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- Click "Deploy to Cloudflare"
- Authorize GitHub and Cloudflare
- Get your live URLs
- Open the dashboard URL
- See the dark-themed interface
- Observe the stats and features
- Add MCP server to OpenCode
- List available tools
- Verify connection
- Toggle dark mode
- Update statistics
- Change the message
- Simulate traffic
- Watch real-time updates!
- Review MCP server implementation
- Understand tool schemas
- See KV storage in action
- Learn about SSE for real-time updates
After this workshop, you'll understand:
- โ What MCP is and why it's useful
- โ How to build an MCP server
- โ Tool schemas and execution
- โ Real-time web applications with SSE
- โ Cloudflare Workers and KV storage
- โ Edge computing concepts
- Cloudflare Workers - Serverless execution
- Workers KV - Edge storage
- MCP Protocol - Tool calling interface
- Server-Sent Events - Real-time updates
- Vanilla JS - No framework complexity
mcp-lab-complete/
โโโ README.md # This file
โโโ wrangler.toml # Cloudflare config
โโโ package.json # Project metadata
โโโ demo-app/
โ โโโ index.js # Dashboard worker
โโโ mcp-server/
โโโ index.js # MCP server worker
For Students:
- Add new MCP tools
- Create custom themes
- Add more statistics
- Build a notification system
- Add WebSocket support
For Instructors:
- Create coding challenges
- Add quiz questions
- Build team competitions
- Create extension exercises
MIT License - Free to use for educational purposes
Built for Cloudflare SE Intern Workshops
Made with โค๏ธ and โ