Skip to main content
Glama

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
A
license - permissive license
-
quality - not tested

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Enables MCP clients to interact with any OpenAPI-defined REST API through a serverless AWS Lambda deployment. Supports multiple authentication methods and provides cost-effective, scalable access to third-party APIs through natural language.

  1. Overview
    1. Architecture
      1. Prerequisites
        1. Local Setup
          1. Deployment
            1. 1. Bootstrap CDK (first time only)
            2. 2. Deploy Stack
            3. Configuration Parameters
            4. Additional Auth Configuration
            5. 3. Get API URL
          2. Testing
            1. Performance Considerations
              1. Cost Optimization
                1. Development
                  1. Cleanup
                    1. License

                      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