基于stdio的MCP服务器模板

提供基于标准输入/输出的MCP(模型上下文协议)服务器模板,支持开发者通过消息I/O实现自定义工具。

  • by nojaja
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 nojaja/StdioMCPServer-template

使用说明

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版本和安装的依赖项。

添加工具(快速指南)

这个项目的核心是添加“工具”类来扩展行为。基本步骤:

  1. 参见 src/toolmng/Tool.ts 并实现一个新的Tool类(使用 SampleTool 作为参考)。
  2. 从导出工具 src/tools/index.ts 因此可以注册。
  3. ToolRegistry (in src/toolmng/ToolRegistry.ts)将在启动时加载和注册工具,以便执行它们。
  4. 在下面添加单元测试 test/unit/ E2E测试 test/e2e/ 根据需要。

实施说明:

  • 遵循存储库的消息和响应约定(例如 { content: [...] } 某些工具中使用的格式)。
  • 因为消息是通过stdio传递的,所以请确保正确的序列化(JSON),并在解析时考虑边缘情况。

贡献

  • 欢迎贡献:添加新工具、改进现有工具或添加测试。
  • 更改行为时,包括单元测试以验证正确性,并遵循此存储库中使用的Jest ESM/Babel指南。