README
🚀 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
- 示例 URL:
- 消息处理端点:
{controllerBaseUrl}/{serverId}/messages- 示例 URL:
http://localhost:3000/api/mcp/default-server/messages
- 示例 URL:
高级配置
自定义端点名称
你可以在模块注册时自定义 SSE 和消息端点的名称:
McpModule.register({
controllerBaseUrl: 'api/mcp',
sseEndpoint: 'custom-sse', // 默认为 'sse'
messagesEndpoint: 'custom-messages', // 默认为 'messages'
mcpServerConfigs: [
{
serverId: 'default-server',
serverInfo: { /* 配置参数 */ },
}
],
});
其他配置选项
- 传输层管理:模块支持自定义传输层的实现,允许开发者根据需求扩展功能。
- 消息处理:可以通过插件机制扩展 McpServer 的消息处理能力。
📚 详细文档
📄 许可证
文档中未提及许可证相关信息。
🤝 贡献与支持
- 如果你发现任何问题或有改进建议,请提交 Issue。
- 欢迎通过 Pull Request 为项目贡献力量!
Scan to join WeChat group