Skip to main content
Glama
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

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