Our bundle search tool was taking 12 seconds at P95. Users would ask Claude to "find the Slack integration," watch nothing happen, then ask again. Claude would make the same call twice, wait 24 seconds total, and users would close the tab thinking our service was down.
The tool worked perfectly. It just worked slowly. And in the world of AI assistants, slow might as well be broken.
Our MCP server's P95 latency was 12 seconds and users thought it was broken. Here's how we fixed it for fast agent interactions.
MCPs work like magic. Internally we use them relentlessly inside Cursor, for Linear issues in particular. We decided to ship an MCP server with MCP Bundles mainly because it made sense for us to have it on our own product for testing, before we even provided it to our customers. We built it quickly and made choices-of-least-resistance so there may be better ways to do everything. This is why we wanted to share our experience, would love to hear your feedback.
How we integrated Model Context Protocol (MCP) into our Django application—practical patterns, lessons learned, and what actually works in production.
So the headline is we decided to implement an MCP server, Model Context Protocol (MCP), in our Django application, built on top of our existing API endpoints, and get it working with Cursor and Claude 3.7.
Here's the thing about schemas: they're basically the contract your model learns from. Get them right, and your tools are easy to find, hard to break, and simple to fix when something goes wrong.
Get them wrong, and you'll spend way too much time debugging why the model keeps calling your tool incorrectly.
Learn JSON Schema patterns that make MCP tools discoverable, easy to use reliably, and help models recover from errors gracefully.
I spent two hours staring at Claude Desktop wondering why my MCP server wouldn't connect. The config looked perfect. The server ran fine standalone. But Claude showed no tools. The problem? A single trailing comma in my JSON config that Claude silently ignored. This is everything I wish the docs had told me upfront.
There are two ways to add MCP servers to Claude Desktop: .mcpb files (one-click install) or manual JSON config (full control). This guide covers both, plus the debugging steps you'll inevitably need.
My first MCP server took three hours to get working because I made every possible mistake: no logging, broke stdio with print statements, forgot to restart Claude Desktop, and wondered why nothing worked. Your first one should take 30 minutes.
This is what actually works, with the debugging steps I wish I'd known upfront.
Build and test your first MCP server in 30 minutes—with hot reload, proper logging, and real Claude Desktop integration. Learn what actually works.
For the first month or two of building agents on Claude, I spent most of my debugging time staring at hallucinated API endpoints. The model would confidently POST to URLs that didn't exist, invent function names, and produce JSON that wouldn't parse. Switching the integration over to the Model Context Protocol (MCP) didn't fix everything, but it removed the entire class of "the model made up an endpoint" failures, which were the bulk of what we were chasing.
The rest of this post is the explanation I wish I'd had on day one.
A practical introduction to the Model Context Protocol (MCP) with real examples, common pitfalls, and why it matters for building AI agents that actually work.