An open API service indexing awesome lists of open source software.

https://github.com/fredericbarthelet/middy-mcp

Middy middleware for Model Context Protocol server hosting on AWS Lambda
https://github.com/fredericbarthelet/middy-mcp

Last synced: about 1 year ago
JSON representation

Middy middleware for Model Context Protocol server hosting on AWS Lambda

Awesome Lists containing this project

README

          

# Middy MCP

A Middy middleware for Model Context Protocol (MCP) server integration with AWS Lambda functions.

## Description

Middy MCP is a middleware that enables seamless integration between AWS Lambda functions and Model Context Protocol servers. It provides a convenient way to handle MCP requests and responses within your Lambda functions using the Middy middleware framework. It supports requests sent to AWS Lambda from API Gateway (both REST API / v1 and HTTP API / v2) using the Proxy integration, as well as requests sent form an ALB.

> Disclaimer: hosting your MCP server this way is only compatible with MCP clients using at least protocol version 2025-03-26.

## Install

```bash
pnpm install middy-mcp
```

## Requirements

- Node.js >= 18.0.0
- Middy >= 6.0.0

## Usage

This middleware can throw HTTP exceptions, so it can be convenient to use it in combination with the `@middy/http-error-handler`.

Hereafter is an exemple of a minimal Lambda function handler file. Deploy this lambda as a proxy integration on a `POST` route of your API Gateway and you're good to go.

```typescript
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";

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

// Add an addition tool
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());
```

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Contributing

Contributions are welcome! Please feel free to open an issue or to submit a pull request 🚀!