项目简介

serverless-mcp-server 是一个基于 Model Context Protocol (MCP) 的轻量级服务器实现,它被设计为在 AWS Lambda 上以 Serverless 架构运行。该项目旨在提供一个快速、简便的方式来部署 MCP 服务器,从而为大型语言模型 (LLM) 应用提供上下文信息和工具调用能力。它基于 '@modelcontextprotocol/sdk' 和 'middy-mcp' 等库构建,简化了 MCP 服务器的搭建和部署流程。

主要功能点

  • 最小化 MCP 服务器配置: 使用 '@modelcontextprotocol/sdk' 快速搭建 MCP 服务器。
  • Serverless 部署: 以单个 AWS Lambda 函数形式部署,易于扩展和维护。
  • HTTP POST 接口: 通过 Amazon API Gateway 暴露 HTTP POST 接口 '/mcp',方便客户端访问。
  • 本地开发支持: 支持使用 serverless-offline 进行本地开发和测试。
  • 工具示例: 内置一个简单的 'add' 工具,演示 JSON-RPC 交互方式。
  • 灵活部署: 支持切换 API Gateway V1 (REST API) 和 V2 (HTTP API),适应不同需求。

安装步骤

  1. 安装 Node.js 和 npm: 确保已安装 Node.js v22 或更高版本,以及 npm 包管理器。
  2. 安装依赖: 克隆仓库到本地后,在项目根目录下运行以下命令安装项目依赖:
    npm install
  3. 全局安装 Serverless Framework: 如果尚未安装 Serverless Framework,请全局安装:
    npm install -g serverless
    或者安装 Open Source Serverless (osls):
    npm install -g osls

服务器配置

对于 MCP 客户端,需要配置连接到 serverless-mcp-server 的信息。由于这是一个 HTTP POST 接口的 MCP 服务器,客户端应配置使用 'http-post' 命令连接,并指定 API Gateway 提供的 URL 作为参数。

本地开发配置 (使用 serverless-offline):

{
  "serverName": "serverless-mcp-server",
  "command": "http-post",
  "args": ["http://localhost:3000/dev/mcp"]
}

参数注释:

  • 'serverName': 服务器名称,可以自定义。
  • 'command': 连接服务器的命令,对于 HTTP POST 接口,应设置为 'http-post'。
  • 'args': 命令参数,对于 'http-post' 命令,第一个参数是 MCP 服务器的 HTTP POST 接口 URL。本地开发时,使用 'http://localhost:3000/dev/mcp' (或 'http://localhost:3000/mcp',如果配置了 HTTP API)。

AWS 部署后配置:

部署到 AWS 后,Serverless Framework 会在终端输出 API Gateway 的调用 URL。MCP 客户端的配置应使用该 URL 替换本地开发配置中的 URL。

{
  "serverName": "serverless-mcp-server",
  "command": "http-post",
  "args": ["<您的API Gateway部署URL>/mcp"]
}

参数注释:

  • '<您的API Gateway部署URL>': 替换为 Serverless Framework 部署后输出的 API Gateway 调用 URL。

基本使用方法

  1. 本地启动服务器: 在项目根目录下运行以下命令启动本地服务器 (需要先安装 serverless-offline):

    npm sls offline

    本地 MCP 服务器将运行在 'http://localhost:3000/dev/mcp' (或 'http://localhost:3000/mcp')。

  2. 使用 curl 测试工具: 可以使用 'curl' 命令发送 JSON-RPC 请求到本地服务器,例如:

    • 列出工具:

      curl --location 'http://localhost:3000/dev/mcp' \
      --header 'content-type: application/json' \
      --header 'accept: application/json' \
      --header 'jsonrpc: 2.0' \
      --data '{
        "jsonrpc": "2.0",
        "method": "tools/list",
        "id": 1
      }'
    • 调用 'add' 工具:

      curl --location 'http://localhost:3000/dev/mcp' \
      --header 'content-type: application/json' \
      --header 'accept: application/json' \
      --header 'jsonrpc: 2.0' \
      --data '{
        "jsonrpc": "2.0",
        "id": 2,
        "method": "tools/call",
        "params": {
          "name": "add",
          "arguments": {
            "a": 5,
            "b": 3
          }
        }
      }'
  3. 部署到 AWS: 在项目根目录下运行以下命令部署到 AWS (需要配置 AWS 凭证):

    sls deploy

    部署成功后,Serverless Framework 会输出 API Gateway URL,用于 MCP 客户端连接。

信息

分类

开发者工具