<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>GitHub Copilot on Luiz Bon</title>
    <link>https://luizbon.com/tags/github-copilot/</link>
    <description>Recent content in GitHub Copilot on Luiz Bon</description>
    <generator>Hugo -- 0.165.0</generator>
    <language>en-AU</language>
    <copyright>Luiz Bon</copyright>
    <lastBuildDate>Sun, 30 Aug 2026 19:22:04 +1000</lastBuildDate>
    <atom:link href="https://luizbon.com/tags/github-copilot/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>An MCP registry isn&#39;t enough. You need a review gate too</title>
      <link>https://luizbon.com/blog/mcp-registry-needs-a-review-gate/</link>
      <pubDate>Fri, 28 Aug 2026 09:00:00 +1000</pubDate>
      <guid>https://luizbon.com/blog/mcp-registry-needs-a-review-gate/</guid>
      <description>Why an MCP registry alone is not enough: adding an agentic security review gate in CI that checks what an MCP server actually does, not just whether it is on the approved list.</description>
      <content:encoded><![CDATA[<p>I wrote about <a href="/blog/setup-mcp-registry">setting up an MCP Registry with Azure API Center</a> last year. That post covers the mechanics: register your MCP servers, expose an endpoint, point Copilot at it, restrict access to registry-only. It works, and it&rsquo;s a real control. But a registry alone answers one question: is this server on the approved list? It doesn&rsquo;t answer the harder one: should it be.</p>
<p>That second question is what an agentic security review is for.</p>
<h2 id="the-gap-a-static-registry-leaves-open">The gap a static registry leaves open</h2>
<p>A registry is a list someone maintains. Someone has to decide what goes on it, and that decision usually happens once, at onboarding time. The problem is that an MCP server&rsquo;s behaviour isn&rsquo;t fixed at onboarding. It can change with an update, expose a tool it didn&rsquo;t before, or request a data scope nobody reviewed the second time around. A registry checks membership. It doesn&rsquo;t check behaviour.</p>
<p>The obvious fix is a manual review before every server (or update) goes on the list. It doesn&rsquo;t scale. Review capacity stays flat while the number of servers and updates keeps growing, and a slow review queue is indistinguishable from a &ldquo;no&rdquo; to an engineer trying to ship this sprint. Slow the queue down enough and people stop asking, which brings back the exact shadow-tooling problem the registry was meant to solve.</p>
<h2 id="putting-the-review-in-ci-instead">Putting the review in CI instead</h2>
<p>We run the security review as a CI step, in the same pipeline that already runs tests and static analysis, triggered whenever an MCP server is added or updated. An agent checks the server&rsquo;s declared scopes against what it actually requests at runtime, looks at outbound network calls, and confirms the tool surface it exposes matches what it claims to expose. A failing review blocks the merge.</p>
<p>That timing matters more than the checks themselves. Putting the review in CI means it fires at the point a real decision gets made, a merge to a branch that will actually run, rather than at a hypothetical &ldquo;can I use this&rdquo; moment that may or may not turn into real usage. An engineer can pull a server down and try it locally without waiting on anyone. The review only has an opinion once there&rsquo;s something worth reviewing.</p>
<h2 id="what-this-costs">What this costs</h2>
<p>Nothing here is free. Someone can spend an afternoon on a server that fails review a day later, which is a worse experience than knowing up front. We accepted that trade deliberately. Wasted local experimentation is a smaller cost than either unreviewed tooling sitting in production or a review queue so slow that people route around it.</p>
<h2 id="where-this-sits-in-the-wider-conversation">Where this sits in the wider conversation</h2>
<p>Security and governance around agentic tooling dominated the conversation at RSAC 2026 and the MCP Dev Summit this year, and most of that conversation comes from platform teams at large tech companies or from security vendors. Less of it comes from engineering leaders at mid-size, regulated companies who built a governance layer because they needed one operating day to day, not because it&rsquo;s the product. That&rsquo;s the gap this post and the last one are trying to close from our side of the fence.</p>
<p>If you&rsquo;ve built something similar, or hit different failure modes putting a review gate in front of MCP adoption, I&rsquo;d like to hear about it.</p>
]]></content:encoded>
    </item>
    <item>
      <title>How to Set Up an MCP Registry for GitHub Copilot</title>
      <link>https://luizbon.com/blog/how-to-set-up-an-mcp-registry-for-github-copilot/</link>
      <pubDate>Mon, 13 Oct 2025 11:15:28 +0000</pubDate>
      <guid>https://luizbon.com/blog/how-to-set-up-an-mcp-registry-for-github-copilot/</guid>
      <description>A step-by-step guide to standing up an MCP Registry with Azure API Center so GitHub Copilot can only reach approved MCP servers.</description>
      <content:encoded><![CDATA[<h2 id="introduction">Introduction</h2>
<p>As organizations adopt AI-powered development tools like GitHub Copilot, maintaining security and governance becomes increasingly critical. The Model Context Protocol (MCP) enables Copilot to connect with external tools and data sources, but without proper controls, this connectivity can pose security risks. <strong>An MCP Registry provides enterprises with centralized control over which MCP servers and APIs their developers can access</strong>, ensuring that sensitive data and systems remain protected while still leveraging AI capabilities.</p>
<p>By implementing an MCP Registry, organizations can:</p>
<ul>
<li><strong>Control access</strong>: Restrict Copilot to only approved, vetted MCP servers</li>
<li><strong>Maintain compliance</strong>: Ensure all AI-enhanced development activities align with security policies</li>
<li><strong>Monitor usage</strong>: Track which APIs and tools are being accessed through Copilot</li>
<li><strong>Protect sensitive data</strong>: Prevent accidental exposure of proprietary APIs or internal systems</li>
</ul>
<p>In this guide, we&rsquo;ll walk through setting up an MCP Registry using Azure API Center and configuring GitHub Copilot to use it, giving your organization the security controls needed for safe AI-assisted development.</p>
<h2 id="part-1-set-up-an-mcp-registry-with-azure-api-center">Part 1: Set Up an MCP Registry with Azure API Center</h2>
<p>First, we&rsquo;ll follow the steps outlined in the <a href="https://learn.microsoft.com/en-us/azure/api-center/register-discover-mcp-server">official Microsoft documentation</a> to create an MCP-compatible API registry. This involves using Azure API Center, which can serve as a fully-featured MCP server.</p>
<h3 id="prerequisites">Prerequisites</h3>
<ul>
<li><strong>An Azure subscription</strong> with contributor-level access or higher. If you don&rsquo;t have one, you can <a href="https://azure.microsoft.com/free/">create a free account</a> which includes $200 in credits for 30 days.</li>
<li><strong>Permissions to create resources</strong> in your Azure subscription, specifically the ability to create Azure API Center instances in your chosen resource group.</li>
<li><strong>Basic familiarity with the Azure Portal</strong> and navigating Azure resource management interfaces.</li>
<li><strong>(Optional) Azure CLI installed</strong> for automation or scripting purposes. You can install it following the <a href="https://learn.microsoft.com/en-us/cli/azure/install-azure-cli">official guide</a>.</li>
</ul>
<p><strong>Estimated time to complete:</strong> 15-20 minutes</p>
<h3 id="steps">Steps</h3>
<ol>
<li>
<p><strong>Create an Azure API Center</strong>:</p>
<ul>
<li>Navigate to the Azure portal and search for &ldquo;API Center&rdquo;.</li>
<li>Click &ldquo;Create&rdquo; and fill in the required details for your new API Center instance.</li>
</ul>
</li>
<li>
<p><strong>Register MCP Servers</strong>:</p>
<ul>
<li>Once your API Center is deployed, you can start registering your existing MCP-compliant servers.</li>
</ul>
</li>
<li>
<p><strong>Enable API Center Portal</strong>:</p>
<ul>
<li>Under the &ldquo;API Center Portal&rdquo; &gt; &ldquo;Settings&rdquo; section, enable the portal. This will not only allow you to manage and view your registered MCP servers through a user-friendly interface, but also ensure that the MCP endpoint is properly configured and accessible.</li>
<li>In the Visibility section, check the option &ldquo;Allow &ldquo;anonymous&rdquo; access&rdquo;, otherwise GitHub Copilot won&rsquo;t be able to access the MCP registry.</li>
</ul>
</li>
<li>
<p><strong>Expose the MCP Endpoint</strong>:</p>
<ul>
<li>Azure API Center automatically provides an MCP-compatible endpoint. You can find this endpoint URL in the API Center&rsquo;s overview page in the Azure portal. It will look something like this: <code>https://&lt;your-api-center-name&gt;.data.&lt;location&gt;.azure-apicenter.ms/workspaces/default</code>.</li>
</ul>
</li>
</ol>
<p>By the end of this part, you will have a functional MCP server URL ready to be used by clients like GitHub Copilot.</p>
<h2 id="part-2-register-the-mcp-registry-in-github-copilot">Part 2: Register the MCP Registry in GitHub Copilot</h2>
<p>Now that you have your MCP server, you need to configure GitHub Copilot to use it. This is done by defining MCP Server access in your GitHub organization or enterprise settings, as detailed in the <a href="https://docs.github.com/en/copilot/how-tos/administer-copilot/configure-mcp-server-access">GitHub documentation</a>.</p>
<h3 id="prerequisites-1">Prerequisites</h3>
<p>Before configuring GitHub Copilot, verify you have:</p>
<ul>
<li><strong>Organization owner or enterprise administrator role</strong> in your GitHub organization. If you&rsquo;re unsure of your role, check your organization&rsquo;s &ldquo;People&rdquo; settings.</li>
<li><strong>GitHub Copilot Business or Enterprise subscription</strong> active for your organization. GitHub Copilot Individual subscriptions do not support MCP registry configuration.</li>
<li><strong>The MCP endpoint URL</strong> from Part 1 (format: <code>https://&lt;your-api-center-name&gt;.data.&lt;location&gt;.azure-apicenter.ms/workspaces/default</code>).</li>
<li><strong>Access to your GitHub organization settings</strong>, specifically the &ldquo;Copilot&rdquo; section under organization settings.</li>
</ul>
<p><strong>Note:</strong> Changes to MCP server policies may take up to 15 minutes to propagate to all users in your organization.</p>
<p><strong>Estimated time to complete:</strong> 5-10 minutes</p>
<h3 id="steps-1">Steps</h3>
<ol>
<li>
<p><strong>MCP servers policy</strong>:</p>
<ul>
<li>Setup MCP servers policy to <strong>Enabled</strong></li>
</ul>
</li>
<li>
<p><strong>MCP Registry URL</strong>:
The MCP Registry URL is an optional field.</p>
<ul>
<li>You can enter the MCP endpoint URL you obtained from your Azure API Center in Part 1.</li>
</ul>
</li>
<li>
<p><strong>Restrict MCP access to registry servers</strong>:</p>
<ul>
<li>Set this to <strong>Registry only</strong> to ensure that Copilot only accesses the APIs you have registered.</li>
</ul>
</li>
</ol>
<h2 id="conclusion">Conclusion</h2>
<p>You&rsquo;ve now successfully set up an MCP Registry using Azure API Center and integrated it with GitHub Copilot. Your developers can now leverage your organization&rsquo;s API definitions directly in their coding environment.</p>
<h3 id="next-steps">Next Steps</h3>
<ul>
<li>Register additional APIs in your API Center</li>
<li>Create documentation for your team on using the MCP-enhanced Copilot</li>
<li>Set up monitoring and analytics for API discovery usage</li>
<li>Explore advanced MCP features like custom tools and prompts</li>
</ul>
<h2 id="additional-resources">Additional Resources</h2>
<ul>
<li><a href="https://learn.microsoft.com/azure/api-center/">Azure API Center Documentation</a></li>
<li><a href="https://spec.modelcontextprotocol.io/">Model Context Protocol Specification</a></li>
<li><a href="https://docs.github.com/copilot">GitHub Copilot MCP Integration</a></li>
</ul>
]]></content:encoded>
    </item>
  </channel>
</rss>
