Skip to main content
Glama

MCP TypeScript Template

by nickytonline
README.md4.42 kB
# 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](https://github.com/modelcontextprotocol/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 ## Getting Started 1. **Clone or use this template** ```bash git clone <your-repo-url> cd mcp-typescript-template ``` 2. **Install dependencies** ```bash npm install ``` 3. **Build the project** ```bash npm run build ``` 4. **Start the server** ```bash npm start ``` The server will be available at `http://localhost:3000` for MCP connections. ## Development ### Watch mode for development (with hot reloading) ```bash npm run dev ``` ### Build the project ```bash npm run build ``` ### Linting - Lint the project ```bash npm run lint ``` - Fix all auto-fixable lint errors ```bash npm run lint:fix ``` ### Formatting - Format files in the project ```bash npm run format ``` - Check formatting ```bash npm run format:check ``` ## 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 1. **Update package.json** - Change name, description, and keywords 2. **Modify src/index.ts** - Replace the echo tool with your custom tools 3. **Add your logic** - Create additional TypeScript files for your business logic 4. **Update README** - Document your specific MCP server functionality ## Docker Build and run using Docker: - Build the Docker image ```bash docker build -t my-mcp-server . ``` - Run the container ```bash docker run -p 3000:3000 my-mcp-server ``` ### Docker Compose ```yaml # docker-compose.yml version: "3.8" services: mcp-server: build: . ports: - "3000:3000" environment: - PORT=3000 ``` ```bash docker-compose up --build ``` ## Project 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 scripts ``` ## Architecture 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 ```typescript 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

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nickytonline/mcp-typescript-template'

If you have feedback or need assistance with the MCP directory API, please join our Discord server