Enterprise Secure AWS MCP Server
README.md
# Enterprise Secure AWS Model Context Protocol (MCP) Server
Production-grade Model Context Protocol (MCP) Server deployed on AWS Lambda & API Gateway with 100% Terraform IaC, zero-trust IAM RBAC, and OWASP LLM Top 10 defense guardrails.
---
## AWS Architecture Overview

---
## Features
- **Standard MCP Specs:** Full support for Anthropic Model Context Protocol (MCP) Tool Discovery (`/mcp/tools`) and Tool Execution (`/mcp/tools/call`).
- **IAM Role-Based Access Control (RBAC):** Restricts tool execution by role (`sre_read_only`, `security_auditor`, `sre_admin`).
- **OWASP LLM02 Defense:** Edge sanitization blocking subshell metacharacter injections (`[;&|'$]`).
- **OWASP LLM06 Defense:** Automatic output buffer redactor scrubbing AWS access keys (`AKIA...`) and PII.
- **Interactive Web UI Playground:** Dark-mode test interface running on `http://localhost:8080` (`make ui`).
- **Zero Idle Cloud Cost:** Provisioned via Terraform with single-command deployment (`make deploy`) and instant teardown (`make destroy`).
---
## Web UI Playground Demo
Below is the automated high-definition interactive demonstration showing RBAC access denial, command injection defense, and successful server restart execution under the `sre_admin` role:

---
## Prerequisites & System Setup
Before setting up the project, ensure your environment has Python 3.11+, Terraform, and AWS CLI installed.
### 1. System Dependencies (Linux / Ubuntu / Debian)
```bash
sudo apt update && sudo apt install python3-venv python3-pip terraform awscli -y
```
### 2. Environment Setup
Clone the repository and install project dependencies into an isolated virtual environment (`.venv`):
```bash
git clone https://github.com/patelketul1230/aws-mcp-enterprise-server.git
cd aws-mcp-enterprise-server
# Create .venv and install dependencies
make install
```
---
## Repository Structure
```text
aws-mcp-enterprise-server/
├── docs/
│ ├── assets/ # Centralized PNG images & HD animations
│ │ ├── mcp_aws_figma_architecture_diagram.png
│ │ ├── mcp_ui_testing_demo.webp
│ │ ├── mcp_ui_testing_demo.gif
│ │ ├── mcp_ui_playground_success_screenshot.png
│ │ ├── mcp_ui_playground_admin_success_screenshot.png
│ │ └── mcp_ui_playground_blocked_screenshot.png
│ ├── blogs/ # 3 Medium Sub-Blogs ready for publication
│ │ ├── blog_1_1_mcp_decoded.md
│ │ ├── blog_1_2_mcp_rbac_python.md
│ │ └── blog_1_3_mcp_tool_poisoning.md
│ ├── architecture.md # Figma diagrams & sequence flows
│ ├── 5w_and_how.md # 5 Ws + 1 H problem statement & threat model
│ └── demo_execution.log # Verified test execution log
├── src/
│ ├── clients/ # AWS Bedrock Converse API integration client
│ ├── middleware/ # MCPSecurityValidator (RBAC & DLP)
│ ├── tools/ # CloudWatch & Terraform tool modules
│ ├── ui/ # Interactive Web UI Playground (index.html)
│ └── server.py # AWS Lambda & FastAPI server handler
├── terraform/ # 100% Terraform IaC (API Gateway, IAM, Lambda)
├── tests/ # Pytest suite & live verification scripts
├── Makefile # Lifecycle hooks (make deploy / make destroy / make ui)
└── README.md # Project documentation
```
---
## Quick Start Guide
### 1. Install Dependencies
```bash
make install
```
### 2. Run Tests
```bash
make test
```
### 3. Deploy Infrastructure to AWS
```bash
make deploy
```
Outputs:
- **API Endpoint:** Dynamic output generated by Terraform
- **CloudWatch Log Group:** `/aws/mcp/aws-mcp-enterprise-server-dev`
### 4. Launch Interactive Web UI Playground
```bash
make ui
```
Open **`http://localhost:8080`** in your web browser to test tool calls, RBAC roles, and injection defenses visually!
### 5. Test via Terminal (`curl`)
```bash
# Health Check
curl -s <YOUR_API_ENDPOINT>/health
# Tool Discovery Catalog
curl -s <YOUR_API_ENDPOINT>/mcp/tools
# Valid Tool Call (CloudWatch Query)
curl -s -X POST <YOUR_API_ENDPOINT>/mcp/tools/call \
-H "Content-Type: application/json" \
-H "X-User-Role: sre_read_only" \
-d '{"tool_name": "query_cloudwatch_logs", "arguments": {"log_group": "/aws/lambda/payment-dev", "filter_pattern": "ERROR"}}'
# Command Injection Attack (Returns 403 Forbidden)
curl -s -X POST <YOUR_API_ENDPOINT>/mcp/tools/call \
-H "Content-Type: application/json" \
-H "X-User-Role: sre_read_only" \
-d '{"tool_name": "query_cloudwatch_logs", "arguments": {"log_group": "/aws/lambda/payment-dev; rm -rf /", "filter_pattern": "ERROR"}}'
```
### 6. Tear Down AWS Resources
```bash
make destroy
```
---
## Technical Documentation Links
- **[System Architecture & Sequence Flows](docs/architecture.md)**
- **[5 Ws + 1 H Architectural Breakdown](docs/5w_and_how.md)**
- **[Medium Sub-Blog 1.1: MCP Decoded](docs/blogs/blog_1_1_mcp_decoded.md)**
- **[Medium Sub-Blog 1.2: IAM RBAC in Python](docs/blogs/blog_1_2_mcp_rbac_python.md)**
- **[Medium Sub-Blog 1.3: Tool Poisoning Defenses](docs/blogs/blog_1_3_mcp_tool_poisoning.md)**
---
## License & Enterprise Inquiries
This project is **Dual-Licensed**:
- **Open Source / Non-Commercial Use:** Licensed under the [GNU Affero General Public License v3.0 (AGPL-3.0)](LICENSE). Free for open-source projects, personal evaluation, and educational use.
- **Enterprise / Commercial Production Use:** Requires a paid **Enterprise Commercial License**. If your company intends to deploy or integrate this MCP server inside proprietary commercial applications, SaaS platforms, or private cloud infrastructure without open-sourcing the surrounding codebase, please contact the author for licensing terms.
**Licensing Requests & Inquiries:**
- **Author & Copyright Holder:** Ketul Patel
- **Licensing Request Email:** kpsub786@gmail.com
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues