使用说明
MCP服务器TypeScript锅炉板
一个干净、可重用的TypeScript样板,用于构建模型上下文协议(MCP)服务器。
特性
- 清洁建筑:模块化设计,明确分离关注点
- 类型安全:完全支持TypeScript,具有严格的类型检查
- 易于配置:工具和资源的简单配置对象
- 内置示例:开始使用的示例工具和资源
- 错误处理:通过有意义的消息进行全面的错误处理
- 优雅地关闭:在流程终止时进行适当的清理
- 开发就绪:热重新加载和调试支持
快速开始
安装
npm install
发展
npm run dev
构建
npm run build
npm start
用法
添加自定义工具
工具是MCP客户端可以调用的函数。将它们添加到 tools 服务器配置中的数组:
const customTool: ToolHandler = {
name: "my_custom_tool",
description: "Description of what this tool does",
inputSchema: {
type: "object",
properties: {
param1: {
type: "string",
description: "Parameter description",
},
},
required: ["param1"],
},
handler: async (args: { param1: string }) => {
// Your tool logic here
return `Processed: ${args.param1}`;
},
};
添加自定义资源
资源是MCP客户端可以读取的静态或动态内容:
const customResource: ResourceHandler = {
uri: "custom://my-resource",
name: "My Custom Resource",
description: "Description of this resource",
mimeType: "application/json",
handler: async () => {
// Your resource logic here
return JSON.stringify({ data: "example" });
},
};
配置
修改 serverConfig object自定义服务器:
const serverConfig: ServerConfig = {
name: "my-mcp-server",
version: "1.0.0",
description: "My custom MCP server",
tools: [customTool, ...exampleTools],
resources: [customResource, ...exampleResources],
};
项目结构
├── src/
│ └── index.ts # Main server implementation
├── dist/ # Compiled JavaScript (generated)
├── package.json # Dependencies and scripts
├── tsconfig.json # TypeScript configuration
└── README.md # This file
示例工具
样板包括几个示例工具:
- 回声:回显输入消息
- add_numbers:将两个数字相加
- 当前时间:以各种格式获取当前时间
示例资源
- info://server/status:服务器状态和运行时信息
- info://server/config:服务器配置详细信息
发展
脚本
npm run dev-使用热重新加载启动开发服务器npm run build-为生产而建npm start-启动生产服务器npm run clean-清理构建工件npm run lint-运行ESLintnpm run lint:fix-修复ESLint问题
测试您的服务器
您可以使用任何MCP客户端测试您的MCP服务器。服务器通过stdio进行通信,因此您也可以直接对其进行测试:
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' | node dist/index.js
部署
作为独立应用程序
npm run build
node dist/index.js
作为图书馆
您还可以将其用作其他项目中的库:
import { MCPServer, ToolHandler, ResourceHandler } from './src/index.js';
const myTools: ToolHandler[] = [
// Your custom tools
];
const server = new MCPServer({
name: "my-server",
version: "1.0.0",
tools: myTools,
resources: [],
});
await server.start();
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件
支持
对于问题和疑问:
- 在GitHub上创建问题
- 检查MCP文档
- 查看示例实现
更新日志
1.0.0
- 初始版本
- 基本工具和资源支持
- TypeScript样板
- 示例实现