I spent two months going full speed on the MCP SDK. I learned a bunch but, by the end, I was running out of steam. The protocol is going to keep growing and I’ll happily follow along, but it’s time for me to use my energy elsewhere.

What I Built

The SDK work pushed me into areas I’d never explored before. For example, I built an OAuth 2.1 client from scratch. That meant learning to navigate internet protocol RFCs. There’s something satisfying about decoding that formal language into working code. It’s so empowering.

There were also design challenges that pushed me. For example, I decided to make client connections 1:many by default even though the MCP spec explicitly assumes clients are 1:1. Aiming for the higher target (1:many instead of 1:1) forced me to think about what falls into the YAGNI bucket vs. what’s a fundamental architectural choice that’ll be hard to undo later. The work also reinforced good habits around code quality and testing. Quality compounds in unpredictable ways. For example, tests don’t just catch bugs—they reveal when your design is wrong!

What I Learned

This project taught me I love low-level infrastructure work and making complex systems feel simple to use. I got better at Python, learned about developer experience, and discovered how much joy there is in writing clean, testable code. I also rubbed up against some of the rough edges (types + async) of Python in a more visceral way!

More importantly, it showed me what I want to do next. Building tools for AI systems made me curious about getting closer to the models themselves—understanding how they learn and what infrastructure they need to thrive.

What’s Next

We’ve got this incredible intelligence in the world now. We want to keep it busy thinking and exploring new environments. I’ve always been fascinated by RL—the simplicity of learning from experience, the intuitive state-action-reward loop, the famous DeepMind results—and there are exciting infrastructure challenges in the LLM + RL space. How do we build systems to run inference on large models, play out the actions in novel environments, update the model weights, and keep resource utilization high while all this data is flowing around? It’s an exciting design challenge that I want to focus my attention on. Plus, I have a good excuse to learn Rust (loving it so far)!

The SDK work was a great foundation. Now I’m ready to build on it and dive deeper into the research and model production side of AI.

Follow along on my GitHub. As always, I’d love to connect if any of this resonates with you.