<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Model-Context-Protocol on The road</title><link>https://kane.mx/series/model-context-protocol/</link><description>Recent content in Model-Context-Protocol on The road</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Tue, 19 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://kane.mx/series/model-context-protocol/index.xml" rel="self" type="application/rss+xml"/><item><title>MCP OAuth on AgentCore Gateway + Cognito via APIGW Façade</title><link>https://kane.mx/posts/2026/agentcore-gateway-cognito-mcp-oauth/</link><pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate><guid>https://kane.mx/posts/2026/agentcore-gateway-cognito-mcp-oauth/</guid><description>
&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>&lt;a href="https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway.html">Amazon Bedrock AgentCore Gateway&lt;/a> is the most pragmatic way to host a Model Context Protocol server on AWS today. Declare your tools as OpenAPI or as Lambda targets, get a managed multi-target MCP endpoint, and inherit AWS-native authentication via a &lt;code>customJwtAuthorizer&lt;/code>. For machine-to-machine traffic that pattern is excellent.&lt;/p>
&lt;p>The moment you ask an interactive MCP client — &lt;a href="https://docs.claude.com/en/docs/claude-code/overview">Claude Code&lt;/a>, Cursor, the &lt;a href="https://github.com/modelcontextprotocol/inspector">MCP Inspector&lt;/a> — to talk to that same gateway with a per-user OAuth flow, the seams show. AgentCore Gateway expects a JWT and trusts whatever issuer you wired into its authorizer. Pair it with &lt;a href="https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html">Amazon Cognito&lt;/a> and the wiring works for the &lt;em>server&lt;/em> side. It does not work for the &lt;em>client&lt;/em> side, because Cognito is an OIDC identity provider, not an MCP-compliant authorization server. The two are not the same thing.&lt;/p>
&lt;p>&lt;a href="https://kane.mx/posts/2026/agentcore-gateway-cognito-mcp-oauth/">Read More&lt;/a>&lt;/p></description></item><item><title>MCP OAuth Evolution: SEP-991 Simplifies Client Registration</title><link>https://kane.mx/posts/2025/mcp-oauth-sep-991-simplified-registration/</link><pubDate>Tue, 02 Dec 2025 00:00:00 +0000</pubDate><guid>https://kane.mx/posts/2025/mcp-oauth-sep-991-simplified-registration/</guid><description>
&lt;h2 id="the-problem-with-dynamic-client-registration">The Problem with Dynamic Client Registration&lt;/h2>
&lt;p>In my &lt;a href="https://kane.mx/posts/2025/mcp-authorization-oauth-rfc-deep-dive/">previous deep-dive into MCP authorization&lt;/a>, I analyzed how the protocol builds on OAuth 2.1 with mandatory PKCE, Resource Indicators (RFC 8707), and the &amp;quot;Discovery Trifecta&amp;quot; of RFC 7591, 8414, and 9728. Dynamic Client Registration (DCR) was positioned as the key enabler for MCP's federated ecosystem.&lt;/p>
&lt;p>However, DCR has significant practical limitations:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Challenge&lt;/th>
&lt;th>Impact&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Requires AS support for public registration API&lt;/td>
&lt;td>Many identity providers don't offer this&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Forces OAuth proxy infrastructure&lt;/td>
&lt;td>Added complexity when AS lacks DCR&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Manual IT involvement&lt;/td>
&lt;td>End users need admin help for each registration&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>The MCP ecosystem faces a unique challenge: &lt;strong>unbounded clients connecting to unbounded servers&lt;/strong> with no prior relationship. DCR, while standardized, often requires workarounds in practice.&lt;/p>
&lt;p>&lt;a href="https://kane.mx/posts/2025/mcp-oauth-sep-991-simplified-registration/">Read More&lt;/a>&lt;/p></description></item><item><title>Implementing MCP OAuth 2.1 with Keycloak on AWS</title><link>https://kane.mx/posts/2025/deploy-keycloak-aws-mcp-oauth/</link><pubDate>Fri, 21 Nov 2025 00:00:00 +0000</pubDate><guid>https://kane.mx/posts/2025/deploy-keycloak-aws-mcp-oauth/</guid><description>
&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>The Model Context Protocol (MCP) ecosystem mandates OAuth 2.1-compliant authorization servers to facilitate secure, federated access to AI model services. MCP clients, such as Claude Code, Cursor, and VS Code extensions, rely on modern OAuth specifications including Dynamic Client Registration (RFC 7591), PKCE (RFC 7636), and crucially, Resource Indicators (RFC 8707) for audience-restricted tokens.&lt;/p>
&lt;p>However, most Identity-as-a-Service (IDaaS) providers, including the open-source Keycloak platform, currently lack full RFC 8707 support. Keycloak, while robust in OAuth 2.0 capabilities, employs a proprietary &lt;code>audience&lt;/code> parameter in contrast to the standardized &lt;code>resource&lt;/code> parameter defined in RFC 8707. For a comprehensive analysis of this compatibility landscape, refer to my previous post: &lt;a href="https://kane.mx/posts/2025/mcp-authorization-oauth-rfc-deep-dive/">Technical Deconstruction of MCP Authorization: A Deep Dive into OAuth 2.1 and IETF RFC Specifications&lt;/a>.&lt;/p>
&lt;p>&lt;a href="https://kane.mx/posts/2025/deploy-keycloak-aws-mcp-oauth/">Read More&lt;/a>&lt;/p></description></item><item><title>Xiaozhi ESP32 MCP Gateway with Amazon Bedrock AgentCore</title><link>https://kane.mx/posts/2025/xiaozhi-agentcore-gateway-mcp/</link><pubDate>Mon, 17 Nov 2025 00:00:00 +0000</pubDate><guid>https://kane.mx/posts/2025/xiaozhi-agentcore-gateway-mcp/</guid><description>
&lt;p>The &lt;a href="https://github.com/78/xiaozhi-esp32">Xiaozhi hardware&lt;/a> is an impressive ESP32-based AI voice assistant capable of offline wake-up, multi-language support, and cloud connectivity. But what if you want your Xiaozhi device to access multiple AI tools, APIs, and services without managing complex integrations on the hardware side? This is where Amazon Bedrock AgentCore Gateway shines as a unified aggregation layer for Model Context Protocol (MCP) servers.&lt;/p>
&lt;p>In this guide, I'll walk you through building a distributed MCP architecture that connects Xiaozhi hardware to multiple cloud services through a single WebSocket connection, leveraging AgentCore Gateway to aggregate tools ranging from simple calculators to complex RESTful APIs like real-time football data.&lt;/p>
&lt;p>&lt;a href="https://kane.mx/posts/2025/xiaozhi-agentcore-gateway-mcp/">Read More&lt;/a>&lt;/p></description></item><item><title>Technical Deconstruction of MCP Authorization: A Deep Dive into OAuth 2.1 and IETF RFC Specifications</title><link>https://kane.mx/posts/2025/mcp-authorization-oauth-rfc-deep-dive/</link><pubDate>Wed, 12 Nov 2025 00:00:00 +0000</pubDate><guid>https://kane.mx/posts/2025/mcp-authorization-oauth-rfc-deep-dive/</guid><description>
&lt;h2 id="executive-summary">Executive Summary&lt;/h2>
&lt;p>This article provides a deep-dive technical analysis of the Model Context Protocol (MCP) authorization flow. The central insight is that MCP's authorization model is not a generic application of OAuth 2.0 but a sophisticated implementation of the emerging &lt;strong>OAuth 2.1 standard&lt;/strong>.&lt;/p>
&lt;p>The MCP protocol deliberately rejects the flexible but less secure patterns of the original 2012 OAuth framework (RFC 6749). Instead, it adopts a modern, secure-by-default, and dynamic protocol stack built on three pillars:&lt;/p>
&lt;p>&lt;a href="https://kane.mx/posts/2025/mcp-authorization-oauth-rfc-deep-dive/">Read More&lt;/a>&lt;/p></description></item><item><title>Leveraging MCP Client's OAuthClientProvider for Seamless AWS AgentCore Authentication</title><link>https://kane.mx/posts/2025/use-mcp-client-oauthclientprovider-invoke-mcp-hosted-on-aws-agentcore/</link><pubDate>Thu, 04 Sep 2025 00:00:00 +0000</pubDate><guid>https://kane.mx/posts/2025/use-mcp-client-oauthclientprovider-invoke-mcp-hosted-on-aws-agentcore/</guid><description>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>Building on my &lt;a href="https://kane.mx/posts/2025/invoke-mcp-hosted-on-aws-agentcore/">previous exploration of connecting to MCP servers hosted on AWS AgentCore&lt;/a>, I've been working extensively with the native MCP SDK's OAuth Client Provider to streamline authentication workflows. The MCP SDK's built-in OAuth support has evolved significantly, offering robust solutions for both interactive user authentication and machine-to-machine (M2M) flows.&lt;/p>
&lt;p>In this follow-up article, I'll share the key improvements and special techniques I've discovered for using the MCP Client's &lt;code>OAuthClientProvider&lt;/code> with AWS AgentCore, including handling AgentCore's unique behavior with 403 responses, implementing M2M authentication flows, and leveraging automatic token refresh capabilities.&lt;/p>
&lt;p>&lt;a href="https://kane.mx/posts/2025/use-mcp-client-oauthclientprovider-invoke-mcp-hosted-on-aws-agentcore/">Read More&lt;/a>&lt;/p></description></item><item><title>How invoking remote MCP servers hosted on AWS AgentCore</title><link>https://kane.mx/posts/2025/invoke-mcp-hosted-on-aws-agentcore/</link><pubDate>Fri, 22 Aug 2025 00:00:00 +0000</pubDate><guid>https://kane.mx/posts/2025/invoke-mcp-hosted-on-aws-agentcore/</guid><description>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>Recently, I've been exploring &lt;a href="https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/">AWS AgentCore&lt;/a>'s new capability to host &lt;a href="https://modelcontextprotocol.io/">Model Context Protocol (MCP)&lt;/a> servers, and I wanted to share my experience with connecting to these remote servers as a client. The Model Context Protocol is an open standard that enables AI assistants to securely connect with external data sources and tools, and AWS AgentCore provides a managed hosting environment for these servers with built-in authentication and scaling capabilities.&lt;/p>
&lt;p>In this article, I'll walk through the process of invoking MCP servers hosted on &lt;a href="https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-mcp.html">AWS AgentCore Runtime&lt;/a> or proxied via &lt;a href="https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway.html">AgentCore Gateway&lt;/a>, covering different authentication methods, client implementation patterns, and practical considerations. What struck me most about this approach is how it bridges the gap between local development and enterprise-grade deployment while maintaining the flexibility that makes MCP so powerful.&lt;/p>
&lt;p>&lt;a href="https://kane.mx/posts/2025/invoke-mcp-hosted-on-aws-agentcore/">Read More&lt;/a>&lt;/p></description></item><item><title>Build Agentic Chatbot on AWS with Amazon Bedrock</title><link>https://kane.mx/posts/2025/build-agentic-chatbot-on-aws/</link><pubDate>Mon, 07 Apr 2025 00:00:00 +0000</pubDate><guid>https://kane.mx/posts/2025/build-agentic-chatbot-on-aws/</guid><description>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>In this article, I'll share my experience building an agentic chatbot on AWS using Amazon Bedrock, Amplify Gen2, and Amplify AI kit. This project, called Industry Assistant Portal, serves as an internal industry assistant that provides industry-specific AWS solutions guidance. The chatbot leverages Amazon Bedrock's powerful foundation models and knowledge base capabilities to deliver contextually relevant information about AWS industry solutions.&lt;/p>
&lt;p>The journey of building this chatbot taught me valuable lessons about implementing agentic AI systems that can reason, plan, and execute complex tasks while maintaining context awareness. I'll cover the architecture, implementation details, challenges faced, and key learnings from this project.&lt;/p>
&lt;p>&lt;a href="https://kane.mx/posts/2025/build-agentic-chatbot-on-aws/">Read More&lt;/a>&lt;/p></description></item></channel></rss>