作者:@LiusDev
此仓库演示了一个基于NestJS实现的模型上下文协议(MCP)微服务架构。它由两个主要服务组成:
npm install
.env.example重命名为.env并添加你的OpenAI API密钥:cp .env.example .env
然后编辑.env文件以包含你的OpenAI API密钥:
OPENAI_API_KEY=your_openai_api_key_here
OPENAI_API_URL=https://api.openai.com/v1
PORT=3001
为了实现完整功能,你需要运行两个服务:
npm run start:dev mcp-server
这将在默认端口3000启动MCP服务器。
npm run start:dev mcp-backend
这将在默认端口3001启动MCP后端。
一旦两个服务都在运行,你可以通过发送POST请求到MCP后端来测试其功能:
向http://localhost:3001发送一个POST请求,附带以下JSON正文:
{
"message": "越南现在几点?"
}
curl -X POST http://localhost:3001 -H "Content-Type: application/json" -d "{\"message\": \"越南现在几点?\"}"
http://localhost:3001application/json{
"message": "越南现在几点?"
}
响应将包含通过MCP服务器的时间上下文函数检索到的越南当前时间。
后端可以同时连接到多个MCP服务器。要添加额外的服务器,请修改apps/mcp-backend/src/mcp-backend.module.ts中的McpClientModule.register配置:
McpClientModule.register({
throwOnLoadError: true,
prefixToolNameWithServerName: false, // 设置为true以在工具名称前加上服务器名称
additionalToolNamePrefix: '',
mcpServers: {
myServer: {
transport: 'sse',
url: 'http://localhost:3000/sse',
useNodeEventSource: true,
reconnect: {
enabled: true,
maxAttempts: 5,
delayMs: 2000,
},
},
// 在这里添加额外的服务器
anotherServer: {
transport: 'sse',
url: 'http://localhost:4000/sse', // 另一个服务器的不同端口
useNodeEventSource: true,
reconnect: {
enabled: true,
maxAttempts: 5,
delayMs: 2000,
},
},
},
}),
当连接到多个服务器时:
prefixToolNameWithServerName: true以避免工具名称冲突mcpServers对象中具有唯一的键MCP客户端将自动从所有配置的服务器中获取工具,并使其对LLM可用。
mcp-server/
├── apps/
│ ├── mcp-server/ # MCP服务器实现
│ └── mcp-backend/ # MCP客户端实现
├── dist/ # 编译输出
├── node_modules/
├── .env # 环境变量
└── package.json
本项目根据UNLICENSED许可证发布 - 查看LICENSE文件以获取详情。