使用说明
项目简介
本仓库提供了一个基于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 服务器进行交互。
安装步骤
-
安装依赖: 在项目根目录下运行 'pnpm install' 或 'npm install' 安装项目依赖。
-
修改 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" } ] } ] }
基本使用方法
-
启动 MCP 服务器: 在项目根目录下,打开终端并运行命令 'tsx ./mcp/mcp.server.js' 或 'node ./mcp/mcp.server.js' 启动 MCP 服务器。服务器将通过标准输入输出与客户端通信。
-
运行 MCP 客户端: 在 另一个终端窗口 中,同样在项目根目录下,运行命令 'tsx ./mcp/mcp.client.ts' 启动 MCP 客户端。客户端将连接到之前启动的 MCP 服务器,并使用服务器提供的工具进行计算。
-
观察输出: 客户端和服务器的运行日志会在各自的终端窗口中输出。客户端会调用服务器的 'add' 和 'multiply' 工具,并使用 Langchain Agent 与服务器进行交互。
验证 MCP 服务器: 可以使用 MCP 官方提供的检测工具 'npx @modelcontextprotocol/inspector node ./mcp/mcp.server.js' 来验证服务器是否符合 MCP 协议规范。
信息
分类
开发者工具