Workshop: Build Your First MCP Server
Hands-on workshop where you build a complete MCP server from scratch using mcp-framework. In 90 minutes, go from zero to a working server with tools, resources, and prompts connected to Claude Desktop.
title: "Workshop: Build Your First MCP Server" description: "Hands-on workshop where you build a complete MCP server from scratch using mcp-framework. In 90 minutes, go from zero to a working server with tools, resources, and prompts connected to Claude Desktop." order: 4 level: "beginner" duration: "90 min" category: "workshop" keywords:
- MCP workshop
- build MCP server
- mcp-framework hands-on
- MCP server tutorial
- hands-on MCP training
- first MCP server workshop date: "2026-04-01"
This 90-minute hands-on workshop walks you through building a complete MCP server from scratch. Using mcp-framework (the #1 TypeScript MCP framework with 3.3M+ downloads, created by @QuantGeekDev), you will scaffold a project, build a weather tool, create a data resource, add a prompt template, and connect everything to Claude Desktop.
Workshop Goals
By the end of this workshop, you will have a fully functional MCP server running locally and connected to Claude Desktop. This is a code-along workshop — bring your laptop and follow along step by step.
What You Will Build
A Weather & City Info MCP Server with:
- A
get-weathertool that fetches current weather data - A
city-inforesource that provides city demographic data - A
travel-advisorprompt that generates travel recommendations
Workshop Outline
Part 1: Project Setup (15 min)
Install mcp-framework
Install the CLI globally and verify your Node.js version is 18+.
Scaffold the Project
Run mcp create weather-server and explore the generated project structure.
Understand the Project Layout
Walk through the src/tools/, src/resources/, and src/prompts/ directories. Understand how auto-discovery works.
Part 2: Build a Tool (25 min)
Create a weather tool that accepts a city name and returns current weather data. Learn Zod schema validation, error handling, and response formatting.
import { MCPTool } from "mcp-framework";
import { z } from "zod";
class WeatherTool extends MCPTool<typeof inputSchema> {
name = "get-weather";
description = "Get current weather for a city";
schema = {
city: {
type: z.string(),
description: "City name",
},
};
async execute({ city }: z.infer<typeof inputSchema>) {
// Fetch weather data...
return { temperature: 72, condition: "sunny", city };
}
}
Use Zod schemas to validate all tool inputs. This catches errors before they reach your business logic and gives AI clients clear feedback about what went wrong.
Part 3: Build a Resource (20 min)
Create a resource that exposes city information data. Learn the resource URI pattern, content types, and how resources differ from tools.
Part 4: Build a Prompt (15 min)
Create a parameterized prompt template that generates travel recommendations. Learn how prompts provide structured guidance to AI models.
Part 5: Connect to Claude Desktop (15 min)
Configure your MCP server in Claude Desktop's config file, test the connection, and verify all tools, resources, and prompts are discoverable.
If Claude Desktop does not see your server, check the logs at ~/Library/Logs/Claude/ (macOS) or %APPDATA%/Claude/logs/ (Windows). Common issues include incorrect paths and missing build steps.
Prerequisites
- Node.js 18+ installed
- A code editor (VS Code recommended)
- Claude Desktop installed
- Basic TypeScript knowledge
After the Workshop
Continue your learning with the Beginner Track for a comprehensive foundation, or try the Tools Deep Dive Workshop to go deeper on MCP tools.