Back to MCP directory
publicPublicdnsLocal runtime

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

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client