MCP服务器TypeScript模板

一个生产就绪的TypeScript模板,用于构建模型上下文协议(MCP)服务器,提供类基础架构、依赖注入和类型安全等功能。

  • by kirbah
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 kirbah/mcp-typescript-starter

使用说明

MCP TypeScript入门

用于构建模型上下文协议(MCP)服务器的生产就绪TypeScript模板。

特性

  • 基于类的体系结构:工具、资源和提示的可扩展模式。
  • 依赖注入:通过统一的容器清洁访问服务(Logger、Config等)。
  • 类型安全:输入的自动Zod验证。
  • 质量工具:已预先配置ESLint、Prettier和Jest。

快速开始

1.安装

git clone https://github.com/kirbah/mcp-typescript-starter.git my-mcp-server
cd my-mcp-server
npm install

2.构建和运行

npm run build
npm start

3.发展

# Watch mode for auto-reloading
npm run dev

# Debug using the MCP Inspector
npm run inspector

配置(克劳德桌面)

要将此服务器与Claude Desktop一起使用,请将其添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "my-server": {
      "command": "node",
      "args": ["/absolute/path/to/my-mcp-server/dist/index.js"]
    }
  }
}

建筑

此项目使用 基于类的模式 以确保一致性和类型安全。

  • src/container.ts:这里实例化了单例(记录器、服务)。
  • src/tools/base.ts:处理错误捕获和输入验证的基类。
  • src/tools/index.ts:加载工具的注册表文件。

如何添加新工具

  1. 创建文件 在 src/tools/ (例如。, myTool.ts).
  2. 扩展 BaseTool 并定义你的Zod模式:
import { z } from "zod";
import { BaseTool } from "../base.js";

const InputSchema = z.object({
  name: z.string(),
});

export class MyTool extends BaseTool<typeof InputSchema> {
  name = "my_tool";
  description = "Example description";
  schema = InputSchema;

  protected async executeImpl(params: z.infer<typeof InputSchema>) {
    // Access services via this.container
    this.container.loggerService.info("Tool ran!");

    return {
      content: [{ type: "text", text: `Hello ${params.name}` }],
    };
  }
}
  1. 注册它 在 src/tools/index.ts:
// ... imports
const TOOL_CLASSES = [
  CalculateSumTool,
  SayHelloTool,
  MyTool, // <-- Add here
];

同样的模式也适用于 资源 (extends BaseResource)以及 鼓励 (extends BasePrompt).

关键命令

命令 描述
npm run build 将TypeScript编译为 /dist.
npm run dev 在监视模式下运行。
npm run test 运行Jest测试。
npm run format 使用Prettier格式化代码。
npm run lint 检查代码问题。