{"id":1674,"date":"2025-07-12T17:11:44","date_gmt":"2025-07-12T15:11:44","guid":{"rendered":"https:\/\/www.gerjon.com\/?p=1674"},"modified":"2025-07-12T17:30:06","modified_gmt":"2025-07-12T15:30:06","slug":"1-mcp-101-demystifying-the-model-context-protocol","status":"publish","type":"post","link":"https:\/\/www.gerjon.com\/?p=1674","title":{"rendered":"1. MCP 101 &#8211; Demystifying the Model Context Protocol"},"content":{"rendered":"\n<p>Welcome, future MCP heroes! In this inaugural post, we\u2019ll peel back the layers of the Model Context Protocol\u2014your AI agents\u2019 universal Swiss-Army knife\u2014so you\u2019ll never confuse it with good old agent-to-agent chit-chat again. And why all this is relevant in Copilot Studio and Azure AI foundry projects. We&#8217;ll take you on a journey from how to wow! By the end, you\u2019ll know exactly what MCP can do, how it\u2019s structured, why it&#8217;s an incredible helpful tool for your AI projects.<\/p>\n\n\n\n<p>This is the first  blog in a series of blogs. The idea is to take you on a journey into all things related to Model Context Protocol. These are the different blog posts I will create\/have created. Have fun reading and learning (as I did building this series)<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>MCP 101: Demystifying the Model Context Protocol (This one \ud83d\ude42 )<\/li>\n\n\n\n<li><a href=\"https:\/\/www.gerjon.com\/?p=1640\" data-type=\"link\" data-id=\"https:\/\/www.gerjon.com\/?p=1640\">Under the Hood: How MCP Works in Copilot Studio <\/a><\/li>\n\n\n\n<li>our First Custom Connector: Wrapping a REST API with MCP <\/li>\n\n\n\n<li>Beyond Docs: Hooking Up Databases &amp; Knowledge Bases<\/li>\n\n\n\n<li>Action Stations: Orchestrating Workflows with MCP<\/li>\n\n\n\n<li>Scaling Up: Managing MCP Servers in Azure<\/li>\n\n\n\n<li>MCP + Microsoft Fabric: Data-Driven AI Agents<\/li>\n\n\n\n<li>Advanced Playbook: Building an Enterprise-Grade Copilot Agent<\/li>\n<\/ol>\n\n\n\n<p>The goal of the blog series is to get from What in the world is MCP?\u201d to \u201cI\u2019ve got Copilot Studio singing with Fabric, baby!<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">1.1 Purely Simple: What Is MCP?<\/h2>\n\n\n\n<p>At its core, the Model Context Protocol (MCP) is like a universal adapter for AI agents. Imagine you have a remote control that can instantly connect to any device\u2014TV, sound system, game console\u2014without needing a different remote for each. MCP gives your AI agent that flexibility: define what a tool or data source looks like once, plug it into your MCP server, and <strong>any<\/strong> compliant agent can use it. No extra coding, no fuss, just a standardized way to talk to all your AI tools.<\/p>\n\n\n\n<p>Another way of looking at is as if it was a USB-C docking station. So our chatbot is the laptop that has an USB C docking where we can connect all the different MCP (USB-C) plugs to allow them to communicate to the chatbot. (<a href=\"https:\/\/composio.dev\/blog\/what-is-model-context-protocol-mcp-explained\">What is Model Context Protocol (MCP): Explained &#8211; Composio<\/a>) and I borrowed this picture also from them!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/www.gerjon.com\/wp-content\/uploads\/2025\/07\/image-26.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"474\" height=\"266\" src=\"https:\/\/i0.wp.com\/www.gerjon.com\/wp-content\/uploads\/2025\/07\/image-26.png?resize=474%2C266&#038;ssl=1\" alt=\"\" class=\"wp-image-1675\" srcset=\"https:\/\/i0.wp.com\/www.gerjon.com\/wp-content\/uploads\/2025\/07\/image-26.png?w=474&amp;ssl=1 474w, https:\/\/i0.wp.com\/www.gerjon.com\/wp-content\/uploads\/2025\/07\/image-26.png?resize=300%2C168&amp;ssl=1 300w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/a><\/figure>\n\n\n\n<p>Picture credits to composio (<a href=\"https:\/\/composio.dev\/blog\/what-is-model-context-protocol-mcp-explained\">What is Model Context Protocol (MCP): Explained &#8211; Composio<\/a>)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1.2 The \u201cUniversal AI Adapter\u201d<\/h2>\n\n\n\n<p>Imagine you have an AI agent in Copilot Studio that can:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Query your company wiki for policy details<\/li>\n\n\n\n<li>Spin up an Azure VM with a single prompt<\/li>\n\n\n\n<li>Fetch the latest docs from learn.microsoft.com<\/li>\n\n\n\n<li>Run a SQL query against your Postgres database<\/li>\n<\/ul>\n\n\n\n<p>Wouldn\u2019t it be awesome if all these capabilities just \u201cplugged in\u201d without custom SDKs, proprietary glue code, or version-hell? Enter the <strong>Model Context Protocol<\/strong>:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>MCP<\/strong> is an open, HTTP-based standard that lets any AI agent discover and invoke <strong>tools<\/strong>, <strong>data sources<\/strong>, or <strong>workflows<\/strong> by describing them in a consistent, machine-readable way.<\/p>\n<\/blockquote>\n\n\n\n<p>In short, it\u2019s the universal adapter for AI: define your tool\u2019s interface once (in OpenAPI\/YAML), host it on an MCP server, and any compliant agent can call it. No more reinventing the wheel every time you add a new data source or action.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.3 Agent-to-Agent vs. MCP: How They Play Together (and Differ)<\/h3>\n\n\n\n<p>There is also a lot of chatter online about agent to agent and Model Context protocol so it would be good to explain the differences. I&#8217;ve been reading a lot about them and I&#8217;ve found some excellent reading material online to further explain this. <\/p>\n\n\n\n<p>some light reading: <\/p>\n\n\n\n<p><a href=\"https:\/\/www.blott.studio\/blog\/post\/mcp-vs-a2a-which-protocol-is-better-for-ai-agents\">MCP vs A2A: Which Protocol Is Better For AI Agents? [2025] | Blott Studio<\/a><br><a href=\"https:\/\/composio.dev\/blog\/what-is-model-context-protocol-mcp-explained\"><a href=\"https:\/\/medium.com\/@manavg\/agentic-ai-vs-rpa-ab34d64015e0\">Agentic AI vs RPA. Not a day goes by that someone does not\u2026 | by Manav Gupta | Medium<\/a><\/a><br><a href=\"https:\/\/noailabs.medium.com\/a2a-vs-mcp-agents-protocols-58e50c9901a3\">A2A vs MCP \/\/ Agents Protocols. Agents technologies are growing fast\u2026 | by noailabs | Medium<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/www.gerjon.com\/wp-content\/uploads\/2025\/07\/image-28.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"774\" src=\"https:\/\/i0.wp.com\/www.gerjon.com\/wp-content\/uploads\/2025\/07\/image-28.png?resize=800%2C774&#038;ssl=1\" alt=\"\" class=\"wp-image-1677\" srcset=\"https:\/\/i0.wp.com\/www.gerjon.com\/wp-content\/uploads\/2025\/07\/image-28.png?w=800&amp;ssl=1 800w, https:\/\/i0.wp.com\/www.gerjon.com\/wp-content\/uploads\/2025\/07\/image-28.png?resize=300%2C290&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.gerjon.com\/wp-content\/uploads\/2025\/07\/image-28.png?resize=768%2C743&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.gerjon.com\/wp-content\/uploads\/2025\/07\/image-28.png?resize=310%2C300&amp;ssl=1 310w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure>\n\n\n\n<p>Picture credits to medium: <a href=\"https:\/\/noailabs.medium.com\/a2a-vs-mcp-agents-protocols-58e50c9901a3\">A2A vs MCP \/\/ Agents Protocols. Agents technologies are growing fast\u2026 | by noailabs | Medium<\/a> (hope you don&#8217;t mind I borrowed it) <\/p>\n\n\n\n<p>So in short:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Agent-to-Agent Communication<\/strong>: Agents conversing with other agents, sharing context or passing tasks. Think of two specialized bots\u2014one that researches and another that executes\u2014coordinating via a chat or message bus.<\/li>\n\n\n\n<li><strong>MCP<\/strong>: Agents invoking <strong>tools<\/strong> and <strong>data sources<\/strong>, not other agents. MCP is about exposing capabilities; agent-to-agent is about orchestrating AI \u201cpersonas.\u201d<\/li>\n<\/ul>\n\n\n\n<p>You can combine them: have Agent A call an MCP tool, then forward results to Agent B for deeper analysis. But remember:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>MCP<\/strong> is standardized, HTTP-first, schema-driven.<\/li>\n\n\n\n<li><strong>Agent-to-Agent<\/strong> is ad-hoc, conversation-focused, and depends on whatever messaging or protocol your platform supports.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">1.4 Protocol Anatomy: Endpoints, Operations, Schema<\/h2>\n\n\n\n<p>Let&#8217;s talk about MCP some more. Under the hood, an MCP server exposes a small set of well-defined HTTP endpoints. Here\u2019s the minimal anatomy:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Component<\/th><th>Purpose<\/th><\/tr><\/thead><tbody><tr><td><code>\/mcp\/openapi<\/code><\/td><td>Returns the OpenAPI spec that describes all available tools and operations.<\/td><\/tr><tr><td><code>\/mcp\/invoke<\/code><\/td><td>Accepts a POST with an operation ID and parameters, then streams back results or status.<\/td><\/tr><tr><td><code>\/mcp\/schema<\/code><\/td><td>(Optional) Serves JSON-Schema fragments used for validating complex inputs or outputs.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Each <strong>operation<\/strong> in the OpenAPI spec corresponds to a \u201ctool\u201d\u2014for example, <code>getDocumentation(topic)<\/code> or <code>startWorkflow(workflowId, inputs)<\/code>. The spec includes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>operationId<\/code><\/strong>: a unique name for the tool<\/li>\n\n\n\n<li><strong><code>parameters<\/code><\/strong>: typed inputs (path, query, or body)<\/li>\n\n\n\n<li><strong><code>responses<\/code><\/strong>: typed outputs or streaming events<\/li>\n\n\n\n<li><strong><code>x-mcp-streaming<\/code><\/strong> (optional): flag to indicate streaming responses<\/li>\n<\/ul>\n\n\n\n<p>This standardized schema means agents can:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Discover<\/strong>: Download the spec, list tools, inspect inputs\/outputs.<\/li>\n\n\n\n<li><strong>Invoke<\/strong>: Construct HTTP requests, send them to <code>\/mcp\/invoke<\/code>, handle responses.<\/li>\n<\/ol>\n\n\n\n<p>No hand-rolled parsers or custom authentication logic necessary\u2014just plain HTTP and JSON.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">1.5 Why It Matters for Copilot Studio and Azure AI foundry (among others offcourse)<\/h2>\n\n\n\n<p>Copilot Studio is all about plugging AI into <strong>real-world capabilities<\/strong>, not just chatting back and forth. Without MCP, every new integration means:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Writing SDK wrappers<\/li>\n\n\n\n<li>Updating versioned libraries<\/li>\n\n\n\n<li>Deploying custom microservices<\/li>\n<\/ul>\n\n\n\n<p>With MCP, you get:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Instant Tool Discovery<\/strong>: Copilot Studio automatically ingests any MCP server you register\u2014no extra config UI needed.<\/li>\n\n\n\n<li><strong>Unified Interface<\/strong>: All your tools (docs, databases, workflows) appear in one schema, so agents can choose them dynamically.<\/li>\n\n\n\n<li><strong>Security &amp; Governance<\/strong>: Use Azure AD, managed identities, or VNet isolation at the MCP server layer, and your Copilot agents inherit those controls.<\/li>\n<\/ul>\n\n\n\n<p>In short, MCP turns Copilot Studio and other tools from a fancy chatbot builder into a full-blown orchestration platform\u2014without the plumbing pain.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Next Steps<\/h2>\n\n\n\n<p>Now that you\u2019re armed with MCP fundamentals, in <strong>Part 2<\/strong> we\u2019ll peek under the Copilot Studio hood and show exactly how it discovers and wires up your MCP tools\u2014so you can go from \u201cwhat\u2019s that YAML?\u201d to \u201cbring on the end-to-end demos!\u201d Stay tuned, and keep building!<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Welcome, future MCP heroes! In this inaugural post, we\u2019ll peel back the layers of the Model Context Protocol\u2014your AI agents\u2019 universal Swiss-Army knife\u2014so you\u2019ll never confuse it with good old agent-to-agent chit-chat again. And why &hellip;<\/p>\n","protected":false},"author":1,"featured_media":1679,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[32,11,28],"tags":[],"class_list":["post-1674","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-microsoft","category-office-365"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.gerjon.com\/wp-content\/uploads\/2025\/07\/image-29.png?fit=1024%2C768&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p59CpB-r0","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gerjon.com\/index.php?rest_route=\/wp\/v2\/posts\/1674","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gerjon.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gerjon.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gerjon.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gerjon.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1674"}],"version-history":[{"count":7,"href":"https:\/\/www.gerjon.com\/index.php?rest_route=\/wp\/v2\/posts\/1674\/revisions"}],"predecessor-version":[{"id":1696,"href":"https:\/\/www.gerjon.com\/index.php?rest_route=\/wp\/v2\/posts\/1674\/revisions\/1696"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gerjon.com\/index.php?rest_route=\/wp\/v2\/media\/1679"}],"wp:attachment":[{"href":"https:\/\/www.gerjon.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1674"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gerjon.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1674"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gerjon.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}