/ Directory / Playground / mcp-for-beginners
● Official microsoft ⚡ Instant

mcp-for-beginners

by microsoft · microsoft/mcp-for-beginners

Microsoft's official MCP curriculum — 11 modules, 6 languages, from first server to production deployment. The best free way to learn MCP.

MCP-for-Beginners is Microsoft's open-source curriculum that teaches the Model Context Protocol through 11 progressive modules covering fundamentals, hands-on server building, cloud integration (Azure), security, and a 13-lab capstone. Code examples in .NET, Java, TypeScript, JavaScript, Python, and Rust. Not an MCP server itself — treat as an educational resource.

Why use it

Key features

Live Demo

What it looks like in practice

for-beginners.replay ▶ ready
0/0

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "for-beginners": {
      "command": "uvx",
      "args": [
        "mcp-for-beginners"
      ],
      "_inferred": true
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "for-beginners": {
      "command": "uvx",
      "args": [
        "mcp-for-beginners"
      ],
      "_inferred": true
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "for-beginners": {
      "command": "uvx",
      "args": [
        "mcp-for-beginners"
      ],
      "_inferred": true
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "for-beginners": {
      "command": "uvx",
      "args": [
        "mcp-for-beginners"
      ],
      "_inferred": true
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "for-beginners",
      "command": "uvx",
      "args": [
        "mcp-for-beginners"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "for-beginners": {
      "command": {
        "path": "uvx",
        "args": [
          "mcp-for-beginners"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add for-beginners -- uvx mcp-for-beginners

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use mcp-for-beginners

How to learn MCP from scratch with Microsoft's curriculum

👤 Developers new to MCP who want structured learning, not scattered blog posts ⏱ ~180 min beginner

When to use: You keep hearing about MCP but don't know where to start. You want a guided path, not a README.

Prerequisites
  • Basic programming in at least one supported language — Any of: C#, Java, TypeScript, JavaScript, Python, Rust
  • Understanding of client-server models and REST — If you've built an API before, you're ready
Flow
  1. Start with Module 0-1: Foundations
    Walk me through Module 0 (Introduction) and Module 1 (Core Concepts) of mcp-for-beginners. Summarize the key mental models before I start coding.✓ Copied
    → Clear explanation of MCP's role as a 'universal translator for AI apps'
  2. Build your first server in Module 3
    I'm using TypeScript. Guide me through Lesson 1 of Module 3 (Building Your First MCP Server). Explain each step as I code along.✓ Copied
    → Working MCP server that responds to tool calls
  3. Connect an LLM to your server
    Now walk me through Lesson 3 (Integrating LLMs). I want to connect Claude to the server I just built.✓ Copied
    → End-to-end flow: user prompt -> Claude -> MCP tool call -> response

Outcome: A working MCP server connected to an LLM, with understanding of the protocol, not just copy-pasted code.

Pitfalls
  • Skipping the foundations and jumping to code — Module 0-1 builds the mental model. Without it, the code examples won't make sense.
  • Trying all 6 languages at once — Pick one language and go deep. The concepts transfer; the syntax doesn't matter.

Build a production-ready MCP system with the capstone labs

👤 Developers who finished the basics and want to build something real ⏱ ~480 min advanced

When to use: You've built toy MCP servers and want to learn production patterns: databases, auth, deployment.

Prerequisites
  • Completed Modules 0-5 or equivalent experience — You should be comfortable building a basic MCP server
  • PostgreSQL available — Local install or Docker: docker run -p 5432:5432 -e POSTGRES_PASSWORD=secret postgres
Flow
  1. Start the capstone
    Guide me through Lab 1 of Module 11 (Capstone). What are we building and how does it connect to everything I've learned?✓ Copied
    → Overview of the 13-lab progression toward a production system
  2. Implement database integration
    Walk me through the PostgreSQL integration lab. How do MCP tools safely query a database?✓ Copied
    → Working database-backed MCP tool with parameterized queries
  3. Add security
    Now add OAuth2 authentication to the server from Module 2's security patterns.✓ Copied
    → Authenticated MCP server that rejects unauthorized tool calls

Outcome: A production-grade MCP system with database, auth, and deployment — not a toy.

Pitfalls
  • Skipping the security module — Module 2 (Security) is not optional in production. SQL injection through MCP tools is a real risk.

Compare MCP implementations across languages to pick yours

👤 Tech leads choosing which language to build their MCP servers in ⏱ ~60 min intermediate

When to use: Your team needs to decide on a language for MCP server development.

Flow
  1. Look at the calculator samples
    Compare the basic MCP calculator sample in TypeScript, Python, and C#. What are the key differences in boilerplate, SDK maturity, and ergonomics?✓ Copied
    → Side-by-side comparison with concrete tradeoffs
  2. Check advanced patterns
    Now compare the advanced MCP implementations. Which language has the best typing support for tool definitions?✓ Copied
    → Evaluation of type safety, error handling, and SDK features per language

Outcome: A data-driven language choice for your team's MCP servers.

Pitfalls
  • Choosing based on sample code alone — Also check MCP SDK release cadence and community size for each language

Combinations

Pair with other MCPs for X10 leverage

for-beginners + github

Use GitHub MCP to browse the curriculum repo and its code samples without cloning

Use GitHub MCP to fetch the TypeScript calculator sample from microsoft/mcp-for-beginners and explain the code.✓ Copied
for-beginners + filesystem

Clone the curriculum locally and use filesystem MCP to navigate lessons while Claude teaches

Read the Module 3 Lesson 1 files from my local clone and walk me through building the server step by step.✓ Copied

Cost & Limits

What this costs to run

API quota
N/A — this is a learning resource, not a service.
Tokens per call
N/A
Monetary
Free and open-source (MIT). You pay only for your own Claude/LLM usage while learning.
Tip
The curriculum itself is free. Use it with Claude to get interactive explanations of each module.

Security

Permissions, secrets, blast radius

Credential storage: No credentials needed to learn. The curriculum teaches proper credential handling in Module 2.
Data egress: N/A — educational content only.

Troubleshooting

Common errors and fixes

Code sample doesn't run in my language version

Check the prerequisites in each module's README. The .NET samples target specific SDK versions; Python samples may need 3.10+.

Verify: Check the runtime version specified in each lesson's README
MCP SDK import errors

The curriculum pins specific SDK versions. Run the install command from the lesson's README exactly — don't use latest unless you know the API hasn't changed.

Verify: Check package.json or requirements.txt in the lesson directory
Capstone PostgreSQL connection fails

Ensure PostgreSQL is running and the connection string matches. Default: postgresql://postgres:secret@localhost:5432/mcp_capstone

Verify: psql -h localhost -U postgres -c 'SELECT 1'

Alternatives

mcp-for-beginners vs others

AlternativeWhen to use it insteadTradeoff
Official MCP DocumentationYou prefer reference docs over curriculum-style learningLess structured; no progressive labs; but always up-to-date with the spec
Building MCP servers directlyYou learn by doing, not by following a curriculumFaster to start but you'll miss fundamentals like security and protocol details

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills