使用说明

项目简介

本仓库提供了一个基于Langchain和NestJS的MCP (Model Context Protocol) 服务器的示例实现。它展示了如何使用 '@modelcontextprotocol/sdk' 库在Node.js环境中快速搭建一个MCP服务器,并集成 Langchain 的能力,为LLM客户端提供资源访问和工具调用等功能。

注意:这是一个基础的示例项目,旨在演示 MCP 服务器的基本概念和实现方式,可能不包含完整的生产级特性。

主要功能点

  • 资源管理: 示例中定义了一个动态的 'greeting' 资源,可以根据 URI 参数返回定制化的问候语。
  • 工具注册与执行: 注册了 'add' 和 'multiply' 两个简单的数学计算工具,演示了如何向 LLM 客户端暴露外部功能。
  • Prompt 模板: 虽然示例中没有显式定义 Prompt 模板,但服务器具备定义和渲染 Prompt 的潜力,可以通过扩展来实现更复杂的 Prompt 管理。
  • Stdio 传输协议: 使用 Stdio (标准输入输出) 作为服务器和客户端之间的通信协议,简化了部署和运行。
  • JSON-RPC 通信: 服务器和客户端通过 JSON-RPC 协议进行结构化数据交换,符合 MCP 协议规范。
  • 会话管理与能力声明: 虽然示例较为基础,但 MCP 服务器框架本身支持会话管理和能力声明,可以进行扩展。
  • 集成 Langchain: 客户端示例使用了 'langchain' 和 '@langchain/mcp-adapters',展示了如何利用 Langchain Agent 框架与 MCP 服务器进行交互。

安装步骤

  1. 安装依赖: 在项目根目录下运行 'pnpm install' 或 'npm install' 安装项目依赖。

  2. 修改 package.json (重要): 为了支持 'mcp' 文件夹下的 'mcp.client.ts' 客户端代码,需要修改 'package.json' 文件中的 'type' 字段为 'module',确保使用 ES modules 模块系统。

    {
      "name": "langchain_nestjs",
      "version": "0.0.1",
      // ... 其他配置
      "type": "module", // 添加或修改为 "module"
      // ... 其他配置
    }

服务器配置

MCP 客户端需要配置服务器的启动命令和参数才能连接。以下是基于本仓库示例生成的配置信息:

{
  "serverName": "Demo Server",  // MCP 服务器名称 (从 mcp.server.js 中 server.name 获取)
  "command": "node",           // 启动服务器的命令 (Node.js 环境)
  "args": [                     // 启动命令的参数
    "./mcp/mcp.server.js"   // 服务器脚本路径 (相对于项目根目录)
  ],
  "transport": "stdio"         // 使用 Stdio 传输协议
}

参数注释:

  • 'serverName': MCP 服务器的名称,用于客户端识别。
  • 'command': 运行服务器端代码的可执行命令,通常为 'node' 或 'python' 等。
  • 'args': 传递给 'command' 的参数数组,用于指定服务器脚本的路径或其他配置。
  • 'transport': 指定 MCP 服务器使用的传输协议,本示例为 'stdio'。

MCP 客户端配置示例 (JSON 格式):

{
  "mcpServers": [
    {
      "name": "math-client", // MCP 客户端名称
      "version": "1.0.0",
      "servers": [
        {
          "serverName": "Demo Server",
          "command": "node",
          "args": [ "./mcp/mcp.server.js" ],
          "transport": "stdio"
        }
      ]
    }
  ]
}

基本使用方法

  1. 启动 MCP 服务器: 在项目根目录下,打开终端并运行命令 'tsx ./mcp/mcp.server.js' 或 'node ./mcp/mcp.server.js' 启动 MCP 服务器。服务器将通过标准输入输出与客户端通信。

  2. 运行 MCP 客户端: 在 另一个终端窗口 中,同样在项目根目录下,运行命令 'tsx ./mcp/mcp.client.ts' 启动 MCP 客户端。客户端将连接到之前启动的 MCP 服务器,并使用服务器提供的工具进行计算。

  3. 观察输出: 客户端和服务器的运行日志会在各自的终端窗口中输出。客户端会调用服务器的 'add' 和 'multiply' 工具,并使用 Langchain Agent 与服务器进行交互。

验证 MCP 服务器: 可以使用 MCP 官方提供的检测工具 'npx @modelcontextprotocol/inspector node ./mcp/mcp.server.js' 来验证服务器是否符合 MCP 协议规范。

信息

分类

开发者工具