<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Mcp on Sauvik Biswas</title>
    <link>https://sauvikbiswas.com/tags/mcp/</link>
    <description>Recent content in Mcp on Sauvik Biswas</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 21 Jun 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://sauvikbiswas.com/tags/mcp/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Intermission: What Industry Ships and Who Gets Paid</title>
      <link>https://sauvikbiswas.com/posts/learning-oauth-2-intermission-01/</link>
      <pubDate>Sun, 21 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://sauvikbiswas.com/posts/learning-oauth-2-intermission-01/</guid>
      <description>&lt;h2 class=&#34;heading&#34; id=&#34;a-deliberate-pause&#34;&gt;&#xA;  A deliberate pause&#xA;  &lt;a class=&#34;anchor&#34; href=&#34;#a-deliberate-pause&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://sauvikbiswas.com/posts/learning-oauth-2-07/&#34;&gt;v07&lt;/a&gt; is in the repo. It consists of OpenID Connect on top of the &lt;a href=&#34;https://sauvikbiswas.com/posts/learning-oauth-2-06/&#34;&gt;v06&lt;/a&gt; split; i.e. &lt;code&gt;id_token&lt;/code&gt;, discovery, UserInfo, &lt;code&gt;nonce&lt;/code&gt;, and the &lt;code&gt;openid&lt;/code&gt; scope; while keeping v06&amp;rsquo;s opaque-or-JWT access-token modes. The runnable snapshot is &lt;a href=&#34;https://github.com/sauvikbiswas/oauth-lab/tree/main/versions/v07-openid-connect&#34; target=&#34;_blank&#34;&gt;&lt;code&gt;versions/v07-openid-connect/&lt;/code&gt;&lt;/a&gt;. In my opinion, that is a lot of ground for seven incremental snapshots.&lt;/p&gt;&#xA;&lt;p&gt;I started drafting this market-research post earlier, then paused the write-up to implement OIDC first. Almost every commercial IdP ships OAuth and OIDC together; reading vendor pricing without knowing what an &lt;code&gt;id_token&lt;/code&gt; would not be correct. With v07 done, the OAuth+OIDC spine is complete enough to read the landscape.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Splitting the Auth Server from the Resource Server</title>
      <link>https://sauvikbiswas.com/posts/learning-oauth-2-06/</link>
      <pubDate>Mon, 15 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://sauvikbiswas.com/posts/learning-oauth-2-06/</guid>
      <description>&lt;h2 class=&#34;heading&#34; id=&#34;why-v05s-single-process-is-not-the-finish-line&#34;&gt;&#xA;  Why v05&amp;rsquo;s single process is not the finish line&#xA;  &lt;a class=&#34;anchor&#34; href=&#34;#why-v05s-single-process-is-not-the-finish-line&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://sauvikbiswas.com/posts/learning-oauth-2-05/&#34;&gt;v05&lt;/a&gt; closed the refresh loop: short-lived access tokens, silent renewal via &lt;code&gt;grant_type=refresh_token&lt;/code&gt;, and a protected &lt;code&gt;GET /api/me&lt;/code&gt;. One convenience hid an architectural lie.&lt;/p&gt;&#xA;&lt;p&gt;In v05, the authorization server and resource server share one Flask process on &lt;code&gt;:25000&lt;/code&gt;. The client calls the same host for &lt;code&gt;POST /token&lt;/code&gt; and &lt;code&gt;GET /api/me&lt;/code&gt;. Token minting and token validation both read &lt;code&gt;memory.access_tokens&lt;/code&gt; in the same Python dict. That works in a toy lab; it is not how production OAuth is deployed.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
