December 4th, 2025
compelling1 reaction

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

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

 

Resources

Author

Sr. Solutions Engineer

0 comments

Leave a comment

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