Skip to main content
Glama
eleva

cdk-serverless-mcp-server

by eleva

🧠 cdk-serverless-mcp-server

A super simple Model Context Protocol (MCP) server deployed on AWS Lambda and exposed via Amazon API Gateway, deployed with AWS CDK. This skeleton is based on the awesome work of FrΓ©dΓ©ric Barthelet: which has developed a middy middleware for Model Context Protocol (MCP) server integration with AWS Lambda functions in this repo

Long story

Related MCP server: Serverless MCP Server

πŸ›  Features

  • πŸͺ„ Minimal MCP server setup using @modelcontextprotocol/sdk

  • πŸš€ Deployed as a single AWS Lambda function

  • 🌐 HTTP POST endpoint exposed via API Gateway at /mcp

  • πŸ”„ Supports local development testing with jest

  • πŸ§ͺ Includes a simple example tool (add) with JSON-RPC interaction

πŸ“¦ Project Structure

cdk-serverless-mcp-server/
β”œβ”€β”€ __tests__/                              # Jest tests
β”œβ”€β”€ bin/                                    # CDK entry point
β”œβ”€β”€ cdk-serverless-mcp-server.ts                # CDK app
β”œβ”€β”€ lib/                                    # CDK stack
β”‚   └── cdk-serverless-mcp-server-stack.ts      # CDK stack
β”œβ”€β”€ src/                                    # Source code
β”‚   └── index.mjs                               # MCP server handler
β”œβ”€β”€ .gitignore                              # Git ignore file
β”œβ”€β”€ cdk.json                                # CDK Project config
β”œβ”€β”€ package.json                            # Project dependencies
β”œβ”€β”€ package-lock.json                       # Project lock file
β”œβ”€β”€ README.md                               # This documentation file

πŸ›  Prerequisites

πŸš€ Getting Started

  1. Install dependencies:

npm install
  1. Install AWS CDK globally (if not already installed):

npm install -g aws-cdk
  1. Test Locally with jest

npm run test

🧬 Code Breakdown

This code is based on the awesome work of FrΓ©dΓ©ric Barthelet: which has developed a middy middleware for Model Context Protocol (MCP) server integration with AWS Lambda functions in this repo

src/index.js

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

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

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());

πŸ“‘ Deploy to AWS

Just run:

npm run layer-dependencies-install # install dependencies for the layer

Then, deploy the stack:

cdk bootstrap
cdk deploy

After deployment, the MCP server will be live at the URL output by the command.

πŸ§ͺ Once deployed, test with curl requests

List tools

curl --location 'http://your-endpoint/dev/mcp' \
--header 'content-type: application/json' \
--header 'accept: application/json' \
--header 'jsonrpc: 2.0' \
--data '{
  "jsonrpc": "2.0",
  "method": "tools/list",
  "id": 1
}'

βž• Use the add Tool

curl --location 'http://your-endpoint/dev/mcp' \
--header 'content-type: application/json' \
--header 'accept: application/json' \
--header 'jsonrpc: 2.0' \
--data '{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "add",
    "arguments": {
      "a": 5,
      "b": 3
    }
  }
}'

πŸ“˜ License

MIT β€” feel free to fork, tweak, and deploy your own version!

F
license - not found
-
quality - not tested
D
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
–Releases (12mo)
Commit activity

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/eleva/cdk-serverless-mcp-server'

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