December 4th, 2025
compellinglikeheart4 reactions

Locking Down MCP: Create a Private Registry on Azure API Center and Enforce It in GitHub Copilot And VS Code

Two Options: Pick Your MCP Registry Adventure 🎒

Option 1: Self-hosted MCP Registry

Option 2: Azure API Center (the easy path)

What We’re Building 🚀

GitHub + Azure API Center + Vscode

Step 1: Create Your Azure API Center Instance

Note:  Please make sure that you are using data endpoint and not the portal endpoint

✅  data endpoint: https://private-mcp-registry.data.eastus.azure-apicenter.ms

🚫 portal endpoint: https://private-mcp-registry.portal.eastus.azure-apicenter.ms

API Center Overview

Step 2 : Register MCP Servers

MCP Discovery Azure API Center
API List on Azure API Center

Step 3: Enable the API Center Portal and Anonymous Access

This is where the fun began for me.

Turn on the API Center portal (so Save + publish works)

Enable anonymous access to the data API

Step 4: Find the Real MCP Registry Endpoint

curl "https://private-mcp-registry.data.eastus.azure-apicenter.ms/workspaces/default/v0.1/servers"
{
"servers": [
{
"server": {
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
"name": "msdocs-mcp-server",
"description": "AI assistant with real-time access to official Microsoft documentation.",
"version": "Original",
"remotes": [
{
"type": "sse",
"url": "https://learn.microsoft.com/api/mcp"
}
]
},
"_meta": {
"io.modelcontextprotocol.registry/official": {
"status": "active",
"createdAt": "2025-11-21T10:57:54.753206+00:00",
"updatedAt": "2025-11-21T10:58:01.1231068+00:00",
"isLatest": true
},
"x-ms-id": "b8c6e77d-f266-4a0a-a341-cc9e97c15280"
}
},
{
"server": {
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
"name": "atlassian-mcp-server",
"description": "Connect to Jira and Confluence for issue tracking and documentation.",
"version": "Original",
"remotes": [
{
"type": "sse",
"url": "https://mcp.atlassian.com/v1/sse"
}
]
},
"_meta": {
"io.modelcontextprotocol.registry/official": {
"status": "active",
"createdAt": "2025-11-21T10:58:13.1934455+00:00",
"updatedAt": "2025-11-21T10:58:18.6788839+00:00",
"isLatest": true
},
"x-ms-id": "f9894e12-64f9-49ca-84a1-d01fcd4278c8"
}
}
],
"metadata": {
"count": 2
}
}


Step 5 : Configure GitHub’s MCP Registry URL

 

GitHub MCP Settings

Behind the scenes, VS Code will now call:

https://private-mcp-registry.data.eastus.azure-apicenter.ms/workspaces/default/v0.1/servers

Step 6: Test in VS Code

vscode Disabled servers
Vscode MCP Server Disabled
Vscode MCP settings
Vscode MCP extensions
Vscode logs

Note: If you don’t see the correct registry being picked up, simply restart VS Code and try again.

Summary

Setting up a private MCP registry with Azure API Center is absolutely possible today, and once you know the correct workspace-scoped endpoint, things work smoothly with GitHub Copilot and VS Code. However, keep in mind that the Azure API Center registry endpoint is public when anonymous access is enabled. Currently, this is acceptable because Copilot integration depends on unauthenticated access. Even so, the ideal long-term approach is a private, authenticated MCP registry endpoint.

This capability isn’t supported yet, but I fully expect GitHub to introduce authentication and private-endpoint support in the near future. Until then, users can continue to rely on the public endpoint model.

Alternatively, if you need full control right now, a self-hosted MCP registry offers the most flexibility. In exchange, you’ll need to implement the v0.1 MCP Registry specification yourself and also ensure that CORS and endpoint behaviors are properly configured

Troubleshooting

Issue Solution
401 Unauthorized Verify you have the correct user role on the Azure API Center resource.
Save + Publish Button Greyed Out Enable anonymous access to the APIs
404 Not found MCP registry endpoint must include the workspaces/default segment in the URL
404 Not Found You are using data endpoint and not the portal endpoint

✅  data endpoint: https://private-mcp-registry.data.eastus.azure-apicenter.ms

🚫 portal endpoint: https://private-mcp-registry.portal.eastus.azure-apicenter.ms

 

Resources

Author

Sr. Solutions Engineer

3 comments

Leave a comment

Your email address will not be published. Required fields are marked *

Sort by :
  • Image
    W Sz 2 days ago

    Daamn, I thought I could protect the endpoint from totally public accessibility by making it reachable only through a VPN connection.

    • Image
      tjsingh85Microsoft employee Author 2 days ago

      The registry can be on a private network as long as the developer’s machine running e.g VS Code can reach it.The registry URL just needs to be reachable from wherever the IDE is running. GitHub’s servers never need to access it.