返回市场
米迪适配器MCP服务器

米迪适配器MCP服务器

作者:tiagoguatierri2 星标更新:2025-11-15

项目介绍

middy-mcp-adapter

npm 版本 许可证: MIT

一个用于集成 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

要求

  • Node.js >= 18.0.0
  • Middy >= 4.0.0

使用方法

此中间件可以抛出 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())

API

mcpMiddleware(options)

创建一个 Middy 中间件,将 MCP 服务器适配到 AWS Lambda。

选项

  • server (必需): McpServer - 您的 MCP 服务器实例

返回值

一个具有 beforeafter 钩子的 Middy 中间件对象。

工作原理

中间件执行以下操作:

  1. 前置钩子: 初始化 MCP StreamableHTTPServerTransport 连接
  2. 请求适配: 将 API Gateway 事件转换为 HTTP IncomingMessage 格式
  3. 响应处理: 将 HTTP ServerResponse 转换回 API Gateway 格式
  4. 后置钩子: 处理 MCP 服务器响应并将其格式化为 Lambda 格式

错误处理

中间件会抛出 HTTP 错误,这些错误可以通过 @middy/http-error-handler 来捕获:

  • 500: 运输初始化失败或缺少 MCP 运输
  • 标准 HTTP 错误码从 http-errors

TypeScript

此包包含 TypeScript 定义。

import mcpMiddleware, {
  type MCPMiddlewareOptions,
  type MCPContext
} from 'middy-mcp-adapter'

许可证

本项目根据 MIT 许可证发布 - 查看 LICENSE 文件以获取详细信息。

贡献

欢迎贡献!请随意打开问题或提交拉取请求。

链接

相关项目

作者

Tiago Guatierri - GitHub