MCP 2026-07-28 one lesson per page
23 lessons
EcosystemUse Cases & Ecosystem · 20%Track 1 · 9 / 9

The ecosystem: where servers come from and how MCP grows

Servers are found through a registry, built with SDKs, extended with opt-in extensions, and changed through SEPs. And MCP is not the only protocol: it pairs with A2A.

Listen to this lessonAudio overview in Gemini Notebook · about 15–25 min · opens in a new tab

Picking a server for your team

Your team wants an issue-tracker MCP server. In a registry-backed catalog you find two candidates: io.github.acme-labs/tracker and com.acme/tracker.

The namespace is a trust signal: the second one proves control of acme.com through DNS, so it's from the company itself. The registry stores only metadata; the code comes from npm, and security scanning is up to package registries and aggregators, so you still review it.

You call server/discover and see io.modelcontextprotocol/ui under extensions: it can render interactive views in hosts that support MCP Apps, and falls back to plain results where they don't. A week later you want a feature the protocol lacks. You don't fork it: you write a SEP, find a maintainer to sponsor it, and prototype it.

  • MCP Registry (preview): the official metadata repository for publicly accessible servers. It hosts metadata, not code, is meant for downstream aggregators, and exposes an API that sub-registries can implement. Namespaces: io.github.<user>/* via GitHub login, com.example/* via DNS TXT or an HTTP well-known file. Published with mcp-publisher from a server.json.
  • SDKs: Tier 1 TypeScript, Python, C#, Go, Rust, Ruby; Tier 2 Java; Tier 3 Swift, PHP, Kotlin.
  • Extensions: identified as {vendor-prefix}/{name}; official ones use io.modelcontextprotocol: ui (MCP Apps), tasks, skills, and auth extensions for client credentials and enterprise-managed authorization. Always disabled by default; clients opt in per request, servers advertise in server/discover; if only one side supports one, fall back to core or reject.
  • SEPs (Specification Enhancement Proposals): Standards Track, Informational, Process, Extensions Track. Each needs a sponsor (a maintainer); acceptance needs a prototype, final needs a reference implementation. A SEP with no sponsor after six months goes dormant.
  • Governance: MCP was donated to the Agentic AI Foundation (a Linux Foundation directed fund) in December 2025; the maintainers keep technical direction. Features follow the Active → Deprecated → Removed lifecycle.
  • MCP vs A2A: MCP standardizes agent-to-tool/context connections; A2A standardizes agent-to-agent discovery and delegation. "MCP gives each agent depth, and A2A gives your system reach."

Use-case questions on the exam are usually "which piece solves this?": discovering servers (registry), adding UI (Apps extension), long jobs (Tasks), talking to another company's agent (A2A), changing the protocol (SEP). Knowing the map is most of the answer.

A registry entry

Exampleserver.json
{  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",  "name": "io.github.my-username/weather",  "description": "An MCP server for weather information.",  "repository": {    "url": "https://github.com/my-username/mcp-weather-server",    "source": "github"  },  "version": "1.0.0",  "packages": [    {      "registryType": "npm",      "identifier": "@my-username/mcp-weather-server",      "version": "1.0.0",      "transport": {        "type": "stdio"      }    }  ]}

Verbatim from the registry quickstart (environment variables trimmed). The io.github.my-username namespace is proven by logging in with that GitHub account.

Opting in to an extension

Exampleclient capabilities on a request
{  "capabilities": {    "roots": {},    "extensions": {      "io.modelcontextprotocol/ui": {        "mimeTypes": ["text/html;profile=mcp-app"]      }    }  }}

Verbatim from the versioning page. An empty settings object means "supported, no extra settings".

  • Treating registry listing as a security review. It isn't: the registry hosts metadata, and scanning is delegated.
  • Assuming an extension is on because the server supports it: both sides must opt in, or you get core behaviour.
  • Using MCP for agent-to-agent delegation when the other side is an independent, opaque agent: that's A2A's job.
First time here? Set up the test helper (once per terminal)
ShellSetup
# 1. In a SECOND terminal, start the reference server (Node 18+, no dependencies)curl -sO https://www.diegozuluaga.dev/mcpa/reference-server.mjsnode reference-server.mjs                 # http://localhost:3000/mcp, logs appear here # 2. In THIS terminal, define the helper every test uses (bash or zsh)export MCP=http://localhost:3000/mcpMETA='"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{}}'mcp() {  # usage: mcp <method> '<json body>' [extra curl args...]  curl -sS -N "$MCP" \    -H 'Content-Type: application/json' \    -H 'Accept: application/json, text/event-stream' \    -H 'MCP-Protocol-Version: 2026-07-28' \    -H "Authorization: Bearer ${MCP_USER:-alice}" \    -H "Mcp-Method: $1" "${@:3}" -d "$2" \    -w '\nHTTP %{http_code}\n'}# Demo auth: the reference server treats the bearer token as the user's name.# Prefix a command with MCP_USER=bob to act as someone else.
ShellTests
# 1. Which extensions does a server support? (here: the reference server)mcp server/discover '{"jsonrpc":"2.0","id":1,"method":"server/discover","params":{'"$META"'}}' | grep -o '"extensions":{[^}]*}}' # 2. Browse the public registry (preview API; may change)curl -s "https://registry.modelcontextprotocol.io/v0.1/servers?limit=3" | head -c 600; echo

Answer all 4 correctly and this lesson is marked as learned.

Q1What does the MCP Registry host?

Q2A server advertises io.modelcontextprotocol/ui, but the client's request doesn't list it. What happens?

Q3Your agent needs to delegate a task to a partner company's independent agent. Which protocol fits?

Q4Who must back a SEP for it to move forward?

Feedback or a correction? Email diego [at] diegozuluaga [dot] dev or open an issue on GitHub.

Content CC BY 4.0 · Code MIT

Tip: ← and → move between lessons. Hover any heading and press # to copy a link to it.