Skip to main content
skill GitHub Copilot official · GitHub

typescript-mcp-server-generator — GitHub Copilot skill

Generates a TypeScript MCP server project with tools, resources, and configuration. Use it when a new server should start on the MCP TypeScript SDK v2.

Install into GitHub Copilot · Skills CLI (Vercel) All methods and platforms ↓
npx skills add github/awesome-copilot --skill typescript-mcp-server-generator
Open on GitHub

What typescript-mcp-server-generator does

This skill creates a TypeScript/Node.js project structure and configures an MCP server with McpServer. It adds tools with Zod schema validation, returns both regular and structured content, and can include resources and prompts with argument schemas. The generated server can use stdio or Streamable HTTP.

The setup uses @modelcontextprotocol/server, @modelcontextprotocol/core, and a transport package: @modelcontextprotocol/node or an adapter for Express, Hono, or Fastify. The project needs Node.js 20+, ESM with "type": "module", and zod@^4.2; tsx or ts-node can handle development runs. SSE and WebSocket transports are not generated.

It also covers error handling, transport cleanup, environment variables, running the server with npm start or npx tsx server.ts, MCP Inspector checks, and v1 migration with the codemod. Install it when you are starting an MCP server on SDK v2; for an existing codebase, first compare its structure with the generated setup.

What it helps with

  • scaffold a TypeScript MCP server project
  • add a tool with Zod validation
  • choose stdio or Streamable HTTP transport
  • configure MCP resources and prompts
  • migrate a server from SDK v1 to v2

Example prompts for the agent

  • Create a TypeScript MCP server for file operations and add a search tool.
  • Generate a stdio server with `@modelcontextprotocol/server`, environment variables, and error handling.
  • Prepare an HTTP MCP server and instructions for `npx @modelcontextprotocol/inspector`.

How to install typescript-mcp-server-generator

1Skills CLI (Vercel)

npx skills add github/awesome-copilot --skill typescript-mcp-server-generator

2GitHub CLI

gh skill install github/awesome-copilot typescript-mcp-server-generator

3Manually: put the files in place

.github/skills/typescript-mcp-server-generator/SKILL.md

From the same set554

The whole set →
git-commit official github This skill reviews Git changes, stages related files, and creates Conventional Commits. Use it when you want an agent to make one commit or split work into separate commits. GitHub Copilot 47,165installs excalidraw-diagram-generator official github Turn a plain-language description into an Excalidraw diagram. Useful for mapping processes, system structure, and relationships between entities. GitHub Copilot 31,639installs multi-stage-dockerfile official github This skill guides GitHub Copilot in writing multi-stage Dockerfiles for different languages and frameworks. Use it when the final runtime image should contain fewer build dependencies. GitHub Copilot 29,688installs documentation-writer official github Skill that turns the agent into a technical writer following the Diátaxis framework: tutorials, how-to guides, reference, and explanation. Proposes structure before writing. GitHub Copilot 27,757installs prd official github Turns a feature idea into a structured PRD with user stories, technical requirements, and risks. Use it when planning a software feature or an AI-powered one. GitHub Copilot 24,035installs refactor official github This skill reshapes existing code without changing its external behavior. Use it for gradual cleanup of large functions, duplication, weak types, and code smells. GitHub Copilot 22,321installs java-springboot official github Gives GitHub Copilot Spring Boot development practices, from project layout to tests and security. Use it when writing or reviewing Java application code. GitHub Copilot 21,272installs create-readme official github This skill reviews a project and creates a structured README.md. Use it when the repository needs clear documentation based on its actual files and code. GitHub Copilot 19,081installs

Similar

aspnet-core official openai Guides building, refactoring, and architecting ASP.NET Core apps using official Microsoft patterns. Helpful for Minimal APIs, Blazor, and migrations. Claude Code CX Codex Cursor +1 3,900installs gemini-interactions-api official google This skill guides Gemini Interactions API usage on Gemini Enterprise Agent Platform for stateful chats, background tasks, streaming, and function calling. Claude Code Gemini CLI CX Codex 10,434installs nextjs-app-router-patterns Seth Hobson This skill covers Next.js App Router patterns for rendering, routing, and data fetching. Use it when starting an App Router project or moving from Pages Router. Claude Code CX Codex Cursor 32,529installs fastify-best-practices mcollina Guides AI assistants in building Fastify backend servers with TypeScript or JavaScript. It covers plugin encapsulation, schemas, logging, and deployment patterns. Claude Code CX Codex Cursor +1 81,100installs voicestudio debpalash Connects an agent to VoiceStudio for speech generation, audio transcription, and dubbing workflows through its REST API or MCP server. Claude Code CX Codex Cursor +1 1,700installs architecture official anthropics Writes an Architecture Decision Record or reviews a system design: options, trade-offs, consequences. Useful when you have to pick between technologies. Claude Code CX Codex Cursor +1 6,700installs mcp-builder official anthropics This skill walks through building an MCP server in TypeScript or Python, from reading the protocol spec to writing tests and evaluation questions. Claude Code Claude.ai 130,949installs google-agents-cli-adk-code official Google A reference skill for building ADK agents with tools, callbacks, state, and workflows. Use it when an agent project needs concrete API patterns or code examples. Claude Code CX Codex Cursor +1 511,400installs

Questions about typescript-mcp-server-generator

How do I install typescript-mcp-server-generator in GitHub Copilot?

Run npx skills add github/awesome-copilot --skill typescript-mcp-server-generator, gh skill install github/awesome-copilot typescript-mcp-server-generator, or place the file at .github/skills/typescript-mcp-server-generator/SKILL.md.

What does typescript-mcp-server-generator do?

It generates a TypeScript MCP server project with McpServer, tools, Zod schemas, transport configuration, and run instructions.

Which Node.js and Zod versions does it require?

The skill targets Node.js 20+ and requires zod@^4.2. It uses the SDK v2 packages, while SSE and WebSocket transports are excluded.

Source text

SKILL.md · MIT
---
name: typescript-mcp-server-generator
description: 'Generate a complete MCP server project in TypeScript using the MCP TypeScript SDK v2 (@modelcontextprotocol/server) with tools, resources, and proper configuration'
---

# Generate TypeScript MCP Server

Create a complete Model Context Protocol (MCP) server in TypeScript using the **MCP TypeScript SDK v2** with the following specifications:

## Requirements

1. **Project Structure**: Create a new TypeScript/Node.js project with proper directory structure
2. **NPM Packages**: The v1 monolithic `@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
3. **Runtime**: Node.js 20+ (v2 minimum); ESM-first with `"type": "module"` (a CommonJS build is also shipped, so `require()` works if needed)
4. **Server Type**: Choose between HTTP (Streamable HTTP transport) or stdio-based server. SSE and WebSocket transports were removed in v2 — do not generate them.
5. **Tools**: Create at least one useful tool with proper schema validation
6. **Error Handling**: Include comprehensive error handling and validation

## Implementation Details

### Project Setup
- Initialize with `npm init` and create package.json
- Install dependencies: `@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`)
- Configure TypeScript with ES modules: `"type": "module"` in package.json
- Add dev dependencies: `tsx` or `ts-node` for development
- Create proper .gitignore file

### Server Configuration
- Use `McpServer` class from `@modelcontextprotocol/server` for high-level implementation
- Set server name and version
- Choose the appropriate transport:
  - HTTP (Node): `NodeStreamableHTTPServerTransport` from `@modelcontextprotocol/node`
  - HTTP (Web Standard runtimes): `WebStandardStreamableHTTPServerTransport` from `@modelcontextprotocol/server`
  - stdio: `StdioServerTransport` from `@modelcontextprotocol/server/stdio`
- For HTTP: prefer a framework adapter (`@modelcontextprotocol/express`, etc.) with proper middleware and error handling
- Note that v2 uses Web Standard `Headers`/`Request` types; read headers with `ctx.http?.req?.headers.get('x-custom')`

### Tool Implementation
- Use `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}!` }] };
  });
  ```
- Schemas must be full Zod objects (`z.object({...})`) — raw shape objects (`{ name: z.string() }`) are deprecated
- Provide clear `title` and `description` fields
- Return both `content` and `structuredContent` in results
- The handler's second parameter is a structured `ctx` object (replaces v1 `extra`): `ctx.mcpReq.signal`, `ctx.mcpReq.id`, `ctx.mcpReq.send(...)`, `ctx.mcpReq.notify(...)`
- Implement proper error handling with try-catch blocks; use the v2 error hierarchy (`ProtocolError`, `SdkError`, `SdkHttpError` with `.status`) instead of v1 `McpError`/`StreamableHTTPError`
- Support async operations where appropriate

### Resource/Prompt Setup (Optional)
- Add resources using `registerResource()` with ResourceTemplate for dynamic URIs
- Add prompts using `registerPrompt()` with argument schemas (same config-object style as `registerTool()`)
- Consider adding completion support for better UX; note the v2 `completable()` wrapper order: `completable(z.string(), callback).optional()` (optional applied outside)

### 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 (LLM-assisted via the multi-round `input_required` pattern)
- 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
  - Strict `Content-Type` handling: v2 rejects non-`application/json` POST bodies
  
- **For stdio Servers**:
  - Proper stdin/stdout handling
  - Environment-based configuration
  - Process lifecycle management

## Migrating an Existing v1 Server
- Run the official codemod first: `npx @modelcontextprotocol/codemod@latest v1-to-v2 .`
- Then search for `@mcp-codemod-error` markers for the parts requiring manual judgment (transport choice, header reads, error classification)
- Swap `McpError + ErrorCode` checks for the new error classes; HTTP status now lives on `error.status`, not `error.code`
- `Server.createMessage()`, `listRoots()`, `sendLoggingMessage()` and the `roots`/`sampling`/`logging` capability fields are deprecated in v2 — avoid them in new code

## Testing Guidance
- Explain how to run the server (`npm start` or `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
- LLM-powered tools using the multi-round `input_required` pattern (the v2 replacement for the deprecated sampling subsystem)
- 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.

© github · MIT · github/awesome-copilot

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor