LabscoMCP early access ↗
zodromonMCP SERVER

MCP Gen

Turn typed TypeScript functions into MCP tools — the schema comes from the types.

by zodromon ↗MCP Plumbing: Proxies, Registries & InspectorsCommunity

LABSCO SUMMARY

Exposing it on the network is two decisions, not one.

serve executes your local code when a tool is called, so it stays on loopback until you pass --host. Before you do, set keys: any non-empty value in MCP_GEN_API_KEYS turns bearer auth on, and a bad token is rejected with 401 before the transport, so no tool code runs. Use the environment variable rather than --api-key in production — a flag is visible to anyone who can list processes.

What it is

A generator that reads your exported TypeScript functions and derives MCP tool, resource and prompt definitions from them. The type checker produces the JSON Schema and the JSDoc produces the descriptions, so nothing is added to your code.

What you get

  • mcp-gen <file.ts> emits the tool schemas as JSON on stdout, with parameter names, types, required-ness and descriptions all taken from the code
  • mcp-gen dev opens a live playground that watches the file, renders an input form per tool, runs it in the browser and shows the result, the generated inputSchema and the raw JSON-RPC
  • mcp-gen serve runs a real MCP server; mcp-gen check snapshots the tool surface and fails a build on breaking changes
  • Resources and prompts from the same exports — a @resource tag with a URI (templated when the placeholders match parameter names), a @prompt tag for reusable templates, and an untagged function stays a tool
  • Fail-loud handling: a function that cannot be converted to valid schema is excluded and reported rather than emitted broken, and the exit code tells you which case you hit

Requirements

The npm package @zodromon/mcp-gen, version 1.2.0, installed globally or run through npx; the command is mcp-gen either way. Requires Node.js, and depends on the MCP SDK, ts-morph, typescript and jiti. serve binds 127.0.0.1 and port 3000 by default, and dev uses port 4000.

Setup effort

One command — npm install -g @zodromon/mcp-gen