{"id":"609665cd-c1c0-482d-871f-258509a136e8","shortId":"uXwYVk","kind":"skill","title":"mcp-tool-developer","tagline":"Build Model Context Protocol (MCP) servers and tools from scratch. Full-stack MCP development with TypeScript/Python, testing, deployment, and registry publishing.","description":"# MCP Tool Developer\n\n## Overview\n\nExpert 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.\n\nThis 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.\n\n## When to Use This Skill\n\n- Use when building a new MCP server from scratch\n- Use when wrapping an existing API as an MCP tool\n- Use when debugging MCP server issues\n- Use when designing the tool schema for an MCP server\n- Use when publishing an MCP server to a registry\n\n## How It Works\n\n### Step 1: Define the MCP Server Scope\n\nIdentify what capabilities the server should expose:\n- **Tools** - Functions the LLM can call (primary use case)\n- **Resources** - Data the LLM can read (files, APIs, databases)\n- **Prompts** - Reusable prompt templates\n\nChoose the transport:\n- **stdio** - For local CLI tools (Claude Code, Cursor)\n- **SSE (Server-Sent Events)** - For remote/hosted tools\n- **Streamable HTTP** - New in MCP spec for modern deployments\n\n### Step 2: Design the Tool Schema\n\nDefine input/output schemas before writing implementation:\n\n```typescript\n{\n  name: \"tool_name\",\n  description: \"What this tool does (visible to the LLM)\",\n  inputSchema: {\n    type: \"object\",\n    properties: { ... },\n    required: [ ... ]\n  }\n}\n```\n\n### Step 3: Implement the Server\n\nCreate the server with proper error handling, validation, and logging. Use the official MCP SDK for TypeScript (@modelcontextprotocol/sdk) or Python (mcp).\n\n### Step 4: Test and Deploy\n\nTest with the MCP Inspector, validate tool schemas, handle edge cases, then deploy locally or remotely.\n\n## Examples\n\n### Example 1: TypeScript MCP Server\n\n```typescript\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { z } from \"zod\";\n\nconst server = new McpServer({ name: \"my-tools\", version: \"1.0.0\" });\n\nserver.tool(\"greet\", \"Greet someone by name\",\n  { name: z.string().describe(\"Person's name\") },\n  async ({ name }) => ({ content: [{ type: \"text\", text: `Hello, ${name}!` }] })\n);\n\nconst transport = new StdioServerTransport();\nawait server.connect(transport);\n```\n\n### Example 2: API Wrapper Pattern\n\nWrap an external API as an MCP tool with auth, rate limiting, and error handling:\n- Map API endpoints to tools\n- Handle auth via environment variables\n- Transform API responses to LLM-friendly format\n- Add retry logic with exponential backoff\n\n## Best Practices\n\n- Build small, focused tools that can be chained rather than monolithic tools\n- Return structured errors, not crashes - tools should fail gracefully\n- Define schemas before implementation\n- Include descriptions that help the LLM understand when and how to use each tool\n- Validate all inputs against the schema\n- Add rate limiting for external API calls\n- Use environment variables for secrets, never hardcode credentials\n\n## Limitations\n\n- This skill provides guidance and code generation; actual runtime testing requires a development environment\n- MCP specification is evolving; always check the latest spec version\n- Security review is essential before deploying tools that handle sensitive data\n\n## Security and Safety Notes\n\n- Never hardcode API keys or credentials in tool implementations\n- Use environment variables or secret managers for all authentication\n- Validate and sanitize all inputs to prevent injection attacks\n- Rate limit external API calls to prevent abuse\n- Review tool permissions carefully - tools can access files, networks, and execute code\n\n## Common Pitfalls\n\n- **Problem:** LLM calls tools with wrong parameters\n  **Solution:** Improve tool descriptions and add examples in the description field. The LLM reads descriptions to decide how to call tools.\n\n- **Problem:** Tool times out on large inputs\n  **Solution:** Add input size validation and pagination. Stream large responses instead of buffering.\n\n## Related Skills\n\n- `api-integration-architect` - For API design patterns used in MCP tools\n- `security-audit-code-reviewer` - For reviewing MCP server code security","tags":["mcp","tool","developer","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding"],"capabilities":["skill","source-sickn33","skill-mcp-tool-developer","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/mcp-tool-developer","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 37911 github stars · SKILL.md body (4,375 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:51:22.125Z","embedding":null,"createdAt":"2026-05-13T18:51:41.880Z","updatedAt":"2026-05-18T18:51:22.125Z","lastSeenAt":"2026-05-18T18:51:22.125Z","tsv":"'1':149,291 '1.0.0':317 '2':213,346 '3':243 '4':269 'abus':525 'access':532 'actual':459 'add':383,436,552,576 'agent':42 'ai':41 'alway':470 'api':115,178,347,353,366,376,441,493,521,591,595 'api-integration-architect':590 'architect':593 'async':330 'attack':517 'audit':604 'auth':359,371 'authent':508 'await':342 'backoff':388 'best':389 'buffer':587 'build':5,33,103,391 'call':167,442,522,542,566 'capabl':44,157 'care':529 'case':170,283 'chain':398 'check':471 'choos':184 'claud':192 'cli':190 'code':193,457,537,605,611 'common':538 'compos':95 'const':308,338 'content':332 'context':7,35 'cover':45 'crash':407 'creat':247 'credenti':450,496 'cursor':194 'data':172,486 'databas':179 'debug':122 'decid':563 'defin':150,218,412 'deploy':23,54,211,272,285,481 'describ':326 'descript':228,417,550,556,561 'design':87,128,214,596 'develop':4,19,29,49,464 'edg':282 'endpoint':367 'environ':373,444,465,501 'error':252,363,405 'essenti':479 'event':199 'evolv':469 'exampl':289,290,345,553 'execut':536 'exist':114 'expert':31 'exponenti':387 'expos':161 'extern':352,440,520 'fail':410 'field':557 'file':177,533 'focus':393 'format':382 'friend':381 'full':16,47 'full-stack':15 'function':163 'generat':458 'give':40 'grace':411 'greet':319,320 'guidanc':455 'handl':253,281,364,370,484 'hardcod':449,492 'hello':336 'help':419 'http':83,204 'identifi':155 'implement':52,223,244,415,499 'import':296,300,304 'improv':548 'includ':416 'inject':516 'input':432,513,574,577 'input/output':219 'inputschema':237 'inspector':277 'instead':585 'integr':592 'issu':125 'key':494 'larg':573,583 'latest':473 'lifecycl':50 'limit':361,438,451,519 'llm':165,174,236,380,421,541,559 'llm-friend':379 'local':189,286 'log':256 'logic':385 'make':90 'manag':505 'map':365 'mcp':2,9,18,27,37,48,71,91,106,118,123,134,140,152,207,260,267,276,293,356,466,600,609 'mcp-tool-develop':1 'mcpserver':297,311 'model':6,34 'modelcontextprotocol/sdk':264 'modelcontextprotocol/sdk/server/mcp.js':299 'modelcontextprotocol/sdk/server/stdio.js':303 'modern':210 'monolith':401 'my-tool':313 'name':225,227,312,323,324,329,331,337 'network':534 'never':448,491 'new':43,105,205,310,340 'note':490 'object':239 'offici':259 'option':79 'overview':30 'pagin':581 'paramet':546 'pattern':67,88,349,597 'permiss':528 'person':327 'pitfal':539 'practic':390 'prevent':515,524 'primari':168 'primit':73 'problem':540,568 'product':65 'production-readi':64 'prompt':76,180,182 'proper':251 'properti':240 'protocol':8,36 'provid':454 'publish':26,57,138 'python':62,266 'rate':360,437,518 'rather':399 'read':176,560 'readi':66 'registri':25,56,144 'relat':588 'reliabl':93 'remot':288 'remote/hosted':201 'requir':241,462 'resourc':75,171 'respons':377,584 'retri':384 'return':403 'reusabl':181 'review':477,526,606,608 'runtim':460 'safeti':489 'sampl':77 'sanit':511 'schema':131,217,220,280,413,435 'scope':154 'scratch':14,109 'sdk':261 'secret':447,504 'secur':476,487,603,612 'security-audit-code-review':602 'sensit':485 'sent':198 'server':10,38,92,107,124,135,141,153,159,197,246,249,294,309,610 'server-s':196 'server.connect':343 'server.tool':318 'size':578 'skill':69,100,453,589 'skill-mcp-tool-developer' 'small':392 'solut':547,575 'someon':321 'source-sickn33' 'spec':208,474 'specif':51,72,467 'sse':81,195 'stack':17 'stdio':80,187 'stdioservertransport':301,341 'step':148,212,242,268 'stream':582 'streamabl':82,203 'structur':404 'support':58 'templat':183 'test':22,53,270,273,461 'text':334,335 'time':570 'tool':3,12,28,74,86,119,130,162,191,202,216,226,231,279,315,357,369,394,402,408,429,482,498,527,530,543,549,567,569,601 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'transform':375 'transport':78,186,339,344 'type':238,333 'typescript':60,224,263,292,295 'typescript/python':21 'understand':70,422 'use':98,101,110,120,126,136,169,257,427,443,500,598 'valid':254,278,430,509,579 'variabl':374,445,502 'version':316,475 'via':372 'visibl':233 'work':147 'wrap':112,350 'wrapper':348 'write':222 'wrong':545 'z':305 'z.string':325 'zod':307","prices":[{"id":"dc4d2906-5567-4a3d-b781-89263c1f55ed","listingId":"609665cd-c1c0-482d-871f-258509a136e8","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-05-13T18:51:41.880Z"}],"sources":[{"listingId":"609665cd-c1c0-482d-871f-258509a136e8","source":"github","sourceId":"sickn33/antigravity-awesome-skills/mcp-tool-developer","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/mcp-tool-developer","isPrimary":false,"firstSeenAt":"2026-05-13T18:51:41.880Z","lastSeenAt":"2026-05-18T18:51:22.125Z"}],"details":{"listingId":"609665cd-c1c0-482d-871f-258509a136e8","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"mcp-tool-developer","github":{"repo":"sickn33/antigravity-awesome-skills","stars":37911,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-05-18T08:24:49Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"d69afb0ee40b9af39a116b9335c5bbe4de0fff79","skill_md_path":"skills/mcp-tool-developer/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/mcp-tool-developer"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"mcp-tool-developer","description":"Build Model Context Protocol (MCP) servers and tools from scratch. Full-stack MCP development with TypeScript/Python, testing, deployment, and registry publishing."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/mcp-tool-developer"},"updatedAt":"2026-05-18T18:51:22.125Z"}}