Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Build Model Context Protocol (MCP) servers and tools from scratch. Full-stack MCP development with TypeScript/Python, testing, deployment, and registry publishing.
.claude/skills/sickn33-mcp-tool-developer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 35% | 0% |
| case-16 | ✗→✓ | ▲ Improved | -34% | 0% |
| case-21 | ✗→✓ | ▲ Improved | 8% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 81% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 33% | 0% |
Expert at building Model Context Protocol (MCP) servers that give AI agents new capabilities. Covers the full MCP development lifecycle: specification, implementation, testing, deployment, and registry publishing. Supports both TypeScript and Python with production-ready patterns.
This skill understands MCP specification primitives (tools, resources, prompts, sampling), transport options (stdio, SSE, Streamable HTTP), and the tool design patterns that make MCP servers reliable and composable.
Identify what capabilities the server should expose:
Choose the transport:
Define input/output schemas before writing implementation:
typescript{ name: "tool_name", description: "What this tool does (visible to the LLM)", inputSchema: { type: "object", properties: { ... }, required: [ ... ] } }
Create the server with proper error handling, validation, and logging. Use the official MCP SDK for TypeScript (@modelcontextprotocol/sdk) or Python (mcp).
Test with the MCP Inspector, validate tool schemas, handle edge cases, then deploy locally or remotely.
typescriptimport { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { z } from "zod"; const server = new McpServer({ name: "my-tools", version: "1.0.0" }); server.tool("greet", "Greet someone by name", { name: z.string().describe("Person's name") }, async ({ name }) => ({ content: [{ type: "text", text: `Hello, ${name}!` }] }) ); const transport = new StdioServerTransport(); await server.connect(transport);
Wrap an external API as an MCP tool with auth, rate limiting, and error handling:
Solution: Improve tool descriptions and add examples in the description field. The LLM reads descriptions to decide how to call tools.
Solution: Add input size validation and pagination. Stream large responses instead of buffering.
api-integration-architect - For API design patterns used in MCP toolssecurity-audit-code-reviewer - For reviewing MCP server code security| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 5,627 | 4,384 | -22% | 1 | 1 | 0% | 968 | 1,750 | +81% | 0 | 0 | — |
case-02 | pass→pass | 12,800 | 11,514 | -10% | 1 | 1 | 0% | 2,233 | 2,969 | +33% | 0 | 0 | — |
case-03 | pass→pass | 13,389 | 9,297 | -31% | 1 | 1 | 0% | 2,122 | 2,593 | +22% | 0 | 0 | — |
case-04 | pass→pass | 10,421 | 11,166 | +7% | 1 | 1 | 0% | 1,756 | 2,940 | +67% | 0 | 0 | — |
case-09 | fail→fail | 14,570 | 20,247 | +39% | 1 | 1 | 0% | 2,475 | 4,282 | +73% | 0 | 0 | — |
case-05 | pass→pass | 4,468 | 4,366 | -2% | 1 | 1 | 0% | 716 | 1,788 | +150% | 0 | 0 | — |
case-06 | pass→pass | 6,066 | 8,987 | +48% | 1 | 1 | 0% | 909 | 2,608 | +187% | 0 | 0 | — |
case-07 | pass→pass | 6,283 | 6,225 | -1% | 1 | 1 | 0% | 949 | 2,053 | +116% | 0 | 0 | — |
case-08 | fail→pass | 13,823 | 13,060 | -6% | 1 | 1 | 0% | 2,361 | 3,196 | +35% | 0 | 0 | — |
case-10 | pass→pass | 14,577 | 12,811 | -12% | 1 | 1 | 0% | 2,566 | 3,482 | +36% | 0 | 0 | — |
case-11 | pass→pass | 13,675 | 14,657 | +7% | 1 | 1 | 0% | 2,224 | 3,527 | +59% | 0 | 0 | — |
case-12 | pass→pass | 17,659 | 18,905 | +7% | 1 | 1 | 0% | 3,261 | 4,624 | +42% | 0 | 0 | — |
case-13 | pass→pass | 3,247 | 3,389 | +4% | 1 | 1 | 0% | 565 | 1,538 | +172% | 0 | 0 | — |
case-14 | pass→pass | 12,970 | 9,466 | -27% | 1 | 1 | 0% | 2,239 | 2,520 | +13% | 0 | 0 | — |
case-15 | pass→pass | 3,481 | 7,221 | +107% | 1 | 1 | 0% | 525 | 2,209 | +321% | 0 | 0 | — |
case-16 | fail→pass | 13,145 | 3,264 | -75% | 1 | 1 | 0% | 2,244 | 1,486 | -34% | 0 | 0 | — |
case-17 | pass→pass | 5,460 | 3,238 | -41% | 1 | 1 | 0% | 986 | 1,598 | +62% | 0 | 0 | — |
case-18 | pass→pass | 11,710 | 10,628 | -9% | 1 | 1 | 0% | 2,039 | 2,990 | +47% | 0 | 0 | — |
case-19 | pass→pass | 8,809 | 4,885 | -45% | 1 | 1 | 0% | 1,388 | 1,738 | +25% | 0 | 0 | — |
case-20 | pass→pass | 7,975 | 8,851 | +11% | 1 | 1 | 0% | 1,339 | 2,453 | +83% | 0 | 0 | — |
case-21 | fail→pass | 14,779 | 11,927 | -19% | 1 | 1 | 0% | 3,059 | 3,299 | +8% | 0 | 0 | — |
case-22 | fail→fail | 13,459 | 20,329 | +51% | 1 | 1 | 0% | 2,343 | 5,022 | +114% | 0 | 0 | — |
case-23 | fail→fail | 22,617 | 32,504 | +44% | 1 | 1 | 0% | 3,722 | 6,768 | +82% | 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. 23 cases were attempted. The headline lift of +13 percentage points is the difference between those two pass rates over the 23 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.
Other measured skills in the registry, with their headline benchmark lift.