<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ai-Agents on Thiago Avelino</title><link>https://avelino.run/tags/ai-agents/</link><description>Recent content in Ai-Agents on Thiago Avelino</description><generator>Hugo</generator><language>en-us</language><copyright>© Avelino</copyright><lastBuildDate>Sat, 31 Oct 2026 11:11:27 -0300</lastBuildDate><atom:link href="https://avelino.run/tags/ai-agents/index.xml" rel="self" type="application/rss+xml"/><item><title>An MCP gateway has to know a read from a write</title><link>https://avelino.run/mcp-gateway-read-write/</link><pubDate>Wed, 28 Oct 2026 00:00:00 +0000</pubDate><guid>https://avelino.run/mcp-gateway-read-write/</guid><description>&lt;p&gt;In April I wrote that my MCP proxy let you say &amp;quot;engineer A gets no access to Slack tools&amp;quot;, but not &amp;quot;engineer A can read but not write&amp;quot;. I called it &amp;quot;a start, not mature access control&amp;quot;. Six months later that sentence is the part of the post I think about most, because it was the whole problem hiding in one line.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://avelino.run/mcp-governance-token-sprawl/"&gt;The governance problem MCP created without asking&lt;/a&gt; was about token sprawl. Every engineer had generated their own Sentry, Slack and Grafana tokens, and nobody could answer how many places we'd have to revoke when someone left. The fix was to put &lt;a href="https://mcp.avelino.run/guides/proxy-mode"&gt;&lt;code&gt;mcp serve&lt;/code&gt;&lt;/a&gt; in the middle. One endpoint for every AI client, service tokens on the server, one credential per person. That moved the tokens. It didn't decide what an agent is allowed to do with them, and that is the part that turns a proxy into an MCP gateway.&lt;/p&gt;</description></item></channel></rss>