返回 MCP 目录
public公开dns本地运行

nestjs-mcp-server-langchainjs-demo

该项目展示了基于NestJS的模型上下文协议(MCP)微服务架构实现,包含提供时间上下文功能的MCP服务器和集成LangChain.js的客户端,支持多服务器连接。

article

README

🚀 使用 NestJS MCP 服务器 - 模型上下文协议示例

本项目演示了如何使用 NestJS 实现模型上下文协议(MCP)以及微服务架构。它包含两个主要服务,mcp-server 可提供当前时间上下文,供大型语言模型(LLMs)使用;mcp-backend 作为客户端,借助 LangChain.js 并集成 MCP 客户端 SDK 来连接 MCP 服务器。

🚀 快速开始

先决条件

  • Node.js (v20 或更高版本)
  • npm

安装步骤

  1. 克隆本仓库。
  2. 安装项目依赖:
npm install
  1. 复制 .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 工具

  1. 打开 Postman,创建一个新请求。
  2. 设置请求 URL 为 http://localhost:3001
  3. 选择 POST 请求方法。
  4. 在请求头中添加 Content-Type: application/json
  5. 在请求体中输入以下 JSON 数据:
{
  "message": "What time is it in Viet Nam?"
}
  1. 发送请求,查看响应结果。

高级用法

若要在 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 文件。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端