StdioMCPServer模板
此存储库是基于stdio的MCP(模型上下文协议)服务器的模板实现。 它提供了一种结构,开发人员可以在其中添加通过标准输入/输出发送的MCP消息执行的自定义“工具”。
主要目标
- 为使用stdio上的消息I/O运行的MCP工具提供模板。
- 提供通用的服务器和框架功能,以便开发人员可以专注于实现工具逻辑。
- 提供示例和测试脚手架,以帮助通过stdio运行和验证工具。
主要特点
- 使用ESM(导入/导出)模块实现。
- 类似插件的工具架构
src/toolmng/Tool.ts和src/toolmng/ToolRegistry.ts. - 示例工具(
SampleTool)包含在src/tools/作为参考实现。 - 包括单元测试(Jest)和E2E测试目录。
存储库布局(摘录)
src/-源代码
- index.ts -CLI入口点 - StdioMCPServer.ts -基于stdio的服务器核心 - Logger.ts -记录器实用程序 - toolmng/Tool.ts -工具摘要/界面 - toolmng/ToolRegistry.ts -工具注册和查找 - tools/SampleTool.ts -示例工具实现
test/-测试
- unit/ -单元测试 - e2e/mcpServer/ -端到端测试(CLI运行程序等)
有关完整的文件树,请参阅存储库根。
开发环境(假设)
- 操作系统:Windows
- Shell:PowerShell(注意PowerShell特定的命令语法)
- Node.js:v18.x(推荐)
- npm用于依赖管理
本地设置
从项目根目录安装依赖项并运行测试(PowerShell示例):
npm install ; npm run test注意:确切的脚本和依赖关系在 package.json;如果你需要改变行为,请确认它们。
运行测试
- 单元测试:
npm run test(杰斯特) - E2E测试:见
test/e2e/--执行E2E可能需要额外的命令或环境设置。
PowerShell示例:
npm install ; npm run test如果测试失败,请检查输出日志并验证您的Node.js版本和安装的依赖项。
添加工具(快速指南)
这个项目的核心是添加“工具”类来扩展行为。基本步骤:
- 参见
src/toolmng/Tool.ts并实现一个新的Tool类(使用SampleTool作为参考)。 - 从导出工具
src/tools/index.ts因此可以注册。 ToolRegistry(insrc/toolmng/ToolRegistry.ts)将在启动时加载和注册工具,以便执行它们。- 在下面添加单元测试
test/unit/E2E测试test/e2e/根据需要。
实施说明:
- 遵循存储库的消息和响应约定(例如
{ content: [...] }某些工具中使用的格式)。 - 因为消息是通过stdio传递的,所以请确保正确的序列化(JSON),并在解析时考虑边缘情况。
贡献
- 欢迎贡献:添加新工具、改进现有工具或添加测试。
- 更改行为时,包括单元测试以验证正确性,并遵循此存储库中使用的Jest ESM/Babel指南。
