Nest-mcp-sse 是一个用于在 NestJS 工程中快速开发 SSE(Server-Sent Events)传输类型 McpServer 的动态模块。它简化了与 McpServer 的交互,让开发者无需处理连接运输、生命周期管理和消息传递等繁琐任务,从而专注于 MCP 工具的核心功能开发。该模块采用最小封装方式,降低学习和使用成本,同时保证高性能和灵活性。
Nest-mcp-sse 能助力你在 NestJS 项目中快速搭建 SSE 传输类型的 McpServer。下面为你详细介绍使用步骤。
你可以使用以下任意一种包管理工具来安装 nest-mcp-sse:
npm install nest-mcp-sse
# 或者
yarn add nest-mcp-sse
# 或者
pnpm add nest-mcp-sse
在你的 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 {}
你可以通过 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);
}
}
如果你希望手动管理 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 实例创建以下两个端点:
{controllerBaseUrl}/{serverId}/connect
http://localhost:3000/api/mcp/default-server/connect{controllerBaseUrl}/{serverId}/messages
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: { /* 配置参数 */ },
}
],
});
文档中未提及许可证相关信息。