使用说明
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:加载工具的注册表文件。
如何添加新工具
- 创建文件 在
src/tools/(例如。,myTool.ts). - 扩展
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}` }],
};
}
}
- 注册它 在
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 |
检查代码问题。 |
