In a nutshell
MCP stands for โModel Context Protocolโ โ a protocol for providing additional context and capabilities to AI models.
How it works
flowchart LR
subgraph Host["๐ค AI Host (VS Code / Copilot CLI, etc.)"]
APP[Copilot]
CL1[MCP Client]
CL2[MCP Client]
CL3[MCP Client]
CL4[MCP Client]
CL5[MCP Client]
end
subgraph MCP["๐ MCP Layer (1 Client โ 1 Server)"]
SLs[Work IQ MCP Server]
JRs[GitHub MCP Server]
FSs[Playwright MCP Server]
PWs[Context7 MCP Server]
APIs[Salesforce MCP Server]
end
subgraph Tools["๐ ๏ธ External Tools"]
SL[Work IQ]
JR[GitHub]
FS[Playwright]
PW[Context7]
API[Salesforce]
end
APP --- CL1
APP --- CL2
APP --- CL3
APP --- CL4
APP --- CL5
CL1 <-->|stdio| SLs
CL2 <-->|HTTP| JRs
CL3 <-->|stdio| FSs
CL4 <-->|stdio| PWs
CL5 <-->|stdio| APIs
SLs <-->|API| SL
JRs <-->|API| JR
FSs <-->|API| FS
PWs <-->|API| PW
APIs <-->|API| API
classDef host fill:#0a0e27,stroke:#00f0ff,color:#00f0ff,stroke-width:2px
classDef proto fill:#1a0a2e,stroke:#ffb000,color:#ffb000,stroke-width:2px
classDef tool fill:#0a1a14,stroke:#9bbc0f,color:#9bbc0f,stroke-width:2px
class APP,CL1,CL2,CL3,CL4,CL5 host
class SLs,JRs,FSs,PWs,APIs proto
class SL,JR,FS,PW,API tool
Why does it matter?
Three values MCP brings:
- ๐งฉ Extensibility: Make Copilot a single entry point for operating any external tool.
- Read and write requirements (Jira)
- Create designs (Figma)
- Generate and print 3D designs (Blender + 3D printer)
- Check and edit email and calendar (Work IQ)
- Connect to internal databases for analysis
- ๐ Workflow integration: No more custom glue code between individual tools โ Copilot acts as a hub spanning multiple systems.
- ๐ Broad ecosystem support: MCP is an open protocol that is rapidly becoming the de facto standard. AI assistants, development tools like Visual Studio, and many other applications already support MCP โ build once, connect anywhere. Perfectly suited for coding integrations.
Where does it run?
There are two ways to run an MCP server.
- With the stdio method, VS Code launches the MCP server as a child process on your local machine.
- With the HTTP method (SSE / streamable-http), the MCP server runs in the cloud or on a remote server, and VS Code simply connects as a client.
Choose based on your use case and security requirements.
npm execConfiguration in VS Code
When installing an MCP server from the Marketplace in VS Code, you can choose between two scopes:
Installโ Added to your personal settings file (User Settings)Install Workspaceโ Added to the repository settings file (.vscode/mcp.json)
.vscode/mcp.json
โธ Shared with repo
Included in Git, so the whole team shares the same MCP setup. When a member clones the repo, VS Code asks "Would you like to enable it?".
User Settings
โธ Your machine only
For personal use or when you want the same setup across all projects. Not included in Git.
- ๐ Mac๏ผ
~/.config/Code/User/settings.json - ๐ช Windows๏ผ
%APPDATA%\Code\User\settings.json
Getting started with Copilot CLI
# Add an MCP server
copilot mcp add <server-name>
# List existing servers
copilot mcp list
The GitHub official MCP server is connected out of the box. AI can operate Issues, PRs, Actions, and Code search just like running gh commands.
modelcontextprotocol/registry hosts many official and community-built servers (filesystem / postgres / slack / puppeteer / playwright / Figmaโฆ).
What is the MCP Registry
The MCP Registry is an open registry that lists MCP servers from across the ecosystem โ and you can stand up your own registry too.
| Aspect | ๐ MCP Registry | ๐ GitHub MCP Registry |
|---|---|---|
| Maintainer | MCP Working Group | GitHub |
| Contents | All official + community servers (~13,238 as of 2026-06-23) | A curated list (~100) |
| Default in | โ | VS Code โ & more |
| URL | registry.modelcontextprotocol.io โ | github.com/mcp โ |
๐ ๏ธ Build your own registry to extend or narrow the list of allowed servers. ๐ก๏ธ Enforce it at the organization / enterprise level (allowlist enforcement).
Build your own MCP Registry
Two hosting options โ both can be consumed and enforced from VS Code / Org / Enterprise (โ ๏ธ note: enforcement applies only to the userโs active (currently used) license).
Self-hosted
โธ Full control
Deploy the OSS modelcontextprotocol/registry โ (a Go service) on your own infra. Officially maintained by the MCP Working Group.
Azure API Center
โธ Managed
Register & publish MCP servers in Azure API Center โ โ no infra to manage.
Point clients at it
- GitHub Org / Enterprise: configure the registry โ and enforce via allowlist โ
Keeping internal servers private
The catalog is public โ what you protect is the source (distribution). A server registered in Azure API Center is visible to anyone who can reach the catalog, but only its metadata is exposed. The actual download / connection is gated separately.
flowchart LR
DEV["๐ค Developer<br/>VS Code / Copilot<br/>opens @mcp"]
AC["๐ Azure API Center<br/>catalog = public<br/>metadata only (no code)"]
STDIO["โ stdio โ ๐ private registry<br/>GitHub Packages / GHCR / Azure Artifacts<br/>auth token required"]
HTTP["โ HTTP โ ๐ข internal net / VPN<br/>unreachable from public internet<br/>SSO / network auth in front"]
EMP1["โ
Employee pulls"]
OUT1["โ Outsider โ 401"]
EMP2["โ
Employee connects"]
OUT2["โ Outsider โ blocked"]
DEV --> AC
AC -->|package ref| STDIO
AC -->|remote URL| HTTP
STDIO --> EMP1
STDIO --> OUT1
HTTP --> EMP2
HTTP --> OUT2
classDef dev fill:#0a0e27,stroke:#00f0ff,color:#00f0ff,stroke-width:2px
classDef cat fill:#1a0a2e,stroke:#ffb000,color:#ffb000,stroke-width:2px
classDef stdio fill:#0a0e27,stroke:#00f0ff,color:#00f0ff,stroke-width:2px
classDef http fill:#1a0a2e,stroke:#ff2e97,color:#ff2e97,stroke-width:2px
classDef ok fill:#0a1a14,stroke:#9bbc0f,color:#9bbc0f,stroke-width:2px
classDef deny fill:#2a0a0a,stroke:#ff5555,color:#ff5555,stroke-width:2px
class DEV dev
class AC cat
class STDIO stdio
class HTTP http
class EMP1,EMP2 ok
class OUT1,OUT2 deny
โ The catalog only points to the source. Protect the source โ only authenticated employees can run it.
Trying an MCP Registry locally
๐งช These are personal notes, not a manual. An AI summary of the flow that actually worked for me โ just to give a rough idea. Your mileage will vary.
The flow to stand up a registry locally, expose it over HTTPS, connect it to my Org, and seed it from the GitHub MCP Registry.
- Fork & clone โ
gh repo fork modelcontextprotocol/registry --clone - Run in Docker โ
docker compose upโ API onlocalhost:8080(initial DB has only the demo seed) - HTTPS tunnel โ
cloudflared tunnel --url http://localhost:8080โhttps://<random>.trycloudflare.com - Connect โ set the tunnel URL as MCP Registry URL (no
/v0.1/serverssuffix โ Copilot appends it). Org: Settings โ Copilot โ Policies โ MCP; Enterprise: AI controls โ MCP - Reload VS Code & verify โ Developer: Reload Window โ
@mcpshows only the servers from my registry. OpenCmd + ,(Settings) and confirm the MCP settings carry a โmanaged by your organizationโ badge (= the Org policy is applied) - Seed from the GitHub Registry โ
go run scripts/mirror_data/fetch_production_data.go+load_production_data.go(source:https://registry.modelcontextprotocol.io/v0/servers)
โ ๏ธ Make sure VS Code uses this Orgโs Copilot license (a different account / personal plan wonโt get the Org policy). The
mirror_datascripts are as-is โ filter them down to the servers you actually want to allow.