项目简介

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 应用框架的集成示例,方便开发者在实际项目中使用。

安装步骤

  1. 安装 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"' 参数。

基本使用方法

  1. 创建 Express 应用: 创建一个标准的 Express.js 应用。

  2. 引入 MCPClient 和 mcpTool: 在你的服务器代码中引入 'MCPClient' 和 'mcpTool'。'mcpTool' 是一个辅助函数,用于简化工具的定义。

    import express from 'express'
    import { MCPClient, mcpTool } from 'mcp-express-adapter'
    import { z } from 'zod' //  如果需要使用类型安全的工具定义,可以引入 zod
  3. 定义工具 (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'
      },
    })
  4. 创建 MCPClient 实例: 创建 'MCPClient' 实例,并传入 'endpoint'(MCP 客户端的访问路径), 'tools'(工具数组), 'serverName' 和 'serverVersion'(服务器的名称和版本信息)。

    const mcpClient = new MCPClient({
      endpoint: '/mcp', //  MCP 客户端的访问路径,例如 /mcp
      tools: [weatherTool], //  注册的工具列表
      serverName: 'demo-server', //  服务器名称
      serverVersion: '1.0.0', //  服务器版本
    })
  5. 挂载 MCP 中间件: 将 'mcpClient.middleware()' 挂载到你的 Express 应用的指定路径上。

    app.use('/mcp', mcpClient.middleware()) //  将 MCP 中间件挂载到 /mcp 路径
  6. 启动 Express 服务器: 启动你的 Express.js 服务器。

  7. 配置 MCP 客户端: 按照 "服务器配置" 章节的说明,配置你的 MCP 客户端,使其连接到你的 MCP Express Adapter 服务器的 SSE endpoint。

  8. 测试: 在 MCP 客户端中测试你定义的工具。

通过以上步骤,你就可以快速搭建一个基于 Express.js 的 MCP 服务器,并将其集成到你的 LLM 应用中。

信息

分类

开发者工具