{"id":2642,"date":"2025-10-24T13:36:42","date_gmt":"2025-10-24T13:36:42","guid":{"rendered":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/2025\/10\/24\/ai-guide-to-the-galaxy-mcp-toolkit-and-gateway-explained\/"},"modified":"2025-10-24T13:36:42","modified_gmt":"2025-10-24T13:36:42","slug":"ai-guide-to-the-galaxy-mcp-toolkit-and-gateway-explained","status":"publish","type":"post","link":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/2025\/10\/24\/ai-guide-to-the-galaxy-mcp-toolkit-and-gateway-explained\/","title":{"rendered":"AI Guide to the Galaxy: MCP Toolkit and Gateway, Explained"},"content":{"rendered":"<p>This is an abridged version of the interview we had in <a href=\"https:\/\/www.youtube.com\/watch?v=mGOZ9QCt4EM\" target=\"_blank\">AI Guide to the Galaxy<\/a>, where host Oleg \u0160elajev spoke with Jim Clark, Principal Software Engineer at Docker, to unpack Docker\u2019s MCP Toolkit and MCP Gateway.<\/p>\n<h2 class=\"wp-block-heading\">TL;DR<\/h2>\n<p><strong>What they are:<\/strong> The <a href=\"https:\/\/open.docker.com\/dashboard\/mcp\" target=\"_blank\">MCP Toolkit<\/a> helps you discover, run, and manage MCP servers; the MCP Gateway unifies and securely exposes them to your agent clients.<\/p>\n<p><strong>Why Docker:<\/strong> Everything runs as containers with supply-chain checks, secret isolation, and OAuth support.<\/p>\n<p><strong>How to use:<\/strong> Pick servers from the MCP Catalog, start the MCP Gateway, and your client (e.g., Claude) instantly sees the tools.<\/p>\n<p><em>First things first: if you want the official overview and how-tos, start with the<\/em><a href=\"https:\/\/www.docker.com\/products\/mcp-catalog-and-toolkit\/\"><em> Docker MCP Catalog and Toolkit<\/em><\/a><em>.<\/em><\/p>\n<div class=\"wp-block-ponyo-video\">\n<div><\/div>\n<\/div>\n<h2 class=\"wp-block-heading\">A quick origin story (why MCP and Docker?)<\/h2>\n<p><strong>Oleg:<\/strong> You\u2019ve been deep in agents for a while. Where did this all start?<\/p>\n<p><strong>Jim:<\/strong> When tool calling arrived, we noticed something simple but powerful: <em>tools look a lot like containers<\/em>. So we wrapped tools in Docker images, gave agents controlled \u201chands,\u201d and everything clicked. That was even before the Model Context Protocol (MCP) spec landed. When Anthropic published MCP, it put a name to what we were already building.<\/p>\n<h2 class=\"wp-block-heading\">What the MCP Toolkit actually solves<\/h2>\n<p><strong>Oleg:<\/strong> So, what problem does the Toolkit solve on day one?<\/p>\n<p><strong>Jim:<\/strong> Installation and orchestration. The Toolkit gives you a <strong>catalog of MCP servers<\/strong> (think: YouTube transcript, Brave search, Atlassian, etc.) packaged as containers and ready to run. No cloning, no environment drift. Just grab the image, start it, and go. As Docker builds these images and publishes them to Hub, you get consistency and governance on pull.<\/p>\n<p><strong>Oleg:<\/strong> And it presents a single, client-friendly surface?<\/p>\n<p><strong>Jim:<\/strong> Exactly. The Toolkit can act as an MCP server to clients, aggregating whatever servers you enable so clients can list tools in one place.<\/p>\n<h2 class=\"wp-block-heading\">How the MCP Gateway fits in<\/h2>\n<p><strong>Oleg:<\/strong> I see \u201cToolkit\u201d inside Docker Desktop. Where does the <strong>MCP Gateway<\/strong> come in?<\/p>\n<p><strong>Jim:<\/strong> The Gateway is a core piece <em>inside<\/em> the Toolkit: a process (and open source project) that unifies which MCP servers are exposed to which clients. The CLI and UI manage both local containerized servers and <strong>trusted remote MCP servers<\/strong>. That way you can attach a client, run through OAuth where needed, and use those remote capabilities securely via one entry point.<\/p>\n<p><strong>Oleg:<\/strong> Can we see it from a client\u2019s perspective?<\/p>\n<p><strong>Jim:<\/strong> Sure. Fire up the Gateway, connect Claude, run mcp list, and you\u2019ll see the tools (e.g., Brave Web Search, Get Transcript) available to that session, backed by containers the Gateway spins up on demand.<\/p>\n<h2 class=\"wp-block-heading\">Security: provenance, secrets, and OAuth without drama<\/h2>\n<p><strong>Oleg:<\/strong> What hardening happens before a server runs?<\/p>\n<p><strong>Jim:<\/strong> On pull\/run, we do <strong>provenance verification<\/strong>, ensuring Docker built the image, checking for an SBOM, and running supply-chain checks (via Docker Scout) so you\u2019re not executing something tampered with.<\/p>\n<p><strong>Oleg:<\/strong> And credentials?<\/p>\n<p><strong>Jim:<\/strong> Secrets you add (say, for Atlassian) are <strong>mounted only into the target container<\/strong> at runtime, nothing else can see them. For remote servers, the Gateway can handle <strong>OAuth flows<\/strong>, acquiring or proxying tokens into the right container or request path. It\u2019s two flavors of secret management: local injection and remote OAuth, both controlled from Docker Desktop <em>and<\/em> the CLI.<\/p>\n<h2 class=\"wp-block-heading\">Profiles, filtering, and \u201cjust the tools I want\u201d<\/h2>\n<p><strong>Oleg:<\/strong> If I have 30 servers, can I scope what a given client sees?<\/p>\n<p><strong>Jim:<\/strong> Yes. Choose the servers per Gateway run, then <strong>filter tools, prompts, and resources<\/strong> so the client only gets the subset you want. Treat it like \u201cprofiles\u201d you can version alongside your code; compose files and config make it repeatable for teams. You can even run <em>multiple<\/em> gateways for different configurations (e.g., \u201cchess tools\u201d vs. \u201ccloud ops tools\u201d).<\/p>\n<h2 class=\"wp-block-heading\">From local dev to production (and back again)<\/h2>\n<p><strong>Oleg:<\/strong> How do I move from tinkering to something durable?<\/p>\n<p><strong>Jim:<\/strong> Keep it <strong>Compose-first<\/strong>. The Gateway and servers are defined as services in your compose files, so your agent stack is reproducible. From there, push to cloud: partners like <strong>Google Cloud Run<\/strong> already support one-command deploys from Compose, with Azure integrations in progress. Start locally, then graduate to remote runs seamlessly.<\/p>\n<p><strong>Oleg:<\/strong> And choosing models?<\/p>\n<p><strong>Jim:<\/strong> Experiment locally, swap models as needed, and wire in the MCP tools that fit your agent\u2019s job. The pattern is the same: pick models, pick tools, compose them, and ship.<\/p>\n<h2 class=\"wp-block-heading\">Getting started with MCP Gateway (in minutes)<\/h2>\n<p><strong>Oleg:<\/strong> Summarize the path for me.<\/p>\n<p><strong>Jim:<\/strong><\/p>\n<p>Pick servers from the catalog in <a href=\"https:\/\/open.docker.com\/dashboard\/mcp\" target=\"_blank\">Docker Desktop<\/a> (or CLI).<\/p>\n<p>Start the <strong>MCP Gateway<\/strong> and connect your client.<\/p>\n<p>Add secrets or flow through OAuth as needed.<\/p>\n<p>Filter tools into a profile.<\/p>\n<p>Capture it in Compose and scale out.<\/p>\n<h3 class=\"wp-block-heading\">Why the MCP Toolkit and Gateway improve team workflows<\/h3>\n<p><strong>Fast onboarding:<\/strong> No glue code or conflicting envs, servers come containerized.<\/p>\n<p><strong>Security built-in:<\/strong> Supply-chain checks and scoped secret access reduce risk.<\/p>\n<p><strong>One workflow:<\/strong> Local debug, Compose config, cloud deploys. Same primitives, fewer rewrites.<\/p>\n<h2 class=\"wp-block-heading\">Try it out<\/h2>\n<p>Spin up your first profile and point your favorite client at the Gateway. When you\u2019re ready to expand your agent stack, explore tooling like<a href=\"https:\/\/www.docker.com\/products\/docker-desktop\/\"> Docker Desktop<\/a> for local iteration and<a href=\"https:\/\/www.docker.com\/products\/docker-offload\/\"> Docker Offload<\/a> for on-demand cloud resources \u2014 then keep everything declarative with Compose.<\/p>\n<p><strong>Ready to build? Explore the<\/strong><a href=\"https:\/\/open.docker.com\/dashboard\/mcp\" target=\"_blank\"><strong> Docker MCP Catalog and Toolkit<\/strong><\/a><strong> to get started.<\/strong><\/p>\n<h3 class=\"wp-block-heading\">Learn More<\/h3>\n<p>Watch the rest of the <a href=\"https:\/\/www.youtube.com\/playlist?list=PLkA60AVN3hh-BKfBMG_AhuXEN2dnT1rmV\" target=\"_blank\">AI Guide to the Galaxy series<\/a><\/p>\n<p><a href=\"https:\/\/hub.docker.com\/mcp\" target=\"_blank\">Explore the MCP Catalog<\/a>: Discover containerized, security-hardened MCP servers<\/p>\n<p>Open Docker Desktop and <a href=\"https:\/\/hub.docker.com\/open-desktop?url=https:\/\/open.docker.com\/dashboard\/mcp\" target=\"_blank\">get started with the MCP Toolkit<\/a> <em>(Requires version 4.48 or newer to launch the MCP Toolkit automatically)<\/em><\/p>\n<p>Check out our <a href=\"https:\/\/www.docker.com\/blog\/add-mcp-servers-to-claude-code-with-mcp-toolkit\/\">latest guide<\/a> on how to setup Claude Code with Docker\u2019s MCP Toolkit<\/p>","protected":false},"excerpt":{"rendered":"<p>This is an abridged version of the interview we had in AI Guide to the Galaxy, where host Oleg \u0160elajev [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[4],"tags":[],"class_list":["post-2642","post","type-post","status-publish","format-standard","hentry","category-docker"],"_links":{"self":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts\/2642","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/comments?post=2642"}],"version-history":[{"count":0,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts\/2642\/revisions"}],"wp:attachment":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/media?parent=2642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/categories?post=2642"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/tags?post=2642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}