1. Conduid
  2. Developer Tools
  3. Middy MCP Adapter
MCP server · Developer Tools

Middy MCP Adapter

MCP server: Middy MCP Adapter

Unclaimed MIT last commit 10 months ago devtools
49Fair

Scored 7 days ago · breakdown

About Middy MCP Adapter

Middy MCP Adapter is an MCP server published by tiagoguatierri in the Developer Tools category: mCP server: Middy MCP Adapter.

The repository has 3 stars and 0 forks, with the last commit 10 months ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.

Install

From source
git clone https://github.com/tiagoguatierri/middy-mcp-adapter

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about Middy MCP Adapter

Powered by Claude · Grounded in docs

I know everything about Middy MCP Adapter. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 7 days ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • ✓Tests presentA test suite exists in the repository.
  • ✓Dependencies pinnedA lockfile pins dependency versions.
  • ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

Releases

v0.1.3v0.1.3
v0.1.2v0.1.2
v0.1.1v0.1.1
v0.1.0v0.1.0
v0.0.4v0.0.4

README

middy-mcp-adapter

npm version

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

Description

middy-mcp-adapter 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 from an ALB.

Install

npm install middy-mcp-adapter

Requirements

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

Usage

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

Basic Example

Hereafter is an example 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.

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'

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

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

With Tools

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 hosted MCP Server',
  version: '1.0.0'
})

server.registerTool(
  'add',
  {
    title: 'Addition Tool',
    description: 'Add two numbers',
    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: 'Multiplication Tool',
    description: 'Multiply two numbers',
    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)

Creates a Middy middleware that adapts an MCP server to AWS Lambda.

Options

  • server (required): McpServer - Your MCP server instance

Returns

A Middy middleware object with before and after hooks.

How It Works

The middleware performs the following operations:

  1. Before Hook: Initializes the MCP StreamableHTTPServerTransport connection
  2. Request Adaptation: Converts API Gateway events to HTTP IncomingMessage format
  3. Response Handling: Converts HTTP ServerResponse back to API Gateway format
  4. After Hook: Processes the MCP server response and formats it for Lambda

Error Handling

The middleware throws HTTP errors that can be caught by @middy/http-error-handler:

  • 500: Transport initialization failures or missing MCP transport
  • Standard HTTP error codes from http-errors

TypeScript

This package includes TypeScript definitions.

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

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

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

Links

Related Projects

Author

Tiago Guatierri - GitHub

README fetched from the repository 7 days ago. The original is authoritative.

Questions

About Middy MCP Adapter

How do I install Middy MCP Adapter?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Middy MCP Adapter safe to use with an AI agent?

Its trust score is 49 out of 100 (fair). It passes 5 of the 6 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Middy MCP Adapter still maintained?

The last commit was 10 months ago and 1 open issues. That's long enough that you should check whether the maintainer is responding to issues before depending on it.