Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
156573 stories
·
33 followers

MCP for Beginners: Why Every AI Engineer and Developer Should Learn the Model Context Protocol

1 Share

If you have spent any time building with large language models in the last year, you have hit the same wall everyone hits: your model is brilliant at reasoning but blind to the real world. It cannot read your database, call your internal API, search your documents, or trigger a deployment unless you hand-write glue code for every single integration. The Model Context Protocol (MCP) exists to tear that wall down, and Microsoft's open-source MCP for Beginners curriculum (reachable via the short link https://aka.ms/mcp-for-beginners) is the most complete, hands-on way to learn it.

This post explains what MCP is, walks through the latest updates to the course, shows real code, and makes the case for why MCP belongs on your learning roadmap right now.

Whether you are an AI engineer shipping agents to production, a developer wiring tools into Copilot, or a student trying to build a standout portfolio project.


What is MCP, and why does it matter?

Think of MCP as a universal translator for AI applications. Just as a USB-C port lets you connect any peripheral to any laptop without a custom cable per device, MCP lets an AI model connect to any tool or data source through one standardized protocol. The course uses exactly this analogy, and it holds up well.

Before MCP, integrations were an M × N problem: every one of your M AI applications needed bespoke code to talk to each of your N tools. MCP turns that into an M + N problem. Build a tool once as an MCP server, and any MCP-compatible client, Claude Desktop, VS Code, Cursor, GitHub Copilot, and many others — can use it immediately.

The protocol is built on a clean client–server model with a small set of primitives:

  • Tools — functions the model can call (query a database, send an email, run code).
  • Resources — data the server exposes for context (files, records, documents).
  • Prompts — reusable, parameterized prompt templates.
  • Sampling — a server asking the client's LLM to generate a completion, enabling collaborative workflows.
  • Elicitation — a server requesting structured input from the user mid-task.
  • Roots — boundaries that tell a server which directories or resources it is allowed to operate on.

Communication runs over JSON-RPC, with transports for local processes (stdio) and remote servers (streamable HTTP). That standardization is the whole point: write to the spec, and you interoperate with the entire ecosystem.


What's new: the latest updates to the course

The MCP for Beginners curriculum is actively maintained, and the public changelog reads like a release log for a living product. Here are the most important recent changes, drawn directly from that changelog.

1. Aligned to MCP Specification

The biggest update: the entire curriculum has been validated against the current MCP Specification 2025-11-25 and the latest official SDKs. Stale references to older spec revisions (2025-03-26 and 2025-06-18) were corrected across the security, transport, real-time search, sampling, and stdio-server modules, with links repointed to the canonical modelcontextprotocol.io spec paths.

A gap analysis confirmed the course already covers every primitive introduced or expanded in the latest spec:

  • Sampling — covered in lesson 3.14 and Advanced Topics.
  • Elicitation (including URL mode) — in Core Concepts and Protocol Features.
  • Roots — in the Introduction, Core Concepts, and Root Contexts.
  • Tasks (experimental, long-running operations) — in Core Concepts and Protocol Features.
  • Tool Annotations (readOnlyHint / destructiveHint) — in Core Concepts and Protocol Features.

2. Samples validated against current SDKs

Code that does not run is worse than no code at all, so the maintainers re-validated the core samples:

  • TypeScript: @modelcontextprotocol/sdk resolved to 1.29.0; a tsc --noEmit type-check passed with no errors — the McpServer and StdioServerTransport APIs remain valid.
  • Python: validated in an isolated virtual environment with mcp[cli] (1.27.2); FastMCP.list_tools() correctly returned the sample add and subtract tools.
  • SDK version pins across labs were bumped (for example mcp>=1.26.0) and lockfiles regenerated so every sample tracks the current release.

3. A serious security pass

Security is treated as a first-class concern, not an afterthought. A full audit across every dependency manifest and the sample source code was run, and npm audit now reports 0 vulnerabilities in every audited directory. Highlights:

  • Transitive npm advisories (in the MCP Inspector dev tool, the OpenAI client, and the SDK) were remediated by bumping @modelcontextprotocol/inspector to 0.22.0 and pinning a patched shell-quote.
  • A real code-level command-injection fix (OWASP A03): an open_in_vscode tool that used subprocess.run(..., shell=True) was rewritten to launch the resolved executable directly with no shell — closing a metacharacter-injection vector.
  • Python dependencies were audited with pip-audit, and a vulnerable transitive werkzeug was pinned to a patched >=3.1.6.

For anyone learning to ship agents, this is gold: the course demonstrates the whole secure-development loop, not just the happy path.

4. New lessons and a growing curriculum

The curriculum keeps expanding with practical, modern lessons:

  • 5.17 Adversarial Multi-Agent Reasoning — two agents argue opposite sides of a question using shared MCP tools (web_search + run_python), judged by a third agent. Includes a Mermaid architecture diagram, orchestrators in Python, TypeScript, and C#, and use cases like hallucination detection, threat modeling, and API design review.
  • 3.12 MCP Hosts — configuration for Claude Desktop, VS Code, Cursor, Cline, and Windsurf, with JSON templates and a transport comparison table.
  • 3.13 MCP Inspector — a debugging guide for testing tools, resources, and prompts.
  • 4.1 Pagination — cursor-based pagination patterns in Python, TypeScript, and Java.
  • 5.16 Protocol Features — progress notifications, request cancellation, resource templates, and lifecycle management.

5. Microsoft product rebranding

Content was updated to reflect Microsoft's rebranding: Azure AI Foundry → Microsoft Foundry, and the AI Toolkit (AITK) → Microsoft Foundry Toolkit Extension for VS Code. If you have seen older tutorials referencing the previous names, the curriculum is now current.


Your first MCP server: see how little code it takes

The course's "first server" lesson builds a simple calculator. Here is the shape of a minimal MCP server in Python using FastMCP, which mirrors the validated sample in the repo. Notice how the protocol plumbing disappears — you just decorate functions.

# server.py — a minimal MCP server with two tools
from mcp.server.fastmcp import FastMCP

# Name your server; this identifies it to MCP clients
mcp = FastMCP("Calculator")

@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers and return the result."""
    return a + b

@mcp.tool()
def subtract(a: int, b: int) -> int:
    """Subtract b from a and return the result."""
    return a - b

if __name__ == "__main__":
    # Run over stdio so local hosts (VS Code, Claude Desktop) can connect
    mcp.run()

The same idea in TypeScript, using the official SDK validated at version 1.29.0:

// server.ts — minimal MCP server in TypeScript
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({ name: "Calculator", version: "1.0.0" });

// Register a tool with a typed input schema
server.tool(
  "add",
  { a: z.number(), b: z.number() },
  async ({ a, b }) => ({
    content: [{ type: "text", text: String(a + b) }],
  })
);

// Connect over stdio and start listening
const transport = new StdioServerTransport();
await server.connect(transport);

That is a complete, runnable server. The docstrings and schemas matter: MCP exposes them to the model so it knows when and how to call each tool. Clear descriptions are effectively prompt engineering for your tools — a common pitfall is leaving them vague, which leads to the model misusing or ignoring the tool.

Connecting it in VS Code

Once your server runs, an MCP host connects to it. A typical VS Code / host configuration looks like this:

{
  "servers": {
    "calculator": {
      "command": "python",
      "args": ["server.py"]
    }
  }
}

Lesson 3.12 (MCP Hosts) covers the equivalent JSON for Claude Desktop, Cursor, Cline, and Windsurf, and lesson 3.13 shows how to use the MCP Inspector to test your tools before wiring them into a host — the single best debugging habit you can build early.


How the course is structured

The curriculum is organized as a progressive journey with hands-on code in C#, Java, JavaScript, Python, Rust, and TypeScript. It is grouped into phases:

That final module is the standout for portfolio building: a complete, production-flavored path that takes you from architecture and row-level security through database design, a FastMCP server, semantic search with pgvector and Azure OpenAI, testing, Docker deployment to Azure Container Apps, and monitoring with Application Insights.


Why developers should learn MCP now

For AI engineers

MCP is becoming the default integration layer for agents. Instead of re-implementing tool calling for every framework, you write to one open protocol and your tools work everywhere. The advanced modules — sampling, roots, elicitation, scaling, routing, and adversarial multi-agent patterns — are exactly the techniques you need to move agents from demo to production.

For developers

MCP is already wired into tools you use daily: VS Code, GitHub Copilot, Claude Desktop, Cursor, and more. Learning to build an MCP server means you can expose your systems — internal APIs, databases, CI/CD — to AI assistants safely. The security-first approach in the course (OAuth2, Entra ID, RBAC, dependency auditing) teaches you to do this the right way from day one.

For students

MCP is a rare opportunity to learn a technology while it is still early, with a free, beginner-friendly, Microsoft-maintained curriculum and code in six languages. The 13-lab capstone alone is a genuine portfolio project. And with content translated into 50+ languages, the barrier to entry is low no matter where you are.


Responsible and secure by design

A recurring theme worth calling out: the course does not treat security and governance as optional extras. It models real practices you should carry into your own work:

  • Least privilege via roots — constrain what a server can touch.
  • Tool annotations — mark tools readOnlyHint or destructiveHint so clients can warn users before destructive actions.
  • No shells for user input — the command-injection fix is a textbook example of why you never pass untrusted input through a shell.
  • Dependency hygiene — audit with npm audit and pip-audit, and pin patched releases.
  • Proper auth — dedicated lessons on OAuth2 and Microsoft Entra ID.

Key takeaways

  • MCP standardizes how AI connects to tools and data, turning a combinatorial integration problem into a simple, reusable one.
  • The course is current, validated against MCP Specification 2025-11-25 with SDKs at TypeScript 1.29.0 and Python mcp 1.27.2.
  • Samples actually run, and the repo demonstrates a full secure-development loop with 0 reported vulnerabilities after auditing.
  • It is broad and deep: from a 10-line calculator server to a 13-lab production capstone, in six languages.
  • It is the fastest credible path to MCP fluency for AI engineers, developers, and students alike.

Get started today

  1. Open the course: https://aka.ms/mcp-for-beginners (redirects to the GitHub repository).
  2. Fork and clone it — use a sparse checkout to skip translations for a faster download:
    git clone --filter=blob:none --sparse https://github.com/microsoft/mcp-for-beginners.git
    cd mcp-for-beginners
    git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"
  3. Build your first server with lesson 3.1 in your language of choice.
  4. Debug it with the MCP Inspector, then connect it in VS Code.
  5. Go deep with the 13-lab database capstone, and read the official spec at modelcontextprotocol.io.
  6. Track what's new in the changelog and join the community discussions.

MCP is quietly becoming the connective tissue of the AI ecosystem. The earlier you learn it, the more leverage you will have — and Microsoft's MCP for Beginners is the clearest on-ramp available. Star the repo, build a server this week, and start connecting your AI to the world.

Read the whole story
alvinashcraft
38 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

Previewing SpecCat.com - Compare CPU, APU, GPU Specifications Instantly

1 Share

SpecCat.com is a web site I’ve made, mainly for myself trying out LLMs, for easily comparing detailed specifications of different silicon chips; CPUs, APUS, GPUs etc. as shown in screenshots of header below and full at bottom. It should work reasonably well on mobile, but main use case was for larger screens. I tried hard to make it colorful and fun, and dark only. I made this a while ago but never got around to announcing it, so here we are.

Example top part of website for CPUs. Speccat CPU Intro

Example top part of website for GPUs. Speccat GPU Intro

I made this because I often check chip specifications, since I find it endlessly fascinating but also for professional use. That is, I often go to ark.intel.com, which unfortunately is not as great a site as it once was. It’s not dense enough. Slow too. And naturally you can’t compare to other chips/products from AMD, AMD Product Specifications, or NVidia GPUs, Compare GeForce Graphics Cards or similar.

I also often have to spec new PCs for work or friends and family based on a budget. Similar to what I discussed in my old blog post from 2020 Core Developer PC™ v20.09.dGPU - AMD 3700X vs Intel i7-10700 8c/16t with NVidia 2060 Super, you know back when DDR RAM was dirt cheap ($110/850 DKK for 2 x 16 GB DDR4 3200)! So having specs at hand makes that a lot easier.

There are, of course, several media sites that have comparisons like TechPowerUp specs databases; CPU Specs Database, GPU Specs Database, SSD Specs Database. Or CPU Monkey.

All of which are fine, but none really go into the detail I am looking for or present such details in a dense enough way and allowing for easy comparison across all details for many products. My main source has, thus, often been Wikipedia ♥, which has great detailed tables, as for example in:

Given my unhealthy obsession with performance/minimalism I created this as a vanilla static html, css, javascript web site. Zero libraries or frameworks are used. I spent quite a bit of time prompting and adjusting output to keep site small and instant by bundling everything into just two assets, as shown in Chrome Developer Tool below. Code is a mess for sure, though.

The entire site clocks in at just ~30 KB. A lot less than this blog post. Basic design is very simple, I keep specs in json as js-files for each product family. Then include these in index.html, which means it works fine locally out-of-the-box, as part of deployment all this is then bundled into one single index.html file together with app.js that contains site logic and the favicon. The AI generated logo of a cat holding a silicon wafer then being the only other asset, served as highly compressed avif-file for browsers that support this (almost all). In comparison ark.intel.com is 1.6 MB (that’s +50x more) for just going to welcome page.

SpecCat Chrome Developer Network Traffic

Given I have used LLMs for this and no matter what I provide no guarantees to the correctness of the specifications. I checked as much as I could manually, but if you find any mistakes please to let me know. It is very much a preview and I do not know if I will invest more time in it or not. Probably depends on others finding this useful or not, so feedback and suggestions are welcomed.

Ideally, I would like to expand this with other silicon products (e.g. gaming consoles, mobile SOCs), but also include rumored specifications for upcoming chips like Zen 6 or Nova Lake based on leaks from Moore’s Law Is Dead or similar, as when to buy/update a PC for example is a cornerstone of any silicon enthusiasts reasoning.

That’s all!

SpecCat Cpu Comparison

Read the whole story
alvinashcraft
39 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

Microsoft is killing New Outlook’s notification spam, but Classic still loads emails faster on Windows

1 Share

Microsoft says “New” Outlook will soon group your notifications and reduce interruptions, aka notification spam, on Windows, but it won’t admit that Outlook Classic loads emails faster, almost more than 10 seconds faster when you open emails via notifications.

It’s crazy that after all these years, Microsoft doesn’t realize New Outlook has a major reliability problem, particularly with notifications. You either don’t receive notifications for your connected accounts, or if you receive notifications for any of your emails, it could take longer than ten seconds to open the mail. I’ve observed this behavior on Windows 11 and Windows 10.

But don’t get me wrong. New Outlook isn’t exactly an unusable or terrible client. It gets the job done, and that shouldn’t surprise anyone because it’s based on Outlook.com, after all.

We’ve been using Outlook.com for decades now, so if that worked for your tasks, New Outlook is also more than enough for personal use, but at the same time, it doesn’t do justice to the Windows client.

Outlook Classic is a perfectly capable product, and New Outlook wasn’t required, but now that we have it, Microsoft has no choice but to maintain it.

As first spotted by Windows Latest, on June 9, Microsoft confirmed that it’s testing a new feature that will group email notifications received within seconds into a single alert.

That means, instead of getting bombarded with dozens of email notifications, which can happen when you sign up or order a product, you’ll get a single notification that says you have received a new email.

I haven’t been able to try grouped notifications on my PC yet, so I asked Microsoft, and it told me that the feature will be available starting in late June, but it won’t roll out to everyone until at least mid-September.

Also, Microsoft plans to turn on notification grouping by default, so you’ll need to opt out from Settings > General > Notifications > Email > Group notifications.

Why is Microsoft adding notification grouping to New Outlook?

Outlook’s upcoming grouped notifications feature is a great idea, and it could reduce notification fatigue.

Microsoft’s study found that grouping notifications could help improve focus and make you more productive.

This feature will roll out to both Outlook on the web and Outlook for Windows, and once you have it, you will notice that some notifications are now grouped. The grouping happens when multiple emails arrive within a few seconds, and if you click a grouped notification, it opens the most recent email in the inbox.

You can always go back to the inbox and find the other emails sent as part of the group.

Outlook Classic is far better than New Outlook for notification management

Outlook Classic “Win32” app has been around for almost three decades, and while it’s no longer the center of attention at Microsoft, it still does many things better than the glorified web app, aka “New Outlook.”

In our tests, Windows Latest found that when you receive an email notification via New Outlook and click on the alert, it can take anywhere between 10 seconds and 30 seconds for Outlook to open and slowly load the email. If you don’t believe me, look at the video below from our benchmark:

New Outlook is so bad at notifications that you could literally open New Outlook and navigate to the email manually faster than by clicking the alert in Windows Notification Center:

Outlook Classic, which is supposedly old and “legacy” code, smokes New Outlook and opens emails in a second or two when you hit the notifications:

Also, it’s not just about performance because I’ve observed that New Outlook notifications are a hit or miss for connected accounts.

For example, on a PC with close to 10 Microsoft 365 domains/accounts, I do not get alerts for all my accounts all the time. It’s a hit or miss, and there’s no pattern other than the fact that New Outlook can be messy with notifications.

Microsoft previously told Windows Latest that it’s aware of unreliable email notifications and is working on a fix. Now, we’re also getting grouped notifications, which is a nice improvement, and there are up to 10 major changes planned for New Outlook in 2026, but we do not have any word from Microsoft on slow email opening.

What is your wishlist for New Outlook? Let me know in the comments below.

The post Microsoft is killing New Outlook’s notification spam, but Classic still loads emails faster on Windows appeared first on Windows Latest

Read the whole story
alvinashcraft
4 hours ago
reply
Pennsylvania, USA
Share this story
Delete

Anthropic’s Mythos 5 is back

1 Share
A photo illustration featuring Anthropic CEO Dario Amodei, President Donald Trump, and the Pentagon.

After a rollercoaster negotiation process with the Trump administration that dragged on for two weeks, Anthropic's Mythos 5 is finally back in action - at least, somewhat, for a select group of organizations, according to a letter from the government to Anthropic that was viewed by The Verge. Fable 5, however - the public-facing Mythos-class model - appears to still be in limbo, with no apparent timeline for a rollout agreement.

The letter, dated June 26th and sent by Commerce Secretary Howard Lutnick to Anthropic co-founder Tom Brown, who had been recently leading negotiations, states that there's been a "revision to the license requiremen …

Read the full story at The Verge.

Read the whole story
alvinashcraft
4 hours ago
reply
Pennsylvania, USA
Share this story
Delete

#553: All of our tools

1 Share
This episode is a fun crossover from our Python news and tips podcast, Python Bytes. We have had some big changes over there. Brian Okken has moved on and Calvin Hendryx-Parker has joined the show as the new co-host. To kick off this new era, we decided to do a longer and more personal episode called "All Our Tools". The idea is both of us talk about some of our most useful day-to-day developer and business owner tools that we think you all would find useful. It was so well received, that I'm bringing it to you all as a crossover episode. Enjoy and we hope you find something new and awesome to help you with your software and data science day to day.

Episode sponsors

Sentry Error Monitoring, Code talkpython26
Python in Production
Talk Python Courses

@calvinhp@sixfeetup.social: sixfeetup.social
@calvinhp.com: bsky.app
calvinhp.com: calvinhp.com

Original airing on Python Bytes: pythonbytes.fm

pi: pi.dev
superpowers: github.com
Warp.dev: Warp.dev
OhMyZSH: ohmyz.sh
Commandbookapp.com: Commandbookapp.com
Blink: blink.sh
kitty: sw.kovidgoyal.net
mosh: mosh.org
tmux: github.com
Claude code: www.anthropic.com
Claude.md: Claude.md
MacWhisper: goodsnooze.gumroad.com
Handy: handy.computer
Tailscale: tailscale.com
Talk Python episode with Alex: talkpython.fm
Telescopo: www.telescopo.app
Typora markdown: typora.io
formal documentation for many of my open source packages: mkennedy.codes
Great Docs: posit-dev.github.io
Statement on the US government directive to suspend access to Fable 5 and Mythos 5: www.anthropic.com
No second date: x.com

Watch this episode on YouTube: youtube.com
Episode #553 deep-dive: talkpython.fm/553
Episode transcripts: talkpython.fm

Theme Song: Developer Rap
🥁 Served in a Flask 🎸: talkpython.fm/flasksong

---== Don't be a stranger ==---
YouTube: youtube.com/@talkpython

Bluesky: @talkpython.fm
Mastodon: @talkpython@fosstodon.org
X.com: @talkpython

Michael on Bluesky: @mkennedy.codes
Michael on Mastodon: @mkennedy@fosstodon.org
Michael on X.com: @mkennedy




Download audio: https://talkpython.fm/episodes/download/553/all-of-our-tools.mp3
Read the whole story
alvinashcraft
4 hours ago
reply
Pennsylvania, USA
Share this story
Delete

Building a Geography game for StreamerMap

1 Share
From: Fritz's Tech Tips and Chatter
Duration: 11:33
Views: 30

Fritz is building a geography game for the StreamerMap.live website

Read the whole story
alvinashcraft
4 hours ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories