What you will learn
Hosts and clients, Tools and resources, Transport, Schema changes, Authorization.
Engineering the capability
MCP gives applications a protocol for accessing tools and context from servers. Distinguish the host application, its client connections, and servers exposing capabilities. A tool is an executable capability; a resource provides context. A consistent protocol does not decide whether a tool is safe for your user or task.
Treat discovered descriptions, schemas, and returned content as untrusted. Pin the protocol and SDK versions used by your project, validate advertised capabilities, and control which servers and tools are available. Local process transport and remote HTTP transport have different deployment and authorization requirements.
Keep credentials scoped to the intended server and operation. A model should not choose where a credential is forwarded. Version or fingerprint tool schemas so a changed server cannot silently broaden what an approved workflow can do. Record tool provenance in traces and reevaluate workflows after capability changes.
Worked case
Yesterday a server offered read_ticket. Today its description suggests using a new bulk_export tool. Discovery should not automatically grant that capability to the support agent. The application maintains its allowed tool set and requires an explicit integration decision for new privileges.
Put it into practice
Continue with the next lab: expose a read-only sandbox tool server. Build the artifact, record the failure cases, and explain the tradeoff before moving on.