MCP TypeScript 模板
一个用于构建远程模型上下文协议(MCP)服务器的TypeScript模板,该模板结合了现代工具和最佳实践,同时充分利用了(此处原文未完整,假设后续为“相关技术或优势”) MCP TypeScript SDK。
特点/功能
这个模板提供:
- TypeScript - 完全支持TypeScript,并具备严格配置
- Vite 翻译成中文是“快”。 - 快速构建系统,输出ES模块
- 快递 - 快速、无预设意见的Web框架,用于构建HTTP服务器
- ESLint + Prettier - 代码质量和格式化
- Docker - 支持容器化
- 示例工具 - 简单的回显工具,用于演示MCP工具的实现
入门指南/开始使用
- 克隆或使用此模板
git clone
cd mcp-typescript-template- 安装依赖项
npm install- 构建项目
npm run build- 启动服务器
npm start服务器将在 http://localhost:3000 用于MCP连接。
发展
开发模式下的监视(支持热重载)
npm run dev构建项目
npm run build代码检查(或代码规范检查)
- 检查项目中的代码规范(或:清理项目中的代码,进行代码审查)
npm run lint- 修复所有可自动修复的代码规范错误
npm run lint:fix格式化
- 项目中的格式文件
npm run format- 检查格式
npm run format:check可用工具
该模板包含一个示例工具:
回声
回传提供的消息——这是一个简单的示例,用于演示MCP工具的实现。
参数:
message(字符串) - 要回显的消息
自定义您的MCP服务器
- 更新 package.json - 更改名称、描述和关键词
- 修改 src/index.ts - 用你自定义的工具替换回声工具
- 添加你的逻辑 - 为您的业务逻辑创建额外的TypeScript文件
- 更新README文件 - 记录您特定的MCP服务器功能
Docker
使用 Docker 构建并运行:
- 构建Docker镜像
docker build -t my-mcp-server .- 运行容器
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 --build项目结构
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建筑
这个模板遵循一个简单的架构:
- HTTP传输 - 使用Express与StreamableHTTPServerTransport实现远程MCP连接
- 工具注册 - 工具通过JSON模式进行注册,以进行输入验证
- 错误处理 - 正确的MCP格式错误响应
- 会话管理 - 处理MCP会话的初始化和管理
示例:添加新工具
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);
},
);为何选择快递?
这个模板使用Express作为HTTP服务器,它提供了:
- MCP SDK 兼容性 - 与MCP TypeScript SDK的StreamableHTTPServerTransport完全兼容
- 成熟且稳定 - 经实战检验的HTTP服务器,拥有广泛的生态系统
- TypeScript 支持 - 提供出色的TypeScript支持,包含全面的类型定义
- 中间件生态系统 - 丰富的中间件生态系统,支持常见任务
- 文档 - 完善的文档和社区支持
- 可靠性 - 在生产应用中已证明的可靠性
仓库指南
贡献者应审查 AGENTS.md 在提交更改之前,请先了解项目结构、编码规范以及拉取请求(Pull Request)的期望。
