MCP
Self-hostable MCP servers — generate with the Speakeasy CLI

David Adler
July 30, 2025 - 4 min read
Gram by Speakeasy
But for organizations that prefer a bare-metal approach, we’re excited to introduce the new self-hostable MCP target. This dedicated target creates an MCP server code repository, which can be deployed as a remote server or used locally. It’s a perfect fit for those who want total control over the internals of their MCP servers.
A fully featured MCP server
The new self-hostable MCP target is an evolution of the SDK-bundled version. By creating a dedicated target, more MCP-specific features have been added, for a more fully featured server.
Automatic DXT generation
Think of DXT files as the “app store for AI tools” — but instead of downloading apps, you’re installing powerful MCP servers that extend what Claude Desktop and other MCP clients can do.
Before DXT, connecting Claude to external tools meant manually installing Node.js or Python and editing JSON configuration files. While not complicated for developers, this was imposing for users without a technical background.
With DXT support, it’s literally one-click installation with no computer science knowledge needed:
- Download a
.dxt
file - Double-click to install
That’s it — no terminal commands, no JSON configuration files to edit. The automatic DXT generation creates a packaged Desktop Extension alongside your MCP server, making distribution to non-technical users seamless.
Built-in Cloudflare deployment
No big company has invested in MCP infrastructure like Cloudflare. The result is that Cloudflare Workers are the infrastructure of choice for remote MCP servers, which is why deploying to Workers is now a native feature of our MCP server generator.
The built-in Cloudflare deployment makes getting your MCP server running on Workers incredibly simple. Just specify your Worker’s URL and we’ll create the necessary configuration so that deploying your server is a single command:
This integration leverages Cloudflare’s robust MCP infrastructure investment, giving your MCP server access to their global edge network with minimal setup effort.
Streamlined OAuth setup
The MCP specification recommends OAuth 2.1 with Dynamic Client Registration (DCR) for seamless authentication. While some APIs support DCR, the vast majority don’t.
Our streamlined OAuth setup makes setting up authentication for your MCP server easy, regardless of your API’s auth set up:
- For APIs with DCR support: Direct integration with your existing OAuth provider
- For APIs without DCR: Automatic OAuth proxy generation that bridges the gap between MCP requirements and your provider’s capabilities
You get production-ready authentication without building custom OAuth infrastructure from scratch.
Moving on from bundled MCP
If you’re currently using MCP servers generated as part of TypeScript SDK generation, migrating to standalone generation is straightforward:
-
Run standalone generation: Use the Speakeasy CLI to generate a standalone MCP server.
-
Update configurations: Remove MCP server generation from your TypeScript SDK by editing the
gen.yaml
file. -
Distribute easily: Use your MCP server locally with DXT or deploy on Cloudflare for a remote server experience.
For detailed documentation on customization, deployment, and advanced features, visit our standalone MCP documentation.
The benefits of unbundling
Human developers (who use SDKs) and AI agents (who use MCP) have different needs — so bundling them together into one package means that suboptimal trade-offs have to be made between them.
By moving MCP server generation into its own dedicated target, we can optimize for each audience individually. Here are some examples of how the standalone MCP target delivers better performance:
-
Agent-friendly naming conventions: When MCP tools are bundled in the TypeScript SDK, field names get converted to camelCase per TypeScript convention. However, this confuses LLMs since tool descriptions reference the original field names. For example, an API field called
user_name
would becomeuserName
in the TypeScript SDK, but tool descriptions would expect the originaluser_name
. The standalone MCP server maintains the original naming format, avoiding this confusion. -
Richer data descriptions: Every property gets detailed Zod descriptions that help AI understand your data model. Including these in an SDK would bloat the bundle unnecessarily, but they’re essential for AI tools.
-
Smaller SDK bundles: Removing MCP functionality from the TypeScript SDK means reduced bundle size for web developers.
-
Simplified configuration: With MCP, there’s less need to worry about style choices such as HTTP response format or union syntax that matter more for human developers.
The future of API-AI integration is here, and it’s built for independence, optimization, and production scale. Try standalone MCP generation today and see the difference dedicated tooling makes.