Awesome-copilot typescript-mcp-server-generator
Generate a complete MCP server project in TypeScript with tools, resources, and proper configuration
install
source · Clone the upstream repo
git clone https://github.com/github/awesome-copilot
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/github/awesome-copilot "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/typescript-mcp-server-generator" ~/.claude/skills/github-awesome-copilot-typescript-mcp-server-generator-3a39ec && rm -rf "$T"
manifest:
skills/typescript-mcp-server-generator/SKILL.mdsource content
Generate TypeScript MCP Server
Create a complete Model Context Protocol (MCP) server in TypeScript with the following specifications:
Requirements
- Project Structure: Create a new TypeScript/Node.js project with proper directory structure
- NPM Packages: Include @modelcontextprotocol/sdk, zod@3, and either express (for HTTP) or stdio support
- TypeScript Configuration: Proper tsconfig.json with ES modules support
- Server Type: Choose between HTTP (with Streamable HTTP transport) or stdio-based server
- Tools: Create at least one useful tool with proper schema validation
- Error Handling: Include comprehensive error handling and validation
Implementation Details
Project Setup
- Initialize with
and create package.jsonnpm init - Install dependencies:
,@modelcontextprotocol/sdk
, and transport-specific packageszod@3 - Configure TypeScript with ES modules:
in package.json"type": "module" - Add dev dependencies:
ortsx
for developmentts-node - Create proper .gitignore file
Server Configuration
- Use
class for high-level implementationMcpServer - Set server name and version
- Choose appropriate transport (StreamableHTTPServerTransport or StdioServerTransport)
- For HTTP: set up Express with proper middleware and error handling
- For stdio: use StdioServerTransport directly
Tool Implementation
- Use
method with descriptive namesregisterTool() - Define schemas using zod for input and output validation
- Provide clear
andtitle
fieldsdescription - Return both
andcontent
in resultsstructuredContent - Implement proper error handling with try-catch blocks
- Support async operations where appropriate
Resource/Prompt Setup (Optional)
- Add resources using
with ResourceTemplate for dynamic URIsregisterResource() - Add prompts using
with argument schemasregisterPrompt() - Consider adding completion support for better UX
Code Quality
- Use TypeScript for type safety
- Follow async/await patterns consistently
- Implement proper cleanup on transport close events
- Use environment variables for configuration
- Add inline comments for complex logic
- Structure code with clear separation of concerns
Example Tool Types to Consider
- Data processing and transformation
- External API integrations
- File system operations (read, search, analyze)
- Database queries
- Text analysis or summarization (with sampling)
- System information retrieval
Configuration Options
-
For HTTP Servers:
- Port configuration via environment variables
- CORS setup for browser clients
- Session management (stateless vs stateful)
- DNS rebinding protection for local servers
-
For stdio Servers:
- Proper stdin/stdout handling
- Environment-based configuration
- Process lifecycle management
Testing Guidance
- Explain how to run the server (
ornpm start
)npx tsx server.ts - Provide MCP Inspector command:
npx @modelcontextprotocol/inspector - For HTTP servers, include connection URL:
http://localhost:PORT/mcp - Include example tool invocations
- Add troubleshooting tips for common issues
Additional Features to Consider
- Sampling support for LLM-powered tools
- User input elicitation for interactive workflows
- Dynamic tool registration with enable/disable capabilities
- Notification debouncing for bulk updates
- Resource links for efficient data references
Generate a complete, production-ready MCP server with comprehensive documentation, type safety, and error handling.