<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Oauth on Daffa Abhipraya</title><link>https://blog.abhipraya.dev/tags/oauth/</link><description>Recent content in Oauth on Daffa Abhipraya</description><generator>Hugo</generator><language>en-us</language><copyright>© Daffa Abhipraya</copyright><lastBuildDate>Mon, 19 Oct 2026 00:00:00 +0700</lastBuildDate><atom:link href="https://blog.abhipraya.dev/tags/oauth/index.xml" rel="self" type="application/rss+xml"/><item><title>Run a Private MCP Server With MCPHub and a Cloudflare Access Allowlist</title><link>https://blog.abhipraya.dev/posts/private-mcp-server-mcphub-cloudflare-access/</link><pubDate>Mon, 19 Oct 2026 00:00:00 +0700</pubDate><guid>https://blog.abhipraya.dev/posts/private-mcp-server-mcphub-cloudflare-access/</guid><description>&lt;p&gt;An MCP server is a URL that lets an AI client call tools on your behalf. For tools that are only for you, or for you and a few friends, that URL should be private: the right people get in with a login, and everyone else gets turned away before they reach a single tool.&lt;/p&gt;
&lt;p&gt;This post builds that on one small server. &lt;a href="https://github.com/samanhappy/mcphub"&gt;MCPHub&lt;/a&gt; sits in front of your MCP servers and decides which tools exist at which URL. Cloudflare Access sits in front of MCPHub and decides which people can open that URL, using an allowlist of email addresses. You write no authentication code. At the end there is one more step that is easy to skip and matters a lot: making sure nobody can walk around Cloudflare.&lt;/p&gt;</description></item></channel></rss>