AWS MCP Servers: A Complete Guide

Comprehensive guide to setting up and using AWS-powered MCP servers with Bedrock, S3, DynamoDB, and more.

Amazon Web Services offers powerful MCP integrations that let AI assistants interact with your AWS infrastructure. This guide covers the most popular AWS MCP servers and how to configure them.


Overview

AWS MCP servers bridge the gap between AI clients and AWS services. They enable natural-language interactions with:

  • Amazon Bedrock — Invoke and manage foundation models
  • Amazon S3 — Read, write, and manage storage buckets
  • Amazon DynamoDB — Query and manage NoSQL databases
  • AWS Lambda — Invoke serverless functions
  • Amazon CloudWatch — Monitor logs and metrics

Prerequisites

  • An AWS account with appropriate IAM permissions
  • AWS CLI configured with credentials (aws configure)
  • Node.js 18+ for running MCP servers
  • An MCP-compatible client (Claude Desktop, Cursor, Windsurf)

Setting Up AWS Credentials

AWS MCP servers use the standard AWS credential chain. Configure your credentials before starting:

aws configure
# Enter your AWS Access Key ID
# Enter your AWS Secret Access Key
# Enter default region (e.g., us-east-1)
# Enter default output format (json)

Alternatively, set environment variables:

export AWS_ACCESS_KEY_ID=AKIA...
export AWS_SECRET_ACCESS_KEY=wJal...
export AWS_REGION=us-east-1

Amazon Bedrock MCP Server

The Bedrock MCP server lets AI clients invoke foundation models directly.

Installation

npx @modelcontextprotocol/server-aws-bedrock

Configuration

Add to your MCP client config:

{
  "mcpServers": {
    "aws-bedrock": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-aws-bedrock"],
      "env": {
        "AWS_REGION": "us-east-1"
      }
    }
  }
}

Available Tools

ToolDescription
invoke_modelInvoke a Bedrock foundation model
list_modelsList available Bedrock models
list_model_versionsShow versions of a specific model

Example Usage

Ask your AI client: “Use Bedrock to generate a summary of this document using Claude 3 Sonnet.” The client will use the invoke_model tool with the appropriate parameters.


Amazon S3 MCP Server

Interact with S3 buckets and objects through natural language.

Installation

npx @modelcontextprotocol/server-aws-s3

Configuration

{
  "mcpServers": {
    "aws-s3": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-aws-s3"],
      "env": {
        "AWS_REGION": "us-east-1"
      }
    }
  }
}

Available Tools

ToolDescription
list_bucketsList all S3 buckets in the account
list_objectsList objects in a bucket (with optional prefix filter)
get_objectRead the contents of an S3 object
put_objectUpload content to an S3 bucket
delete_objectDelete an object from S3

Available Resources

Resource URIDescription
s3://{bucket}/Browse objects in a bucket
s3://{bucket}/{key}Read object contents

Amazon DynamoDB MCP Server

Query and manage DynamoDB tables through MCP.

Installation

npx @modelcontextprotocol/server-aws-dynamodb

Configuration

{
  "mcpServers": {
    "aws-dynamodb": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-aws-dynamodb"],
      "env": {
        "AWS_REGION": "us-east-1"
      }
    }
  }
}

Available Tools

ToolDescription
list_tablesList all DynamoDB tables
describe_tableGet table schema and metadata
get_itemRetrieve an item by key
queryQuery a table with key condition expression
scanScan a table (with optional filter)
put_itemInsert or update an item
delete_itemDelete an item by key

AWS Lambda MCP Server

Invoke and manage Lambda functions through MCP.

Installation

npx @modelcontextprotocol/server-aws-lambda

Configuration

{
  "mcpServers": {
    "aws-lambda": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-aws-lambda"],
      "env": {
        "AWS_REGION": "us-east-1"
      }
    }
  }
}

Available Tools

ToolDescription
list_functionsList all Lambda functions
invoke_functionInvoke a Lambda function with a payload
get_function_configGet function configuration details
list_function_versionsShow versions of a function

Running Multiple AWS Servers

You can run multiple AWS MCP servers in a single config:

{
  "mcpServers": {
    "aws-s3": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-aws-s3"],
      "env": { "AWS_REGION": "us-east-1" }
    },
    "aws-dynamodb": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-aws-dynamodb"],
      "env": { "AWS_REGION": "us-west-2" }
    },
    "aws-lambda": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-aws-lambda"],
      "env": { "AWS_REGION": "eu-west-1" }
    }
  }
}

Each server can target a different region — perfect for multi-region workflows.


Security Best Practices

IAM Permissions

Create dedicated IAM policies with least-privilege permissions. For example, a read-only S3 policy:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:ListBucket",
        "s3:GetObject"
      ],
      "Resource": "*"
    }
  ]
}

Use IAM Roles

For production, use IAM roles instead of long-lived access keys. On EC2 or ECS, attach the role to the instance. On Lambda, use the function’s execution role.

Region Locking

Restrict each server to a specific region to limit blast radius:

{
  "env": {
    "AWS_REGION": "us-east-1"
  }
}

Troubleshooting

IssueFix
AccessDenied errorsCheck IAM permissions for the tool or resource
Credentials not foundVerify aws configure or env vars are set
Region mismatchSome services require specific regions — verify with aws --region
Timeout on large S3 objectsThe server streams content; large files may take time

Next Steps