mcp-production-aws
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-production-awsWhat is 5 plus 59?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Production MCP on AWS (Bedrock + EKS/GitOps)
A production-oriented Model Context Protocol (MCP) platform: an MCP server exposing tools, resources, and prompts over Streamable HTTP, secured with JWT authentication and per-tool RBAC, consumed by an Amazon Bedrock (Claude) client, and packaged for delivery on Amazon EKS via Helm, ArgoCD (GitOps), and GitLab CI/CD.
Architecture
Developer push -> GitLab CI/CD (test -> build image -> push to ECR -> bump tag in Git)
|
v
ArgoCD (GitOps: watches Git, syncs to EKS)
|
v
Bedrock Claude client --(JWT over HTTPS)--> ALB Ingress -> Service -> MCP server pods (HPA)
| IRSA
v
AWS Secrets Manager (JWT key) + BedrockAuthentication: JWT (signing key from AWS Secrets Manager), verified in middleware.
Authorization: per-tool RBAC (admin/user/guest), deny-by-default.
Transport: Streamable HTTP (remote MCP).
Scaling: multiple stateless pods behind a Service/ALB, autoscaled by HPA.
Security: no static keys — IRSA for pods, Secrets Manager for the signing key.
Related MCP server: production-grade-mcp-agentic-system
Repository layout
server/ MCP server + auth (JWT + RBAC)
client/ Bedrock Claude MCP client
scaling/ Round-robin load balancer (demonstrates LB internals)
deploy/Dockerfile Container image
deploy/helm/ Helm chart (Deployment, Service, Ingress/ALB, HPA, IRSA SA)
deploy/argocd/ ArgoCD Application (GitOps)
.gitlab-ci.yml CI/CD pipelineStatus: implemented vs design
Implemented and run locally
MCP server with tools, resources, and prompts (
server/mcp_server.py)JWT auth + per-tool RBAC with 401/403 handling (
server/auth.py)JWT signing key sourced from AWS Secrets Manager
Bedrock Claude client with tool discovery + tool-use execution (
client/bedrock_client.py)Round-robin load balancer with health checks (
scaling/load_balancer.py)Container image (
deploy/Dockerfile) built and run locally
Delivered as config-as-code (validated with helm lint / YAML checks; deploy on a real EKS cluster)
Helm chart: Deployment, Service, ALB Ingress, HPA, IRSA ServiceAccount
ArgoCD Application (automated sync, prune, self-heal)
GitLab CI/CD (test -> build/push to ECR -> update image tag in Git)
Prerequisites
Python 3.12, an MCP-compatible environment (
pip install -r requirements.txt)AWS account with Bedrock (Claude) access
A secret in AWS Secrets Manager named
mcp/jwt-signing-keyFor deployment: an EKS cluster, ECR repo, AWS Load Balancer Controller, ArgoCD
Run locally
Create the JWT signing secret (one time):
aws secretsmanager create-secret \
--name "mcp/jwt-signing-key" \
--secret-string "$(python3 -c 'import secrets; print(secrets.token_urlsafe(48))')" \
--region us-east-1Start the server:
cd server
uvicorn mcp_server:app --host 0.0.0.0 --port 8000Run the Bedrock client (role is optional: user | admin | guest):
cd client
python bedrock_client.py "What is 5 plus 59?" user
python bedrock_client.py "reset the counter" admin/health is public (for probes); all MCP requests require a valid JWT, and
tool calls are authorized per role.
Notes
Model ID and region are read from env (
BEDROCK_MODEL_ID,BEDROCK_REGION) to avoid hardcoding a model that may be retired.Secrets are never committed or baked into the image; they are fetched at runtime (Secrets Manager) and, in EKS, accessed via IRSA.
This server cannot be deployed
Maintenance
Related MCP Connectors
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Remote MCP server exposing SMI Aware tools, resources, and skills over Streamable HTTP.
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server with HTTP transport that implements JWT authentication, allowing secure tool execution and prompt handling with role-based access control.62-
- AlicenseNot gradedqualityDmaintenanceA production-grade MCP server designed for multi-tenant, authenticated, and observable AI agent systems, enabling secure tool execution across heterogeneous data sources.64MIT
- FlicenseNot gradedqualityDmaintenanceA basic MCP server for deployment to Amazon Bedrock AgentCore Runtime, enabling tool integration via FastMCP with streamable HTTP transport.-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to discover and execute tools via a secure MCP server with JWT authentication, RBAC, rate limiting, and audit logging.1MIT