Nest Mcp Sse

Nest Mcp Sse

🚀 Nest-mcp-sse

Nest-mcp-sse 是一个用于在 NestJS 工程中快速开发 SSE(Server-Sent Events)传输类型 McpServer 的动态模块。它简化了与 McpServer 的交互,让开发者无需处理连接运输、生命周期管理和消息传递等繁琐任务,从而专注于 MCP 工具的核心功能开发。该模块采用最小封装方式,降低学习和使用成本,同时保证高性能和灵活性。

🚀 快速开始

Nest-mcp-sse 能助力你在 NestJS 项目中快速搭建 SSE 传输类型的 McpServer。下面为你详细介绍使用步骤。

✨ 主要特性

  • 快速创建 MCP 服务器:通过简单的配置即可快速启动 MCP 服务器。
  • 支持多个实例管理:允许同时管理和运行多个 McpServer 实例。
  • 自动处理 SSE 连接生命周期:模块内置了对 SSE 连接的自动管理功能,简化了连接建立和维护过程。

📦 安装指南

你可以使用以下任意一种包管理工具来安装 nest-mcp-sse

npm install nest-mcp-sse
# 或者
yarn add nest-mcp-sse
# 或者
pnpm add nest-mcp-sse

💻 使用示例

基础用法

1. 导入模块

在你的 NestJS 模块中导入 McpModule

import { Module } from '@nestjs/common';
import { McpModule } from 'nest-mcp-sse';

@Module({
imports: [McpModule.register({
controllerBaseUrl: 'api/mcp',
mcpServerConfigs: [
{
serverId: 'default-server', // MCP Server 的唯一标识符
serverInfo: {
name: 'Default Server', // 直接传递给 MCP TS-SDK 的 McpServer 类的第一个参数
options: { /* 直接传递给 MCP TS-SDK 的 McpServer 类的第二个参数 */ }
}
}
]
})],
})
export class AppModule {}

2. 操作 McpServer 实例

你可以通过 McpServerService 来管理多个 McpServer 实例:

import { McpServerService } from 'nest-mcp-sse';

@Injectable()
export class MyService {
constructor(
private readonly mcpServerService: McpServerService,
) {}

// 注册一个新的 MCP Server 实例
async registerMcpServer() {
const server = await this.mcpServerService.registerServer({
serverId: 'new-server',
serverInfo: { /* 配置参数 */ },
});
return server;
}

// 获取指定 ID 的 MCP Server 实例
getMcpServer(serverId: string) {
return this.mcpServerService.getServer(serverId);
}

// 检查是否已注册某个 MCP Server 实例
hasMcpServer(serverId: string) {
return this.mcpServerService.hasServer(serverId);
}
}

3. 手动注册服务器实例

如果你希望手动管理 McpServer 的连接,可以使用以下方法:

import { McpServerService } from 'nest-mcp-sse';

// 注册一个新的 MCP Server 实例
const server = await mcpServerService.registerServer({
serverId: 'manual-server',
serverInfo: { /* 配置参数 */ },
});

// 连接 MCP Server 到传输层
await mcpServerService.connect('manual-server', transportInstance);

高级用法

自动创建的服务器端点

模块会自动为每个 McpServer 实例创建以下两个端点:

  • SSE 连接端点{controllerBaseUrl}/{serverId}/connect
    • 示例 URL:http://localhost:3000/api/mcp/default-server/connect
  • 消息处理端点{controllerBaseUrl}/{serverId}/messages
    • 示例 URL:http://localhost:3000/api/mcp/default-server/messages

高级配置

自定义端点名称

你可以在模块注册时自定义 SSE 和消息端点的名称:

McpModule.register({
controllerBaseUrl: 'api/mcp',
sseEndpoint: 'custom-sse', // 默认为 'sse'
messagesEndpoint: 'custom-messages', // 默认为 'messages'
mcpServerConfigs: [
{
serverId: 'default-server',
serverInfo: { /* 配置参数 */ },
}
],
});
其他配置选项
  • 传输层管理:模块支持自定义传输层的实现,允许开发者根据需求扩展功能。
  • 消息处理:可以通过插件机制扩展 McpServer 的消息处理能力。

📚 详细文档

完整的使用示例可以参考 官方文档 或者模块的 示例项目

📄 许可证

文档中未提及许可证相关信息。

🤝 贡献与支持

  • 如果你发现任何问题或有改进建议,请提交 Issue
  • 欢迎通过 Pull Request 为项目贡献力量!
  • 0 关注
  • 0 收藏,22 浏览
  • system 提出于 2025-10-03 15:36

相似服务问题

相关AI产品