SDK Part 2: Simple and testable

I love to understand how things work. I especially love when I peel back the curtain and have that “aha” moment. When the core ideas become clear and the implementation lets them shine—that’s delightful. Client sessions in SDKs are like plumbing for most engineers—boring but essential. You just want to know it’s there when you need it, that the pipes go where they should, and that it’s reliable. You shouldn’t have to invest much energy in understanding what’s going on. ...

June 22, 2025 · 5 min · 1031 words · davenpi

SDK Part 1: Keeping it Pythonic

Model Context Protocol (MCP) is great. Usage has exploded since its release, and I jumped in—reading the spec and contributing to the growing open source ecosystem. Once I dug into the Python SDK, I struggled to map the spec’s clean concepts to the implementation. Take an InitializeRequest. The spec gives us this TypeScript: 1 2 3 4 5 6 7 8 export interface InitializeRequest extends Request { method: "initialize"; params: { protocolVersion: string; capabilities: ClientCapabilities; clientInfo: Implementation; }; } To understand the equivalent Python code, I had to trace through multiple abstraction layers: ...

June 9, 2025 · 2 min · 407 words · davenpi