MCPTypeScript服务器快速生成器Skill mcp-sdk-typescript-bootstrapper

MCP TypeScript服务器快速生成器是一个专门用于快速创建和配置MCP(模型上下文协议)服务器的工具。它基于官方TypeScript SDK,能够自动生成完整的服务器项目结构,包括传输层配置、工具和资源处理程序、错误处理机制等。主要功能包括:项目脚手架搭建、多种传输方式支持(stdio/SSE/WebSocket)、工具和资源模板生成、安全最佳实践实施、Zod输入验证集成。适用于AI应用开发、大模型集成、后端服务开发等场景,帮助开发者快速构建与AI模型交互的标准化接口服务。

后端开发 0 次安装 0 次浏览 更新于 2/23/2026

名称: mcp-sdk-typescript-bootstrapper 描述: 使用官方TypeScript SDK引导MCP(模型上下文协议)服务器。创建包含传输层、工具、资源和适当错误处理的完整服务器实现。 允许工具: 读取, 写入, 编辑, Bash, Glob, Grep

MCP SDK TypeScript 引导器

使用官方TypeScript SDK引导生产就绪的MCP服务器,包含适当的传输配置、工具/资源处理程序和安全最佳实践。

功能

  • 使用TypeScript SDK生成MCP服务器项目
  • 配置stdio、SSE或WebSocket传输
  • 搭建工具和资源处理程序
  • 设置适当的错误处理和验证
  • 配置能力声明
  • 实施安全最佳实践

使用方式

当您需要时调用此技能:

  • 从头创建新的MCP服务器
  • 为现有项目添加MCP功能
  • 搭建工具和资源实现
  • 配置MCP传输层

输入参数

参数 类型 必需 描述
serverName 字符串 MCP服务器名称(kebab-case格式)
description 字符串 客户端显示的服务器描述
transport 字符串 stdio、sse或websocket(默认:stdio)
tools 数组 要搭建的工具列表
resources 数组 要提供的资源列表
capabilities 对象 服务器能力声明

工具定义结构

{
  "tools": [
    {
      "name": "read_file",
      "description": "读取文件内容",
      "inputSchema": {
        "type": "object",
        "properties": {
          "path": { "type": "string", "description": "要读取的文件路径" }
        },
        "required": ["path"]
      }
    }
  ]
}

资源定义结构

{
  "resources": [
    {
      "uriTemplate": "file:///{path}",
      "name": "文件资源",
      "description": "访问文件内容",
      "mimeType": "text/plain"
    }
  ]
}

输出结构

<serverName>/
├── package.json
├── tsconfig.json
├── .gitignore
├── README.md
├── src/
│   ├── index.ts              # 服务器入口点
│   ├── server.ts             # MCP服务器设置
│   ├── transport/
│   │   ├── stdio.ts          # Stdio传输
│   │   ├── sse.ts            # SSE传输(如选择)
│   │   └── websocket.ts      # WebSocket传输(如选择)
│   ├── tools/
│   │   ├── index.ts          # 工具注册表
│   │   └── <tool>.ts         # 单个工具处理程序
│   ├── resources/
│   │   ├── index.ts          # 资源注册表
│   │   └── <resource>.ts     # 资源提供者
│   ├── prompts/
│   │   └── index.ts          # 提示模板(可选)
│   └── utils/
│       ├── validation.ts     # 输入验证助手
│       ├── errors.ts         # MCP错误处理
│       └── logging.ts        # 结构化日志
├── tests/
│   ├── tools/
│   └── resources/
└── mcp.json                  # MCP服务器清单

生成的代码模式

服务器设置 (src/server.ts)

import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { registerTools } from './tools';
import { registerResources } from './resources';

export async function createServer() {
  const server = new McpServer({
    name: '<serverName>',
    version: '1.0.0',
  });

  // 注册能力
  registerTools(server);
  registerResources(server);

  return server;
}

export async function startServer() {
  const server = await createServer();
  const transport = new StdioServerTransport();

  await server.connect(transport);

  console.error('[MCP] 服务器已在stdio上启动');
}

工具处理程序 (src/tools/<name>.ts)

import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { z } from 'zod';
import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js';

const inputSchema = z.object({
  path: z.string().describe('要读取的文件路径'),
});

export function registerReadFileTool(server: McpServer) {
  server.tool(
    'read_file',
    '读取文件内容',
    inputSchema.shape,
    async (args) => {
      const { path } = inputSchema.parse(args);

      try {
        // 实现
        const content = await readFile(path, 'utf-8');
        return {
          content: [{ type: 'text', text: content }],
        };
      } catch (error) {
        throw new McpError(
          ErrorCode.InternalError,
          `读取文件失败: ${error.message}`
        );
      }
    }
  );
}

资源提供者 (src/resources/<name>.ts)

import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';

export function registerFileResource(server: McpServer) {
  server.resource(
    'file:///{path}',
    '文件资源',
    '通过路径访问文件内容',
    async (uri) => {
      const path = uri.pathname;

      const content = await readFile(path, 'utf-8');

      return {
        contents: [{
          uri: uri.href,
          mimeType: 'text/plain',
          text: content,
        }],
      };
    }
  );
}

依赖项

{
  "dependencies": {
    "@modelcontextprotocol/sdk": "^1.0.0",
    "zod": "^3.22.0"
  },
  "devDependencies": {
    "@types/node": "^20.0.0",
    "typescript": "^5.0.0",
    "vitest": "^1.0.0"
  }
}

传输配置

Stdio(默认)

import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
const transport = new StdioServerTransport();

SSE(HTTP服务器发送事件)

import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
import express from 'express';

const app = express();
app.get('/sse', (req, res) => {
  const transport = new SSEServerTransport('/message', res);
  server.connect(transport);
});

WebSocket

import { WebSocketServerTransport } from '@modelcontextprotocol/sdk/server/websocket.js';
import { WebSocketServer } from 'ws';

const wss = new WebSocketServer({ port: 3000 });
wss.on('connection', (ws) => {
  const transport = new WebSocketServerTransport(ws);
  server.connect(transport);
});

工作流程

  1. 验证输入 - 检查服务器名称、工具/资源定义
  2. 创建项目结构 - 设置文件夹和基础文件
  3. 生成package.json - 配置依赖项
  4. 生成tsconfig.json - TypeScript配置
  5. 创建服务器入口 - 主服务器设置
  6. 生成传输层 - 选定的传输实现
  7. 搭建工具 - 带有模式的工具处理程序
  8. 搭建资源 - 资源提供者
  9. 创建实用工具 - 验证、错误、日志
  10. 设置测试 - 工具/资源的测试结构

应用的最佳实践

  • 所有输入的Zod模式验证
  • 适当的MCP错误代码和消息
  • 结构化日志记录到stderr
  • 工具/资源的清晰分离
  • TypeScript严格模式
  • 全面的错误处理
  • 输入清理

参考资料

目标流程

  • mcp-server-bootstrap
  • mcp-tool-implementation
  • mcp-resource-provider
  • mcp-transport-layer