返回市场
无服务器MCP服务器

无服务器MCP服务器

作者:eleva17 星标更新:2025-04-18

项目介绍

🧠 serverless-mcp-server

一个部署在AWS Lambda上的超级简单的模型上下文协议(MCP)服务器,并通过Amazon API Gateway公开。使用Serverless框架进行部署。 此骨架基于Frédéric Barthelet的出色工作:他在这个仓库中开发了一个中间件,用于将MCP服务器与AWS Lambda函数集成。

长篇故事

📖在这里阅读完整的文章

🛠 特性

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

📦 项目结构

serverless-mcp-server/
├── src/                    # 源代码
│   └── index.js                # MCP服务器处理器
├── .gitignore              # Git忽略文件
├── package.json            # 项目依赖
├── package-lock.json       # 项目锁定文件
├── README.md               # 此文档文件
└── serverless.yml          # Serverless框架配置

🛠 先决条件

🚀 开始使用

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

本地端点将在以下位置可用: POST http://localhost:3000/dev/mcp

请注意,默认情况下会添加/dev/阶段,这反映了API Gateway V1(REST API)的行为。

切换到API Gateway V2(HTTP API)

如果您想使用API Gateway V2,可以更改serverless.yml文件,在events部分使用httpApi而不是http。这将允许您使用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请求。

🧪 使用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的出色工作:他在这个仓库中开发了一个中间件,用于将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托管的MCP服务器",
  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 — 欢迎分叉、调整并部署您自己的版本!