mcpField
🧠
🧠 serverless-mcp-server

🧠 serverless-mcp-server

本地服务
github.com/eleva云与基础设施1718 周前更新

关于 🧠 serverless-mcp-server

这是一个通过 Serverless Framework 将 MCP 服务部署到 AWS Lambda,并由 Amazon API Gateway 提供 HTTP 访问的基础模板,适合构建 MCP 工具的开发者。它包含本地离线开发支持和示例 add 工具。

主要功能

  1. 01部署到 AWS Lambda
  2. 02API Gateway HTTP POST 端点
  3. 03使用 serverless-offline 本地开发
  4. 04示例 add 工具
  5. 05Jest 测试

适用场景

  1. 01在 AWS Lambda 部署 MCP 服务
  2. 02在本地测试 MCP 请求
  3. 03基于精简模板扩展服务

MCP 相关

通过 /mcp HTTP POST 端点向 MCP 客户端提供服务。示例 add 工具展示 JSON-RPC 交互。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"serverless": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
启动命令npx -y @modelcontextprotocol/inspector

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@modelcontextprotocol/inspector

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

🧠 serverless-mcp-server

一个超级简单的 Model Context Protocol(MCP)服务,部署在 AWS Lambda 上,并通过 Amazon API Gateway 对外提供服务,使用 Serverless Framework 部署。 此项目骨架基于 Frédéric Barthelet 的出色工作:他开发了一个 middy 中间件,用于在 此仓库中将 Model Context Protocol(MCP)服务集成到 AWS Lambda 函数。

长话短说

📖在 dev.to 上阅读完整文章

🛠 功能

  • 🪄 使用 @modelcontextprotocol/sdk 搭建最简 MCP 服务
  • 🚀 部署为单个 AWS Lambda 函数
  • 🌐 通过 API Gateway 在 /mcp 提供 HTTP POST 端点
  • 🔄 支持通过 serverless-offline 进行本地开发
  • 🧪 包含一个简单示例工具(add),并支持 JSON-RPC 交互

📦 项目结构

serverless-mcp-server/
├── src/                    # Source code
│   └── index.js                # MCP server handler
├── .gitignore              # Git ignore file
├── package.json            # Project dependencies
├── package-lock.json       # Project lock file
├── README.md               # This documentation file
└── serverless.yml          # Serverless Framework config

🛠 先决条件

🚀 开始使用

  1. 安装依赖项:
npm install
  1. 全局安装 open source severless(如果尚未安装):
npm install -g osls
  1. 使用 serverless-offline 在本地运行
npm sls offline

本地端点地址: POST http://localhost:3000/dev/mcp

请注意,使用 serverless-offline 时会默认添加 /dev/ 阶段,以反映 Api Gateway V1(REST API)的行为。

切换到 Api Gateway V2(HTTP API)

如果要使用 API Gateway V2,可以将 serverless.yml 文件中 events 部分的 http 改为 httpApi。这样即可使用 HTTP API,而不是 REST API。 这样即可使用 HTTP API,而不是 REST API。

functions:
  mcpServer:
    handler: src/index.handler
    events:
      - httpApi:
          path: mcp
          method: post

本地端点地址: POST http://localhost:3000/mcp

请注意,使用 API Gateway V2 时不需要 /dev/ 阶段。 请注意,相应地修改测试用的 curl 和 postman 请求。

🧪 使用 MCP inspector 进行测试

运行

npx @modelcontextprotocol/inspector node src/index.mjs

这将在端口 6274 上启动 MCP inspector。随后,你可以在浏览器中访问 http://127.0.0.1:6274 打开 inspector。 在 inspector 中配置参数:

  • 将 Transport Type 设为 HTTP Streamable
  • 将 URL 设为 http://localhost:3000/dev/mcp
  • 点击 connect

你将在 inspector 中看到工具列表及其参数。

🧪 使用 curl 请求进行测试

列出工具
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
    }
  }
}'

🧪 使用 jest 进行测试

__tests__ 文件夹中包含一些基本测试。你可以通过以下命令运行:

npm run test

🧬 代码解析

此代码基于 Frédéric Barthelet 的出色工作:他开发了一个 middy 中间件,用于在 此仓库中将 Model Context Protocol(MCP)服务集成到 AWS Lambda 函数。

src/index.js
import middy from "@middy/core";
import httpErrorHandler from "@middy/http-error-handler";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
import mcpMiddleware from "middy-mcp";

const server = new McpServer({
  name: "Lambda hosted MCP Server",
  version: "1.0.0",
});

server.tool("add", { a: z.number(), b: z.number() }, async ({ a, b }) => ({
  content: [{ type: "text", text: String(a + b) }],
}));

export const handler = middy()
  .use(mcpMiddleware({ server }))
  .use(httpErrorHandler());

📡 部署到 AWS

只需运行:

sls deploy

部署完成后,MCP 服务将在命令输出的 URL 上运行。

🔖 引用

以下通讯曾引用此仓库:

📘 许可证

MIT — 欢迎分叉、修改并部署你自己的版本!

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。