From Punishing Servers to Elevating Clients

▶ Watch (3:03)

Lowin admitted he contributed to the problem. His 2025 talk, “Your MCP Server is Bad and You Should Feel Bad,” told developers to have fewer tools, shorter descriptions, and simpler arguments. The ecosystem incentivized clients that only did basic tool calls. Lowin now argues that MCP has enough adoption. The goal should shift to pressuring clients to support the full protocol. FastMCP 3 was built to be the engine for that innovation.

Providers and Transforms: The Two Primitives

▶ Watch (5:18)

Lowin identified two core user needs. A provider takes a Python function, file, or OpenAPI spec and outputs a standard MCP component. A transform modifies the catalog of components before they reach the user, handling name collisions or replacing tools entirely. Rewriting FastMCP around these two abstractions let the team ship almost as many new features in FastMCP 3 as the entire feature list of FastMCP 2 over a year of work.

Tool Search and Code Mode as Server-Side Transforms

▶ Watch (8:00)

Claude recently started searching for tools instead of downloading all of them. Lowin realized this pattern is a transform. FastMCP 3 ships a built-in transform that exposes tool search to every client, not just Claude. Code mode, pioneered by Cloudflare, solves iteration speed by letting the agent write a small program against the server. FastMCP 3.1 added code mode as a transform, executing code in a Monty sandbox regardless of client support.

Prefab: A Python DSL for MCP Apps

▶ Watch (14:17)

Lowin released Prefab, a generative component library with over 100 components. It uses a JSON protocol that compiles to a React application based on Shadcn. The key innovation is a Python DSL using context managers to declare UI elements. A tool decorated with app=True returns a data table instead of raw records. The result is an interactive, paginated, sortable table rendered in clients like Goose that support MCP apps.

File Upload and Generative UI

▶ Watch (19:57)

Uploading files to an MCP server previously required the LLM to regurgitate every token. Lowin’s file upload provider is a drag-and-drop app added with one line of code. Files are scoped to the session and disappear when the session closes. Prefab also supports generative UI: the LLM writes Python context managers to compose components. Because context managers close tags automatically, the streamed code is syntactically valid at every moment and can be parsed into JSON instantly.

Q&A

How does Prefab compare to Streamlit and other Python front-end frameworks? Streamlit requires a running Python server, which MCP apps do not permit, so Prefab was built from scratch for the MCP apps extension spec. ▶ Watch (24:09)

Which clients support MCP apps? Claude, VS Code, Goose, MCP use, and MCP jam all support it, giving surprisingly high adoption weighted by usage. ▶ Watch (26:28)

Can the LLM push data into the app directly? The app can poll for state changes on the server, but there is no direct way for the agent to reach into the app. Lowin prefers to take the spec as given and build the developer experience around it. ▶ Watch (28:39)

Notable Quotes

I am kind of done apologizing for telling people to build worse servers. I would like people to build amazing servers. Jeremiah Lowin · ▶ Watch (22:40)

If you want to put files on an MCP server, it’s the hardest thing in the world. You basically end up using the LLM as like the most expensive copy paste operation ever. Jeremiah Lowin · ▶ Watch (20:17)

We don’t have to wait for the spec to invent file upload protocol or whatever. Here’s an app for doing it and we’ll figure it out live. Jeremiah Lowin · ▶ Watch (27:28)

Key Takeaways

  • FastMCP 3 was rewritten around two primitives: providers and transforms.
  • Prefab lets Python developers build MCP apps using context managers.
  • A file upload provider solves the hardest problem in MCP without waiting for the spec.
  • Server-side transforms like tool search and code mode work with any client.
  • Lowin calls on the ecosystem to pressure clients into supporting the full MCP protocol.

About the Speaker(s)

Jeremiah Lowin is the Founder and CEO of Prefect and the creator of FastMCP, which has become the standard framework for building with the Model Context Protocol. A founding PMC member of Apache Airflow, Jeremiah has spent over a decade at the intersection of data engineering and…