Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate a complete MCP server project in TypeScript with tools, resources, and proper configuration
.claude/skills/typescript-mcp-server-generator/SKILL.md| Model | Eval pass | Runs |
|---|---|---|
| gemini-3.6-flash | 100% | 16 |
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 8% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -1% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 153% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 381% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 296% | 0% |
Create a complete Model Context Protocol (MCP) server in TypeScript using the MCP TypeScript SDK v2 with the following specifications:
@modelcontextprotocol/sdk package is retired. Use the focused v2 packages:@modelcontextprotocol/server — server implementation (stdio transport via the @modelcontextprotocol/server/stdio subpath)@modelcontextprotocol/node — Node HTTP transport (NodeStreamableHTTPServerTransport), or a framework adapter: @modelcontextprotocol/express, @modelcontextprotocol/hono, @modelcontextprotocol/fastify — each adapter requires its peer framework to be installed alongside it (e.g. @modelcontextprotocol/express + express)@modelcontextprotocol/core — shared protocol schemas (import *Schema constants from here, not from sdk/types.js)zod@^4.2 — v2 requires Zod 4.2+; do not use zod@3"type": "module" (a CommonJS build is also shipped, so require() works if needed)npm init and create package.json@modelcontextprotocol/server, zod@^4.2, and the transport package — @modelcontextprotocol/node for plain Node HTTP, or a framework adapter together with its peer framework (e.g. npm install @modelcontextprotocol/express express)"type": "module" in package.jsontsx or ts-node for developmentMcpServer class from @modelcontextprotocol/server for high-level implementationNodeStreamableHTTPServerTransport from @modelcontextprotocol/nodeWebStandardStreamableHTTPServerTransport from @modelcontextprotocol/serverStdioServerTransport from @modelcontextprotocol/server/stdio@modelcontextprotocol/express, etc.) with proper middleware and error handlingHeaders/Request types; read headers with ctx.http?.req?.headers.get('x-custom')registerTool() with a config object — v1 variadic .tool() signatures are gone:typescript server.registerTool('greet', { description: 'Greet user', inputSchema: z.object({ name: z.string() }) }, async ({ name }, ctx) => { return { content: [{ type: 'text', text: Hello, ${name}! }] }; });
z.object({...})) — raw shape objects ({ name: z.string() }) are deprecatedtitle and description fieldscontent and structuredContent in resultsctx object (replaces v1 extra): ctx.mcpReq.signal, ctx.mcpReq.id, ctx.mcpReq.send(...), ctx.mcpReq.notify(...)ProtocolError, SdkError, SdkHttpError with .status) instead of v1 McpError/StreamableHTTPErrorregisterResource() with ResourceTemplate for dynamic URIsregisterPrompt() with argument schemas (same config-object style as registerTool())completable() wrapper order: completable(z.string(), callback).optional() (optional applied outside)input_required pattern)Content-Type handling: v2 rejects non-application/json POST bodiesnpx @modelcontextprotocol/codemod@latest v1-to-v2 .@mcp-codemod-error markers for the parts requiring manual judgment (transport choice, header reads, error classification)McpError + ErrorCode checks for the new error classes; HTTP status now lives on error.status, not error.codeServer.createMessage(), listRoots(), sendLoggingMessage() and the roots/sampling/logging capability fields are deprecated in v2 — avoid them in new codenpm start or npx tsx server.ts)npx @modelcontextprotocol/inspectorhttp://localhost:PORT/mcpinput_required pattern (the v2 replacement for the deprecated sampling subsystem)Generate a complete, production-ready MCP server with comprehensive documentation, type safety, and error handling.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 27,801 | 23,181 | -17% | 1 | 1 | 0% | 6,211 | 6,693 | +8% | 0 | 0 | — |
case-02 | fail→pass | 27,787 | 19,791 | -29% | 1 | 1 | 0% | 6,213 | 6,170 | -1% | 0 | 0 | — |
case-03 | fail→pass | 14,024 | 24,743 | +76% | 1 | 1 | 0% | 2,835 | 7,159 | +153% | 0 | 0 | — |
case-04 | pass→pass | 8,699 | 6,597 | -24% | 1 | 1 | 0% | 1,748 | 3,063 | +75% | 0 | 0 | — |
case-05 | fail→pass | 2,987 | 3,698 | +24% | 1 | 1 | 0% | 459 | 2,210 | +381% | 0 | 0 | — |
case-06 | fail→pass | 5,206 | 2,667 | -49% | 1 | 1 | 0% | 513 | 2,030 | +296% | 0 | 0 | — |
case-07 | fail→pass | 10,429 | 5,604 | -46% | 1 | 1 | 0% | 1,440 | 2,623 | +82% | 0 | 0 | — |
case-08 | pass→pass | 6,930 | 6,444 | -7% | 1 | 1 | 0% | 1,378 | 3,031 | +120% | 0 | 0 | — |
case-09 | fail→pass | 12,688 | 14,529 | +15% | 1 | 1 | 0% | 2,419 | 4,625 | +91% | 0 | 0 | — |
case-10 | fail→pass | 6,905 | 6,643 | -4% | 1 | 1 | 0% | 1,310 | 2,636 | +101% | 0 | 0 | — |
case-11 | pass→pass | 9,955 | 7,900 | -21% | 1 | 1 | 0% | 1,677 | 3,171 | +89% | 0 | 0 | — |
case-12 | fail→pass | 8,017 | 6,515 | -19% | 1 | 1 | 0% | 1,655 | 2,970 | +79% | 0 | 0 | — |
case-13 | fail→pass | 5,936 | 7,443 | +25% | 1 | 1 | 0% | 1,253 | 3,058 | +144% | 0 | 0 | — |
case-14 | fail→pass | 12,799 | 5,964 | -53% | 1 | 1 | 0% | 774 | 2,699 | +249% | 0 | 0 | — |
case-15 | fail→pass | 15,803 | 13,104 | -17% | 1 | 1 | 0% | 3,017 | 4,511 | +50% | 0 | 0 | — |
case-16 | fail→pass | 9,177 | 2,476 | -73% | 1 | 1 | 0% | 1,636 | 1,994 | +22% | 0 | 0 | — |
case-17 | pass→pass | 3,493 | 3,319 | -5% | 1 | 1 | 0% | 584 | 2,104 | +260% | 0 | 0 | — |
case-18 | fail→pass | 18,309 | 20,819 | +14% | 1 | 1 | 0% | 3,745 | 6,178 | +65% | 0 | 0 | — |
case-19 | fail→pass | 2,925 | 3,058 | +5% | 1 | 1 | 0% | 475 | 2,078 | +337% | 0 | 0 | — |
case-20 | pass→pass | 12,934 | 44,358 | +243% | 1 | 1 | 0% | 2,718 | 7,008 | +158% | 0 | 0 | — |
case-21 | pass→pass | 10,471 | 13,691 | +31% | 1 | 1 | 0% | 2,333 | 4,661 | +100% | 0 | 0 | — |
case-22 | pass→pass | 13,414 | 15,277 | +14% | 1 | 1 | 0% | 3,127 | 5,311 | +70% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +68 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 7/24/2026 | +23% |
Other measured skills in the registry, with their headline benchmark lift.