Skip to main content
Glama
ingeno

OpenAPI Lambda MCP Server

by ingeno

OpenAPI MCP Server - AWS Lambda Deployment

Serverless deployment of the AWS Labs OpenAPI MCP Server on AWS Lambda with API Gateway.

Overview

This project wraps the awslabs openapi-mcp-server to run as a serverless Lambda function, enabling MCP (Model Context Protocol) clients to interact with OpenAPI-defined APIs through AWS infrastructure.

Architecture

  • Lambda Function: FastMCP server with HTTP transport (Starlette ASGI)

  • API Gateway: HTTP API exposing the MCP endpoints

  • Transport: Mangum ASGI adapter (no child process overhead)

Prerequisites

  • Python 3.12+

  • uv package manager

  • AWS CLI configured

  • AWS CDK CLI: npm install -g aws-cdk

Local Setup

Install dependencies:

uv sync

Deployment

1. Bootstrap CDK (first time only)

cdk bootstrap

2. Deploy Stack

cd cdk
cdk deploy \
  --parameters ApiName=MyAPI \
  --parameters ApiBaseUrl=https://api.example.com \
  --parameters ApiSpecUrl=https://api.example.com/openapi.json \
  --parameters AuthType=none

Configuration Parameters

  • ApiName: Display name for the API

  • ApiBaseUrl: Base URL of the target API

  • ApiSpecUrl: URL to the OpenAPI specification (JSON or YAML)

  • AuthType: Authentication method (none, basic, bearer, api_key, cognito)

Additional Auth Configuration

Set environment variables in cdk/openapi_mcp_stack.py for authentication:

Basic Auth:

  • AUTH_USERNAME

  • AUTH_PASSWORD

Bearer Token:

  • AUTH_TOKEN

API Key:

  • AUTH_API_KEY

  • AUTH_API_KEY_NAME

  • AUTH_API_KEY_IN (header/query/cookie)

Cognito:

  • AUTH_COGNITO_CLIENT_ID

  • AUTH_COGNITO_USERNAME

  • AUTH_COGNITO_PASSWORD

  • AUTH_COGNITO_USER_POOL_ID

  • AUTH_COGNITO_REGION

3. Get API URL

After deployment, CDK outputs the API Gateway URL:

# Output example:
# OpenApiMcpStack.ApiUrl = https://abc123.execute-api.us-east-1.amazonaws.com/

Testing

Test the deployed Lambda function:

curl -X POST https://<api-url>/message \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "method": "tools/list", "id": 1}'

Performance Considerations

  • Cold Start: ~1-2 seconds (initializes MCP server + loads OpenAPI spec)

  • Warm Start: ~100-300ms (reuses server instance)

  • Timeout: 30 seconds (configurable in stack)

  • Memory: 512 MB (configurable in stack)

Cost Optimization

  • Requests: Pay per invocation

  • Memory/Duration: 512 MB x execution time

  • API Gateway: HTTP API (cheaper than REST API)

Development

Run MCP server locally:

uv run awslabs.openapi-mcp-server \
  --api-name MyAPI \
  --api-url https://api.example.com \
  --spec-url https://api.example.com/openapi.json

Cleanup

cd cdk
cdk destroy

License

This project includes code from awslabs/mcp licensed under Apache-2.0. See LICENSE and NOTICE files.

-
security - not tested
-
license - not tested
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ingeno/mcp-openapi-lambda'

If you have feedback or need assistance with the MCP directory API, please join our Discord server