项目简介
MCP Express Adapter 是一个轻量级的适配器,旨在帮助开发者使用 Express.js 快速构建 Model Context Protocol (MCP) 服务器。它提供了一个便捷的中间件,可以集成到现有的 Express.js 应用中,轻松实现 MCP 协议,为大型语言模型 (LLM) 应用提供上下文信息和工具服务。
主要功能点
- Express 中间件集成: 以 Express 中间件的形式提供 MCP 服务器功能,易于集成到现有的 Express 应用中。
- SSE 传输支持: 通过 Server-Sent Events (SSE) 协议与 MCP 客户端进行实时通信。
- 工具 (Tools) 实现: 支持注册和执行工具,允许 LLM 客户端调用外部功能,并提供 TypeScript 支持以确保工具实现的类型安全。
- Header-based 授权: 支持基于 Header 的授权机制,可以保护 MCP 服务器的访问安全。
- 多 MCP 客户端: 支持在同一个 Express 服务器上挂载多个 MCP 客户端实例,可以灵活地管理和扩展 MCP 服务。
- Langchain 集成: 提供与 Langchain 和 Langgraph 等 LLM 应用框架的集成示例,方便开发者在实际项目中使用。
安装步骤
- 安装 npm 包:
在你的 Express.js 项目中,使用 npm, yarn 或 pnpm 安装 'mcp-express-adapter' 包:
npm install mcp-express-adapter@latest # 或者 yarn add mcp-express-adapter@latest # 或者 pnpm add mcp-express-adapter@latest
服务器配置
对于 MCP 客户端(例如 Claude 桌面应用),你需要在其配置文件中添加 MCP 服务器的配置信息。以下是一个配置示例,用于连接到本地运行的 MCP Express Adapter 服务器:
{ "mcpServers": { "localMcpServer": { // 服务器名称,可以自定义 "command": "npx", // 启动服务器的命令,这里使用 npx 直接运行 mcp-express-adapter 包 "args": [ // 命令参数 "-y", // 自动确认 npx 的安装提示 "mcp-express-adapter", // 运行 mcp-express-adapter 包,实际上会执行 src/bin/mcp-express.ts 文件 "--host", // 指定 MCP 服务器的 SSE endpoint "http://localhost:3000/mcp/sse" // 你的 MCP Express Adapter 服务器的 SSE endpoint 地址,需要和服务器实际运行地址一致 ] } } }
配置说明:
- '"localMcpServer"': MCP 服务器的自定义名称,在客户端中用于标识和选择服务器。
- '"command": "npx"': 指定用于启动 MCP 服务器的命令为 'npx',它允许直接运行 npm 包的可执行文件。
- '"args"': 一个字符串数组,包含传递给 'npx' 命令的参数。
- '"-y", "mcp-express-adapter"': 告诉 'npx' 运行 'mcp-express-adapter' 包,'-y' 参数是为了自动确认 npx 的安装提示,避免交互。
- '"--host", "http://localhost:3000/mcp/sse"': 关键参数,'--host' 指定了 MCP 客户端需要连接的 MCP 服务器的 SSE endpoint 地址。这里假设你的 MCP Express Adapter 服务器运行在 'http://localhost:3000',并且 MCP 客户端的 endpoint 设置为 '/mcp'。
注意: 请确保 'http://localhost:3000/mcp/sse' 地址与你实际运行 MCP Express Adapter 服务器的地址和 endpoint 设置一致。 如果端口或 endpoint 不同,请相应修改 'args' 中的 '"host"' 参数。
基本使用方法
-
创建 Express 应用: 创建一个标准的 Express.js 应用。
-
引入 MCPClient 和 mcpTool: 在你的服务器代码中引入 'MCPClient' 和 'mcpTool'。'mcpTool' 是一个辅助函数,用于简化工具的定义。
import express from 'express' import { MCPClient, mcpTool } from 'mcp-express-adapter' import { z } from 'zod' // 如果需要使用类型安全的工具定义,可以引入 zod -
定义工具 (Tools): 使用 'mcpTool' 函数定义你的工具。工具需要包含 'name'(工具名称), 'description'(工具描述), 'schema'(输入参数的 JSON Schema 或 Zod Schema), 和 'handler'(工具的处理函数)。
const weatherTool = mcpTool({ name: 'get_weather', description: '获取指定地点的天气信息', schema: z.object({ location: z.string().describe('地点名称'), }), handler: async (args) => { return '地点 ${args.location} 的天气:晴,25°C' }, }) -
创建 MCPClient 实例: 创建 'MCPClient' 实例,并传入 'endpoint'(MCP 客户端的访问路径), 'tools'(工具数组), 'serverName' 和 'serverVersion'(服务器的名称和版本信息)。
const mcpClient = new MCPClient({ endpoint: '/mcp', // MCP 客户端的访问路径,例如 /mcp tools: [weatherTool], // 注册的工具列表 serverName: 'demo-server', // 服务器名称 serverVersion: '1.0.0', // 服务器版本 }) -
挂载 MCP 中间件: 将 'mcpClient.middleware()' 挂载到你的 Express 应用的指定路径上。
app.use('/mcp', mcpClient.middleware()) // 将 MCP 中间件挂载到 /mcp 路径 -
启动 Express 服务器: 启动你的 Express.js 服务器。
-
配置 MCP 客户端: 按照 "服务器配置" 章节的说明,配置你的 MCP 客户端,使其连接到你的 MCP Express Adapter 服务器的 SSE endpoint。
-
测试: 在 MCP 客户端中测试你定义的工具。
通过以上步骤,你就可以快速搭建一个基于 Express.js 的 MCP 服务器,并将其集成到你的 LLM 应用中。
信息
分类
开发者工具