19. Building an MCP client
Build a client that discovers server capabilities, lists primitives, invokes tools, reads resources, retrieves prompts, and handles notifications. Add connection state, timeouts, cancellation, and clear user approval points.