article
README
🚀 使用 NestJS MCP 服务器 - 模型上下文协议示例
本项目演示了如何使用 NestJS 实现模型上下文协议(MCP)以及微服务架构。它包含两个主要服务,mcp-server 可提供当前时间上下文,供大型语言模型(LLMs)使用;mcp-backend 作为客户端,借助 LangChain.js 并集成 MCP 客户端 SDK 来连接 MCP 服务器。
🚀 快速开始
先决条件
- Node.js (v20 或更高版本)
- npm
安装步骤
- 克隆本仓库。
- 安装项目依赖:
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
运行服务
你需要同时启动两个服务,以实现完整功能:
启动 MCP 服务器
npm run start:dev mcp-server
此命令将启动 MCP 服务器,默认端口为 3000。
启动 MCP 后台
npm run start:dev mcp-backend
此命令将启动 MCP 后台,默认端口为 3001。
💻 使用示例
基础用法
当两个服务都启动后,你可以通过发送 POST 请求来测试功能:
样例请求
向 http://localhost:3001 发送 POST 请求,并在请求体中包含如下 JSON 数据:
{
"message": "What time is it in Viet Nam?"
}
使用 curl 工具
curl -X POST http://localhost:3001 -H "Content-Type: application/json" -d '{"message":"What time is it in Viet Nam?"}'
使用 Postman 工具
- 打开 Postman,创建一个新请求。
- 设置请求 URL 为
http://localhost:3001。 - 选择 POST 请求方法。
- 在请求头中添加
Content-Type: application/json。 - 在请求体中输入以下 JSON 数据:
{
"message": "What time is it in Viet Nam?"
}
- 发送请求,查看响应结果。
高级用法
若要在 mcp-backend 中连接多个 MCP 服务器,可在 src/main.ts 文件中进行如下配置:
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
// 添加其他 MCP 服务器的主机和端口
const otherMcpServers = ['http://localhost:3002', 'http://localhost:3003'];
// 注册 MCP 服务提供程序(可选)
// app.registerMcpProvider(otherMcpServers);
await app.listen(3001);
}
📚 详细文档
架构说明
- mcp-server:负责处理并返回与时间相关的请求。
- mcp-backend:作为客户端,向 MCP 服务器发送请求并接收响应。
所用技术
- NestJS:用于构建微服务架构。
- LangChain.js:用于与大型语言模型交互。
- Axios:用于处理 HTTP 请求。
📄 许可证
本项目采用 UNLICENSED 许可证进行分发,详细信息请查阅 LICENSE 文件。
微信扫一扫