MCP server generator
Describe a Model Context Protocol server and download the TypeScript project that serves it with @modelcontextprotocol/sdk — tools with Zod input and output schemas, resources and resource templates, prompts, and a stdio or stateless Streamable HTTP transport. No account, nothing leaves your browser.
One file per registration
src/tools/orders_lookup.ts, src/resources/order.ts, src/prompts/summarize-order.ts — each named after the identifier the client sees, so the tree reads as the server's API and src/index.ts only assembles it.
Names are never auto-fixed
A tool named Orders Lookup is reported and left out rather than renamed, a duplicate is flagged because the SDK throws on it, and a prompt body that references an argument the prompt does not declare is caught before it ships as literal text.
Runs in the Inspector
npm run inspect opens the MCP Inspector against the built server, and the README carries the exact claude mcp add line and JSON config entry a host needs to spawn it.
How to build a custom MCP server
Four steps from an empty form to a server the MCP Inspector can connect to. Each registration is one register* call on McpServer, and the preview shows the file it lands in.
Name the server and pick a transport
The name and version go to every client in the initialize handshake. stdio for a server a host spawns; stateless Streamable HTTP for a remote one; both to decide at runtime.
Define tools
Each tool gets a snake_case name the model calls, a description it reads, Zod input fields, optional output fields that become structuredContent, and the four annotations.
Add resources and prompts
A resource is a static URI or a {variable} template whose reader receives the variables. A prompt is a reusable user message with string arguments, exposed by most hosts as /name.
Build, inspect and install
npm install && npm run build, then npm run inspect to try it in the MCP Inspector. The README carries the claude mcp add line and the JSON entry Claude Desktop and other hosts take.
What the download contains
- src/index.ts
- createServer() assembling every registration, then StdioServerTransport and/or an express app serving stateless StreamableHTTPServerTransport at POST /mcp.
- src/tools/<name>.ts
- registerTool with title, description, inputSchema, outputSchema and annotations, and a stub handler returning content plus structuredContent.
- src/resources/<name>.ts
- registerResource with a static URI, or a ResourceTemplate with list stated and the template variables destructured in the reader.
- src/prompts/<name>.ts
- registerPrompt with an argsSchema of Zod strings and the body returned as a user message.
- package.json
- @modelcontextprotocol/sdk pinned to the 1.x API, a bin entry at dist/index.js, and build, start, dev and inspect scripts.
- .env.example
- The environment variable the server checks at startup, emitted as a name only.
MCP servers, answered
The longer version is in the guide Building a custom MCP server with the TypeScript SDK. This is an unofficial tool built against the public SDK — the protocol itself, and the last word on anything below, lives at modelcontextprotocol.io.
Build the agent that calls it
Every agent generator here mounts MCP servers: the Claude Agent SDK, OpenAI Agents SDK, Google ADK, LangChain Deep Agents and Vercel Eve generators each take a stdio command or an HTTP URL — which is what this page's README hands you. And in the Nodlume workspace you draw the product all of it sits behind on a visual structure canvas.