Enables containerization of the MCP server with Docker support, including build and run configurations and Docker Compose setup for deployment.
Provides code quality checking with ESLint integration, including linting configuration and commands for checking and fixing code quality issues.
Uses Express as the web framework for handling HTTP connections, providing the transport layer for MCP communication with comprehensive middleware support.
Offers code formatting capabilities with Prettier integration, including formatting configuration and commands for checking and applying consistent code style.
Provides full TypeScript support with strict configuration for type safety and tooling integration when building MCP servers.
Utilizes Vite as the build system to compile TypeScript code with ES modules output for fast development and optimized production builds.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP TypeScript Templateshow me how to add a new tool to my MCP server"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP TypeScript Template
A TypeScript template for building remote Model Context Protocol (MCP) servers with modern tooling and best practices while leveraging the MCP TypeScript SDK.
Features
This template provides:
TypeScript - Full TypeScript support with strict configuration
Vite - Fast build system with ES modules output
Express - Fast, unopinionated web framework for HTTP server
ESLint + Prettier - Code quality and formatting
Docker - Containerization support
Example Tool - Simple echo tool to demonstrate MCP tool implementation
Related MCP server: MCP Server Starter
Getting Started
The easiest way to get started is using degit:
Create a new project from this template
npx degit nickytonline/mcp-typescript-template my-mcp-server cd my-mcp-serverInstall dependencies
npm installBuild the project
npm run buildStart the server
npm start
The server will be available at http://localhost:3000 for MCP connections.
Alternative: Using GitHub Template
You can also click the "Use this template" button on GitHub to create a new repository, then clone it:
git clone <your-repo-url>
cd my-mcp-server
npm installDevelopment
Watch mode for development (with hot reloading)
npm run devBuild the project
npm run buildLinting
Lint the project
npm run lintFix all auto-fixable lint errors
npm run lint:fixFormatting
Format files in the project
npm run formatCheck formatting
npm run format:checkTesting Your MCP Server
You can test your MCP server using the MCP Inspector:
npx @modelcontextprotocol/inspectorThis will launch a web interface that allows you to:
Connect to your MCP server
Test your tools interactively
View request/response messages
Debug your MCP implementation
Make sure your server is running (using npm start or npm run dev) before connecting with the inspector.
Available Tools
The template includes one example tool:
echo
Echoes back the provided message - a simple example to demonstrate MCP tool implementation.
Parameters:
message(string) - The message to echo back
Customizing Your MCP Server
Update package.json - Change name, description, and keywords
Modify src/index.ts - Replace the echo tool with your custom tools
Add your logic - Create additional TypeScript files for your business logic
Update README - Document your specific MCP server functionality
Docker
Build and run using Docker:
Build the Docker image
docker build -t my-mcp-server .Run the container
docker run -p 3000:3000 my-mcp-serverDocker Compose
# docker-compose.yml
version: "3.8"
services:
mcp-server:
build: .
ports:
- "3000:3000"
environment:
- PORT=3000docker-compose up --buildProject Structure
mcp-typescript-template/
├── src/
│ └── index.ts # Main MCP server entry point
├── dist/ # Built output (generated)
├── .eslintrc.js # ESLint configuration
├── .prettierrc # Prettier configuration
├── tsconfig.json # TypeScript configuration
├── vite.config.ts # Vite build configuration
├── Dockerfile # Docker configuration
└── package.json # Dependencies and scriptsArchitecture
This template follows a simple architecture:
HTTP Transport - Uses Express with StreamableHTTPServerTransport for remote MCP connections
Tool Registration - Tools are registered with JSON schemas for input validation
Error Handling - Proper MCP-formatted error responses
Session Management - Handles MCP session initialization and management
Example: Adding a New Tool
import { createTextResult } from "./lib/utils.js";
server.registerTool(
"my_tool",
{
title: "My Custom Tool",
description: "Description of what this tool does",
inputSchema: {
param1: z.string().describe("Description of param1"),
param2: z.number().optional().describe("Optional parameter"),
},
},
async (args) => {
// Your tool logic here
const result = await myCustomLogic(args.param1, args.param2);
return createTextResult(result);
},
);Why Express?
This template uses Express for the HTTP server, which provides:
MCP SDK Compatibility - Full compatibility with the MCP TypeScript SDK's StreamableHTTPServerTransport
Mature & Stable - Battle-tested HTTP server with extensive ecosystem
TypeScript Support - Excellent TypeScript support with comprehensive type definitions
Middleware Ecosystem - Rich ecosystem of middleware for common tasks
Documentation - Comprehensive documentation and community support
Reliability - Proven reliability for production applications
Repository Guidelines
Contributors should review AGENTS.md for project structure, coding standards, and pull request expectations before opening changes.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.