{"id":"27e2da0f-4f68-41d0-a869-e89a6e218b98","shortId":"wPEWv3","kind":"skill","title":"Typescript Mcp Server Generator","tagline":"Awesome Copilot skill by Github","description":"# Generate TypeScript MCP Server\n\nCreate a complete Model Context Protocol (MCP) server in TypeScript with the following specifications:\n\n## Requirements\n\n1. **Project Structure**: Create a new TypeScript/Node.js project with proper directory structure\n2. **NPM Packages**: Include @modelcontextprotocol/sdk, zod@3, and either express (for HTTP) or stdio support\n3. **TypeScript Configuration**: Proper tsconfig.json with ES modules support\n4. **Server Type**: Choose between HTTP (with Streamable HTTP transport) or stdio-based server\n5. **Tools**: Create at least one useful tool with proper schema validation\n6. **Error Handling**: Include comprehensive error handling and validation\n\n## Implementation Details\n\n### Project Setup\n- Initialize with `npm init` and create package.json\n- Install dependencies: `@modelcontextprotocol/sdk`, `zod@3`, and transport-specific packages\n- Configure TypeScript with ES modules: `\"type\": \"module\"` in package.json\n- Add dev dependencies: `tsx` or `ts-node` for development\n- Create proper .gitignore file\n\n### Server Configuration\n- Use `McpServer` class for high-level implementation\n- Set server name and version\n- Choose appropriate transport (StreamableHTTPServerTransport or StdioServerTransport)\n- For HTTP: set up Express with proper middleware and error handling\n- For stdio: use StdioServerTransport directly\n\n### Tool Implementation\n- Use `registerTool()` method with descriptive names\n- Define schemas using zod for input and output validation\n- Provide clear `title` and `description` fields\n- Return both `content` and `structuredContent` in results\n- Implement proper error handling with try-catch blocks\n- Support async operations where appropriate\n\n### Resource/Prompt Setup (Optional)\n- Add resources using `registerResource()` with ResourceTemplate for dynamic URIs\n- Add prompts using `registerPrompt()` with argument schemas\n- Consider adding completion support for better UX\n\n### Code Quality\n- Use TypeScript for type safety\n- Follow async/await patterns consistently\n- Implement proper cleanup on transport close events\n- Use environment variables for configuration\n- Add inline comments for complex logic\n- Structure code with clear separation of concerns\n\n## Example Tool Types to Consider\n- Data processing and transformation\n- External API integrations\n- File system operations (read, search, analyze)\n- Database queries\n- Text analysis or summarization (with sampling)\n- System information retrieval\n\n## Configuration Options\n- **For HTTP Servers**: \n  - Port configuration via environment variables\n  - CORS setup for browser clients\n  - Session management (stateless vs stateful)\n  - DNS rebinding protection for local servers\n  \n- **For stdio Servers**:\n  - Proper stdin/stdout handling\n  - Environment-based configuration\n  - Process lifecycle management\n\n## Testing Guidance\n- Explain how to run the server (`npm start` or `npx tsx server.ts`)\n- Provide MCP Inspector command: `npx @modelcontextprotocol/inspector`\n- For HTTP servers, include connection URL: `http://localhost:PORT/mcp`\n- Include example tool invocations\n- Add troubleshooting tips for common issues\n\n## Additional Features to Consider\n- Sampling support for LLM-powered tools\n- User input elicitation for interactive workflows\n- Dynamic tool registration with enable/disable capabilities\n- Notification debouncing for bulk updates\n- Resource links for efficient data references\n\nGenerate a complete, production-ready MCP server with comprehensive documentation, type safety, and error handling.","tags":["typescript","mcp","server","generator","awesome","copilot","github"],"capabilities":["skill","source-github","category-awesome-copilot"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/typescript-mcp-server-generator","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"install_from":"skills.sh"}},"qualityScore":"0.300","qualityRationale":"deterministic score 0.30 from registry signals: · indexed on skills.sh · published under github/awesome-copilot","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:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T17:40:17.565Z","embedding":null,"createdAt":"2026-04-18T20:25:34.763Z","updatedAt":"2026-04-22T17:40:17.565Z","lastSeenAt":"2026-04-22T17:40:17.565Z","tsv":"'1':29 '2':41 '3':47,56,116 '4':65 '5':80 '6':92 'ad':246 'add':131,229,238,275,388 'addit':394 'analysi':309 'analyz':305 'api':298 'appropri':161,225 'argument':243 'async':222 'async/await':260 'awesom':5 'base':78,351 'better':250 'block':220 'browser':330 'bulk':420 'capabl':416 'catch':219 'category-awesome-copilot' 'choos':68,160 'class':149 'cleanup':265 'clear':200,284 'client':331 'close':268 'code':252,282 'command':373 'comment':277 'common':392 'complet':16,247,430 'complex':279 'comprehens':96,437 'concern':287 'configur':58,122,146,274,317,323,352 'connect':380 'consid':245,292,397 'consist':262 'content':207 'context':18 'copilot':6 'cor':327 'creat':14,32,82,110,141 'data':293,426 'databas':306 'debounc':418 'defin':190 'depend':113,133 'descript':188,203 'detail':102 'dev':132 'develop':140 'direct':181 'directori':39 'dns':337 'document':438 'dynam':236,411 'effici':425 'either':49 'elicit':407 'enable/disable':415 'environ':271,325,350 'environment-bas':349 'error':93,97,175,214,442 'es':62,125 'event':269 'exampl':288,385 'explain':358 'express':50,170 'extern':297 'featur':395 'field':204 'file':144,300 'follow':26,259 'generat':4,10,428 'github':9 'gitignor':143 'guidanc':357 'handl':94,98,176,215,348,443 'high':152 'high-level':151 'http':52,70,73,167,320,377 'implement':101,154,183,212,263 'includ':44,95,379,384 'inform':315 'init':108 'initi':105 'inlin':276 'input':195,406 'inspector':372 'instal':112 'integr':299 'interact':409 'invoc':387 'issu':393 'least':84 'level':153 'lifecycl':354 'link':423 'llm':402 'llm-power':401 'local':341 'localhost':382 'logic':280 'manag':333,355 'mcp':2,12,20,371,434 'mcpserver':148 'method':186 'middlewar':173 'model':17 'modelcontextprotocol/inspector':375 'modelcontextprotocol/sdk':45,114 'modul':63,126,128 'name':157,189 'new':34 'node':138 'notif':417 'npm':42,107,364 'npx':367,374 'one':85 'oper':223,302 'option':228,318 'output':197 'packag':43,121 'package.json':111,130 'pattern':261 'port':322 'port/mcp':383 'power':403 'process':294,353 'product':432 'production-readi':431 'project':30,36,103 'prompt':239 'proper':38,59,89,142,172,213,264,346 'protect':339 'protocol':19 'provid':199,370 'qualiti':253 'queri':307 'read':303 'readi':433 'rebind':338 'refer':427 'registerprompt':241 'registerresourc':232 'registertool':185 'registr':413 'requir':28 'resourc':230,422 'resource/prompt':226 'resourcetempl':234 'result':211 'retriev':316 'return':205 'run':361 'safeti':258,440 'sampl':313,398 'schema':90,191,244 'search':304 'separ':285 'server':3,13,21,66,79,145,156,321,342,345,363,378,435 'server.ts':369 'session':332 'set':155,168 'setup':104,227,328 'skill':7 'source-github' 'specif':27,120 'start':365 'state':336 'stateless':334 'stdin/stdout':347 'stdio':54,77,178,344 'stdio-bas':76 'stdioservertransport':165,180 'streamabl':72 'streamablehttpservertransport':163 'structur':31,40,281 'structuredcont':209 'summar':311 'support':55,64,221,248,399 'system':301,314 'test':356 'text':308 'tip':390 'titl':201 'tool':81,87,182,289,386,404,412 'transform':296 'transport':74,119,162,267 'transport-specif':118 'tri':218 'troubleshoot':389 'try-catch':217 'ts':137 'ts-node':136 'tsconfig.json':60 'tsx':134,368 'type':67,127,257,290,439 'typescript':1,11,23,57,123,255 'typescript/node.js':35 'updat':421 'uri':237 'url':381 'use':86,147,179,184,192,231,240,254,270 'user':405 'ux':251 'valid':91,100,198 'variabl':272,326 'version':159 'via':324 'vs':335 'workflow':410 'zod':46,115,193","prices":[{"id":"ad556e64-9542-4e10-9edc-1f78ec983956","listingId":"27e2da0f-4f68-41d0-a869-e89a6e218b98","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-04-18T20:25:34.763Z"}],"sources":[{"listingId":"27e2da0f-4f68-41d0-a869-e89a6e218b98","source":"github","sourceId":"github/awesome-copilot/typescript-mcp-server-generator","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/typescript-mcp-server-generator","isPrimary":false,"firstSeenAt":"2026-04-18T21:51:28.974Z","lastSeenAt":"2026-04-22T12:52:25.434Z"},{"listingId":"27e2da0f-4f68-41d0-a869-e89a6e218b98","source":"skills_sh","sourceId":"github/awesome-copilot/typescript-mcp-server-generator","sourceUrl":"https://skills.sh/github/awesome-copilot/typescript-mcp-server-generator","isPrimary":true,"firstSeenAt":"2026-04-18T20:25:34.763Z","lastSeenAt":"2026-04-22T17:40:17.565Z"}],"details":{"listingId":"27e2da0f-4f68-41d0-a869-e89a6e218b98","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"typescript-mcp-server-generator","source":"skills_sh","category":"awesome-copilot","skills_sh_url":"https://skills.sh/github/awesome-copilot/typescript-mcp-server-generator"},"updatedAt":"2026-04-22T17:40:17.565Z"}}