使用说明

项目简介

'mcp-serverless' 是一个 Model Context Protocol (MCP) 服务器的 serverless 实现方案。它专注于提供简洁的工具管理界面,并允许通过内存或标准输入/输出来进行客户端连接,非常适合在无服务器环境或需要轻量级部署的场景下使用。

主要功能点

  • 工具注册与管理: 允许开发者注册和管理各种工具,例如计算器、数据查询工具等。
  • 工具调用: 支持客户端通过 MCP 协议调用已注册的工具。
  • Serverless 架构: 设计为 serverless 模式,易于部署和扩展。
  • 内存客户端-服务器连接: 提供在内存中创建客户端-服务器连接的能力,方便集成测试和本地开发。
  • 上下文传递: 支持在客户端请求中传递上下文信息,例如 API 密钥,以便在工具函数中使用。
  • 标准 I/O 传输: 除了内存连接,还支持通过标准输入/输出来进行客户端和服务器之间的通信。

安装步骤

  1. 确保已安装 Node.js 和 npm。
  2. 在你的项目目录下,运行以下命令安装 'mcp-serverless':
    npm install @tilfin/mcp-serverless

服务器配置

由于 'mcp-serverless' 提供了多种连接方式,针对不同的使用场景,客户端的配置方式有所不同。

1. 内存连接 (In-Memory):

  • 项目简介: 内存连接模式适用于客户端和服务器运行在同一进程中的情况。这种模式无需启动独立的服务器进程,客户端可以直接通过 JavaScript 代码与服务器交互。

  • 主要功能点: 零配置,快速集成,适用于本地测试和 serverless 函数。

  • 配置信息 (JSON):

    {
      "serverName": "MCP Serverless In-Memory",
      "connectionType": "in-memory",
      "description": "使用 createService 创建的内存连接,无需额外配置。"
    }

    参数注释:

    • 'serverName': MCP 服务器的名称,客户端用于标识。
    • 'connectionType': 连接类型,这里为 "in-memory" 表示内存连接。
    • 'description': 连接方式的描述信息。
  • 基本使用方法: 在你的客户端代码中,你需要使用 'createService' 函数创建一个连接到内存服务器的客户端实例。以下是一个简单的示例,展示了如何注册工具并调用:

    import { createService, ToolManager } from '@tilfin/mcp-serverless';
    
    // 创建工具管理器
    const toolManager = new ToolManager();
    
    // 注册工具
    toolManager.registerTools([
      {
        name: 'calculator',
        description: '执行基本的算术运算',
        inputSchema: {
          type: 'object',
          properties: {
            operation: { type: 'string' },
            numbers: { type: 'array', items: { type: 'number' } }
          },
          required: ['operation', 'numbers']
        },
        toolFunction: async (params) => {
          let result;
          if (params.operation === 'add') {
            result = params.numbers.reduce((sum, n) => sum + n, 0);
          }
          return [{ type: 'text', text: result.toString() }];
        }
      }
    ]);
    
    // 创建内存客户端
    const client = createService(toolManager);
    
    async function main() {
      // 列出可用工具
      const toolsList = await client.listTools();
      console.log("Available tools:", toolsList.tools);
    
      // 调用工具
      const result = await client.callTool({
        name: 'calculator',
        arguments: {
          operation: 'add',
          numbers: [1, 2, 3]
        }
      });
      console.log("Tool call result:", result.content);
    }
    
    main();

2. 标准 I/O 连接 (Stdio):

  • 项目简介: 标准 I/O 连接模式允许客户端和服务器通过操作系统的标准输入和输出来进行通信。这种模式适用于需要独立服务器进程,但又希望简化部署的场景。

  • 主要功能点: 跨进程通信,易于部署,可以使用任何支持标准 I/O 的客户端。

  • 配置信息 (JSON):

    {
      "serverName": "MCP Serverless Stdio",
      "connectionType": "stdio",
      "command": "node",
      "args": ["stdio_server.mjs"],
      "description": "使用标准 I/O 连接,服务器启动命令为 'node stdio_server.mjs'"
    }

    参数注释:

    • 'serverName': MCP 服务器的名称。
    • 'connectionType': 连接类型,这里为 "stdio" 表示标准 I/O 连接。
    • 'command': 启动服务器进程的命令,这里使用 'node' 运行 JavaScript 文件。
    • 'args': 传递给服务器启动命令的参数,这里指定运行 'stdio_server.mjs' 文件。
    • 'description': 连接方式和服务器启动命令的描述信息。
  • 基本使用方法:

    1. 启动服务器: 首先,你需要运行 'stdio_server.mjs' 文件来启动 MCP 服务器。在仓库的 'example' 目录下可以找到 'stdio_server.mjs' 文件。你需要在服务器端运行该文件,例如:
      node example/stdio_server.mjs
    2. 配置客户端: 在你的 MCP 客户端应用中,配置连接类型为 "stdio",并设置服务器的启动命令为 'node stdio_server.mjs' (或根据实际 'stdio_server.mjs' 文件的路径进行调整)。客户端将通过标准输入/输出与运行中的 'stdio_server.mjs' 进程通信。

注意: 以上配置信息中的 'command' 和 'args' 需要根据 'stdio_server.mjs' 文件在你的系统中的实际路径进行调整。

基本使用方法 (通用)

无论使用哪种连接方式,MCP 客户端的基本使用流程都包括:

  1. 连接服务器: 客户端根据配置信息与 MCP 服务器建立连接。
  2. 列出工具: 客户端可以请求服务器列出所有可用的工具。
  3. 调用工具: 客户端可以根据工具的名称和参数,请求服务器调用指定的工具并获取结果。

请参考 'mcp-serverless' 仓库的示例代码和文档,了解更详细的使用方法和 API。

信息

分类

开发者工具