MCP服务器模板

一个基于TypeScript的远程模型上下文协议(MCP)服务器模板,提供现代工具链和最佳实践,用于快速构建MCP服务器。

  • by jerkovicl
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 jerkovicl/flights-mcp

使用说明

MCP TypeScript 模板

一个用于构建远程模型上下文协议(MCP)服务器的TypeScript模板,该模板结合了现代工具和最佳实践,同时充分利用了(此处原文未完整,假设后续为“相关技术或优势”) MCP TypeScript SDK。

特点/功能

这个模板提供:

  • TypeScript - 完全支持TypeScript,并具备严格配置
  • Vite 翻译成中文是“快”。 - 快速构建系统,输出ES模块
  • 快递 - 快速、无预设意见的Web框架,用于构建HTTP服务器
  • ESLint + Prettier - 代码质量和格式化
  • Docker - 支持容器化
  • 示例工具 - 简单的回显工具,用于演示MCP工具的实现

入门指南/开始使用

  1. 克隆或使用此模板

    git clone <your-repo-url>
    cd mcp-typescript-template
    
  2. 安装依赖项

    npm install
    
  3. 构建项目

    npm run build
    
  4. 启动服务器

    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服务器

  1. 更新 package.json - 更改名称、描述和关键词
  2. 修改 src/index.ts - 用你自定义的工具替换回声工具
  3. 添加你的逻辑 - 为您的业务逻辑创建额外的TypeScript文件
  4. 更新README文件 - 记录您特定的MCP服务器功能

Docker

使用 Docker 构建并运行:

  • 构建Docker镜像
docker build -t my-mcp-server .
  • 运行容器
docker run -p 3000:3000 my-mcp-server

Docker Compose

# docker-compose.yml
version: "3.8"
services:
  mcp-server:
    build: .
    ports:
      - "3000:3000"
    environment:
      - PORT=3000
docker-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)的期望。