Your MCP Server is Bad (and you should feel bad) - Jeremiah Lowin, Prefect
By AI Engineer
Key Concepts
- Agentic Product Design: Designing interfaces specifically for AI agents, recognizing their unique limitations and strengths compared to human users.
- MCP (Micro-Coordination Protocol) & fastMCP: A standard and popular framework for connecting LLMs to tools and data, respectively.
- Prioritizing Agent Limitations: Focusing on mitigating challenges related to discovery, iteration, and context windows when designing MCP servers.
- Client Control: A critical factor influencing documentation and design choices for MCP servers.
- Observability: MCP servers offer superior observability into tool call failures compared to many agent frameworks.
- Emerging Techniques: Exploration of features like asynchronous tasks (SEP 1686), elicitation, and code mode to enhance MCP functionality.
The Rise of Agentic Product Design & MCP Fundamentals
The discussion begins with the observation that Micro-Coordination Protocol (MCP) has gained significant traction, with fastMCP becoming the de facto standard for building servers, evidenced by 1.5 million downloads in a single day. This success necessitates a shift in thinking – “agentic product design” – where MCP servers are treated as interfaces for agents, not humans. This is crucial because agents and humans interact with interfaces differently. Humans excel at discovery and rapid iteration, while agents repeatedly rediscover information (consuming tokens each time) and iterate slowly and expensively, sending entire histories with each attempt. Furthermore, humans possess broad, long-term memory, whereas agents are constrained by limited context windows (around 200,000 tokens). The speaker strongly refutes the notion that if a human can use an API, an AI should be able to, emphasizing that agents deserve interfaces optimized for their specific limitations. The proliferation of poorly designed MCP servers, often simple wrappers around REST APIs, highlights the need for guidance on building better ones. The core principle is to focus on outcomes rather than operations and to curate a minimal set of agent-optimized tools.
Practical Considerations for MCP Server Design
A central theme throughout the discussion is the importance of understanding whether you control the client interacting with your MCP server. If client control exists, there’s flexibility in documentation, tailoring it to anticipated workflows and prioritizing frequently used functions. However, if you don’t control the client, comprehensive documentation is essential, assuming the “worst possible client” scenario. Servers should document everything in their docstrings, and while the instructions field offers additional documentation, its reliability is currently inconsistent.
Several emerging features and considerations were discussed. SEP 1686 introduces asynchronous background tasks, an opt-in feature initiated by the client to avoid breaking changes. Server designers must determine task suitability for backgrounding, leveraging Python’s framework. Elicitation, a formal MCP request for additional input mid-execution, is a powerful but underutilized feature, particularly useful for approvals. However, limited client support currently hinders its widespread adoption.
Observability, Framework Integration & Emerging Techniques
The speaker argues that MCP servers provide superior observability into tool call failures compared to many agent frameworks, which often prioritize preventing failures over detailed reporting. This improved observability will become increasingly valuable as the MCP ecosystem matures, providing an automatic infrastructure for debugging and diagnosis, even for local development.
“Code mode,” pioneered by Cloudflare and Entropic, involves using LLMs to generate code that calls MCP tools sequentially. The speaker’s team developed a FastMCP extension supporting code mode, initially as an experiment, and is now considering integrating it into the main FastMCP CLI. This highlights ongoing research into optimizing tool calls and addressing the security challenges associated with code execution.
Key Takeaways & Future Outlook
The discussion underscores the importance of treating MCP server development as user interface design, prioritizing the needs and limitations of AI agents. Client control is paramount in design decisions, and prioritizing observability will become a key differentiator for MCP servers. While features like asynchronous tasks, elicitation, and code mode are still evolving, they represent promising avenues for enhancing MCP functionality and addressing the unique challenges of agentic interactions. The overall message is a call for thoughtful design, ruthless curation, and a continued focus on optimizing interfaces for the specific requirements of AI agents.
Chat with this Video
AI-PoweredHi! I can answer questions about this video "Your MCP Server is Bad (and you should feel bad) - Jeremiah Lowin, Prefect". What would you like to know?