一个用于集成 AWS Lambda 函数与 Model Context Protocol (MCP) 服务器的 Middy 中间件。
middy-mcp-adapter 是一个中间件,它使 AWS Lambda 函数与 Model Context Protocol 服务器之间的无缝集成成为可能。它提供了一种方便的方式来处理 Lambda 函数中的 MCP 请求和响应,使用 Middy 中间件框架。它支持通过 API Gateway(包括 REST API / v1 和 HTTP API / v2)以及来自 ALB 的请求发送到 AWS Lambda 的代理集成。
npm install middy-mcp-adapter
此中间件可以抛出 HTTP 异常,因此与 @middy/http-error-handler 结合使用可能会很方便。
以下是一个最小的 Lambda 函数处理器文件示例。将此 Lambda 部署为 API Gateway 上 POST 路由的代理集成即可开始使用。
import middy from '@middy/core'
import httpErrorHandler from '@middy/http-error-handler'
import mcpMiddleware from 'middy-mcp-adapter'
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
// 创建一个 MCP 服务器
const server = new McpServer({
name: 'Lambda 托管的 MCP 服务器',
version: '1.0.0'
})
export const handler = middy()
.use(mcpMiddleware({ server }))
.use(httpErrorHandler())
import middy from '@middy/core'
import httpErrorHandler from '@middy/http-error-handler'
import mcpMiddleware from 'middy-mcp-adapter'
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
import {
ListToolsRequestSchema,
CallToolRequestSchema
} from '@modelcontextprotocol/sdk/types.js'
import { z } from 'zod'
const server = new McpServer({
name: 'Lambda 托管的 MCP 服务器',
version: 1.0.0
})
server.registerTool(
'add',
{
title: '加法工具',
description: '两个数字相加',
inputSchema: { a: z.number(), b: z.number() },
outputSchema: { result: z.number() }
},
async ({ a, b }) => {
const output = { result: a + b }
return {
content: [{ type: 'text', text: JSON.stringify(output) }],
structuredContent: output
}
}
)
server.registerTool(
'multiply',
{
title: '乘法工具',
description: '两个数字相乘',
inputSchema: { a: z.number(), b: z.number() },
outputSchema: { result: z.number() }
},
async ({ a, b }) => {
const output = { result: a * b }
return {
content: [{ type: 'text', text: JSON.stringify(output) }],
structuredContent: output
}
}
)
export const handler = middy()
.use(mcpMiddleware({ server }))
.use(httpErrorHandler())
mcpMiddleware(options)创建一个 Middy 中间件,将 MCP 服务器适配到 AWS Lambda。
server (必需): McpServer - 您的 MCP 服务器实例一个具有 before 和 after 钩子的 Middy 中间件对象。
中间件执行以下操作:
中间件会抛出 HTTP 错误,这些错误可以通过 @middy/http-error-handler 来捕获:
http-errors此包包含 TypeScript 定义。
import mcpMiddleware, {
type MCPMiddlewareOptions,
type MCPContext
} from 'middy-mcp-adapter'
本项目根据 MIT 许可证发布 - 查看 LICENSE 文件以获取详细信息。
欢迎贡献!请随意打开问题或提交拉取请求。
Tiago Guatierri - GitHub