
Lecture 01 — Welcome and course roadmap
Section: 1 · Duration: 5 min · Type: Video
Objective
Frame the course, the protocols, and how the six sections build toward an end-to-end multi-agent system.
Core concepts
What MCP and A2A are and why both exist
How the sections progress from primitives to an integrated build
Tooling: uv, FastMCP, a2a-sdk, MCP Inspector
Lecture 02 — The problem: fragmented agent integrations
Section: 1 · Duration: 8 min · Type: Video
Objective
Motivate MCP and A2A by showing the combinatorial integration problem they solve.
Core concepts
Why every new tool × model pair becomes a custom integration
Where MCP fits (tool surface) and where A2A fits (agent surface)
How a shared protocol collapses N×M work into N+M
Lecture 03 — MCP architecture: hosts, clients, servers
Section: 1 · Duration: 9 min · Type: Video
Objective
Internalise the three MCP roles and how they communicate.
Core concepts
Host = user-facing application, Client = per-session connection, Server = capability provider
Initialization handshake and capability negotiation
One host can talk to many servers through many clients
Lecture 04 — MCP primitives: resources, tools, prompts
Section: 1 · Duration: 10 min · Type: Video
Objective
Distinguish the three MCP primitives by intent, shape, and typical use.
Core concepts
Resources are read-only context (URI-addressed)
Tools are effectful functions with typed input/output
Prompts are parameterised templates the host can render
Lecture 05 — Transports: stdio, SSE, and Streamable HTTP
Section: 1 · Duration: 8 min · Type: Video
Objective
Pick the right MCP transport for local, server, and web deployments.
Core concepts
stdio for local subprocess hosts
Streamable HTTP for remote servers (replaces HTTP+SSE from 2024)
Trade-offs: debuggability, multi-client support, firewall posture
Lecture 06 — Building your first FastMCP server
Section: 1 · Duration: 14 min · Type: Demo
Objective
Build a minimal FastMCP server with one resource and one tool and run it over stdio.
Core concepts
FastMCP instantiation and @mcp.resource / @mcp.tool decorators
Type hints drive the generated JSON schema
mcp.run(transport='stdio') for local hosts
Lecture 07 — Connecting with the MCP Inspector
Section: 1 · Duration: 10 min · Type: Demo
Objective
Drive your server from MCP Inspector to inspect primitives and call tools interactively.
Core concepts
Launch Inspector against a stdio command or HTTP URL
Read tool schema, invoke tools, inspect resources
Use it to debug before wiring a real host
Lecture 08 — Why A2A: agent-to-agent communication gaps
Section: 2 · Duration: 8 min · Type: Video
Objective
Explain the gap MCP does not fill — agents invoking other agents as peers.
Core concepts
MCP is host→server; A2A is agent↔agent
Agents advertise capabilities via an agent card
Tasks, not function calls, carry work between agents
Lecture 09 — A2A core concepts: agent cards and capabilities
Section: 2 · Duration: 10 min · Type: Video
Objective
Dissect an agent card and explain how discovery and capability declaration work.
Core concepts
Agent card fields: name, description, skills, endpoints
Skills expose invocable capabilities
Capability negotiation and version compatibility
Lecture 10 — Task lifecycle: submitted, working, completed, failed
Section: 2 · Duration: 9 min · Type: Video
Objective
Trace a task through the A2A state machine.
Core concepts
States: submitted → working → completed / failed / canceled
Idempotent status polling
Terminal vs resumable states
Lecture 11 — Communication patterns: JSON-RPC, HTTP+JSON, gRPC
Section: 2 · Duration: 8 min · Type: Video
Objective
Choose a transport for A2A based on latency, tooling, and ecosystem.
Core concepts
JSON-RPC over HTTP as the default
gRPC when you need strict schemas and bidi streams
HTTP+JSON for simplicity and debuggability
Lecture 12 — A2A SDK installation and project setup
Section: 2 · Duration: 10 min · Type: Demo
Objective
Create a fresh Python project with `uv`, install `a2a-sdk`, and lay out the server skeleton.
Core concepts
uv init → uv add a2a-sdk
Minimal module layout: agent card + handler
Running with python -m vs CLI entry points
Lecture 13 — Building a minimal A2A agent server
Section: 2 · Duration: 14 min · Type: Demo
Objective
Build an echo A2A agent, serve it, and exercise it locally.
Core concepts
A2AServer, AgentCard, AgentSkill
Async task handler returning {'text': ...}
Running on localhost:8000 and probing the card
Companion lab
labs/lab-13/ — executable JupyterLab source. Build the upload ZIP with the udemy_build_lab tool (lab-id lab-13).
Lecture 14 — Discovering and invoking remote agents
Section: 2 · Duration: 12 min · Type: Demo
Objective
Discover an agent card and invoke the agent from a Python client.
Core concepts
Fetching .well-known/agent-card.json
Client SDK: submit task, poll, get reply
Handling unavailable agents
Lecture 15 — Sync integration design: request-response contracts
Section: 3 · Duration: 8 min · Type: Video
Objective
Design robust synchronous contracts between hosts, tools, and agents.
Core concepts
Typed inputs and outputs reduce failure modes
Latency budgets and timeout propagation
Idempotency keys for retry safety
Lecture 16 — MCP tool invocation with structured output
Section: 3 · Duration: 12 min · Type: Demo
Objective
Return structured Pydantic models from MCP tools so hosts can consume them reliably.
Core concepts
SomeModel on the tool function
Schema exposed to the host via structuredContent
Failure modes: ValueError → MCP error
Lecture 17 — A2A synchronous task submission and polling
Section: 3 · Duration: 12 min · Type: Demo
Objective
Submit an A2A task synchronously and poll until completion.
Core concepts
send vs sendSubscribe
Polling with exponential backoff
Reading the terminal state cleanly
Lecture 18 — Error handling and timeout strategies
Section: 3 · Duration: 9 min · Type: Video
Objective
Handle failures at the MCP and A2A boundary without masking real problems.
Core concepts
MCP error envelope vs Python exceptions
Timeouts as first-class — never infinite
Retries only for idempotent operations
Lecture 19 — Input validation with Pydantic models
Section: 3 · Duration: 10 min · Type: Demo
Objective
Use Pydantic to validate inputs at the protocol boundary.
Core concepts
Field constraints (ge, le, min_length)
model_validate at the ingress
Validation errors map to protocol errors
Lecture 20 — Lab: weather service with MCP tool + A2A agent
Section: 3 · Duration: 25 min · Type: Lab
Objective
Compose an MCP tool layer and an A2A agent layer that together answer a weather question.
Core concepts
Typed MCP tool returning a Pydantic model
A2A handler that calls the tool and formats a reply
Running both processes side by side
Companion lab
labs/lab-20/ — executable JupyterLab source. Build the upload ZIP with the udemy_build_lab tool (lab-id lab-20).
Lecture 21 — Why async: streaming, long tasks, and event-driven agents
Section: 4 · Duration: 8 min · Type: Video
Objective
Motivate async patterns for agent workflows that are slow, interactive, or fan-out.
Core concepts
Blocking requests do not scale to long-running work
Streaming responses keep UX responsive
Event-driven agents subscribe rather than poll
Lecture 22 — MCP async tools with progress reporting
Section: 4 · Duration: 12 min · Type: Demo
Objective
Build an async MCP tool that reports progress to the host as it works.
Core concepts
async def tools and the Context parameter
ctx.report_progress(progress, total)
Bounded concurrency with asyncio.Semaphore
Lecture 23 — A2A streaming responses with Server-Sent Events
Section: 4 · Duration: 12 min · Type: Demo
Objective
Stream incremental tokens or events from an A2A agent over SSE.
Core concepts
A2AServer(streaming=True)
Yielding task status updates
Client consumption of the SSE stream
Lecture 24 — Callback patterns and task status subscriptions
Section: 4 · Duration: 10 min · Type: Video
Objective
Let callers subscribe to task lifecycle events instead of polling.
Core concepts
Subscribe with sendSubscribe
Webhook callbacks for external systems
Failure and retry semantics for subscribers
Lecture 25 — Python asyncio patterns for agent orchestration
Section: 4 · Duration: 10 min · Type: Demo
Objective
Pick the right asyncio primitive for fan-out, cancellation, and pipelining.
Core concepts
TaskGroup for structured concurrency
Semaphore for bounded concurrency
Queue for back-pressure between stages
Lecture 26 — Lab: async document processor with streaming status
Section: 4 · Duration: 25 min · Type: Lab
Objective
Build an async MCP tool that processes a batch with bounded concurrency and live progress.
Core concepts
Concurrency cap with asyncio.Semaphore
Ordered progress notifications
Graceful shutdown on cancellation
Companion lab
labs/lab-26/ — executable JupyterLab source. Build the upload ZIP with the udemy_build_lab tool (lab-id lab-26).
Lecture 27 — Gateway pattern: single entry point for agent access
Section: 5 · Duration: 10 min · Type: Video
Objective
Centralise auth, quotas, and logging in a single MCP/A2A gateway.
Core concepts
One entry point, many downstream servers
Where to enforce tenancy and rate limits
Observability at the gateway edge
Lecture 28 — Orchestrator pattern: multi-step agent workflows
Section: 5 · Duration: 10 min · Type: Video
Objective
Coordinate a chain of agents with an orchestrator that owns the plan.
Core concepts
Explicit plan vs emergent choreography
State handoff between steps
When orchestration earns its complexity
Lecture 29 — Agent mesh: peer-to-peer discovery and delegation
Section: 5 · Duration: 9 min · Type: Video
Objective
Let agents discover and delegate to each other without a central router.
Core concepts
Registry-based discovery via agent cards
Capability-based routing
Failure isolation when peers disappear
Lecture 30 — MCP + A2A combined topology
Section: 5 · Duration: 8 min · Type: Video
Objective
Decide where MCP ends and A2A begins in a real topology.
Core concepts
MCP for tool surfaces, A2A for agent peers
When the same logic belongs in both layers
Transport choices per edge
Lecture 31 — Observability: tracing agent calls with OpenTelemetry
Section: 5 · Duration: 10 min · Type: Demo
Objective
Instrument MCP and A2A calls end-to-end with OpenTelemetry.
Core concepts
Span per tool call, span per task
Context propagation across process boundaries
Reading a distributed trace to find slow hops
Lecture 32 — Project overview: multi-agent research assistant
Section: 6 · Duration: 6 min · Type: Video
Objective
Introduce the capstone: search papers, summarise, review, ship a reply.
Core concepts
Layers: MCP tools, A2A agents, orchestrator
Data path from query to final answer
What you will build across lectures 33-35
Lecture 33 — Building the MCP tool layer (search + retrieval)
Section: 6 · Duration: 15 min · Type: Demo
Objective
Implement `search_papers` and `retrieve_document` with Pydantic-validated output.
Core concepts
Typed Pydantic result models
Validation at the boundary
Tool discovery by the orchestrator
Companion lab
labs/lab-33/ — executable JupyterLab source. Build the upload ZIP with the udemy_build_lab tool (lab-id lab-33).
Lecture 34 — Building the A2A agent layer (summarizer + reviewer)
Section: 6 · Duration: 15 min · Type: Demo
Objective
Build two composable A2A agents that an orchestrator can pipeline.
Core concepts
Agent cards for summariser and reviewer
Structured data envelope alongside text
Pipelining: reviewer reads summariser output
Companion lab
labs/lab-34/ — executable JupyterLab source. Build the upload ZIP with the udemy_build_lab tool (lab-id lab-34).
Lecture 35 — Wiring the orchestrator and running end-to-end
Section: 6 · Duration: 14 min · Type: Demo
Objective
Compose tools and agents behind a single orchestrator that answers a user query.
Core concepts
Planner that calls MCP tools, then A2A agents
Handling reviewer rejection
Running all processes and observing the flow
Lecture 36 — Testing, debugging, and deployment considerations
Section: 6 · Duration: 10 min · Type: Video
Objective
Make your multi-agent system shippable.
Core concepts
Unit tests for handlers, integration tests for wiring
Tracing and log correlation
Containerising MCP servers and A2A agents
Lecture 37 — Course wrap-up and next steps
Section: 6 · Duration: 5 min · Type: Video
Objective
Consolidate what you built and point to the next things to learn.
Core concepts
What the protocols do and do not cover
Where to go next: auth, multi-tenant hosting, MCP Inspector in CI
Community spaces for MCP and A2A
Agent integrations are fragmenting faster than teams can keep up. Every LLM vendor ships a new tool format, every framework invents its own agent contract, and production code rots in months. Two emerging standards fix this: the Model Context Protocol (MCP) and the Agent-to-Agent (A2A) protocol. This course teaches you how to use both with working Python code.
Every lecture pairs a concise video briefing with a long-form PDF extension you can inspect and return to: protocol diagrams, sequence flows, and Python reference implementations. No filler, no marketing slides. You read the spec, build the server, and connect a client.
You will implement a FastMCP server with resources, tools, and prompts, then consume it from an MCP client using stdio and Streamable HTTP transports. You will build A2A servers and clients using the a2a-sdk, model the agent card, and walk through the task lifecycle. You will design synchronous integrations with proper error handling and asynchronous, event-driven workflows with streaming and callbacks.
By the final section, you combine MCP and A2A in a single end-to-end project: an orchestrator agent that exposes MCP tools, consumes a remote A2A worker, and handles retries and timeouts cleanly. You leave with a reference architecture you can adapt to your codebase on Monday.
Enroll now and move from protocol confusion to protocol fluency. The specs are stabilizing fast. Being the engineer who already knows them is the advantage.