AWS Infrastructure MCP Server
AWS Infrastructure MCP Server
서버리스 애플리케이션을 위한 AWS 진단 도구를 IDE AI 에이전트에 직접 노출하는 로컬 FastMCP 서버(Python 3.12+, stdio 전송)입니다. Model Context Protocol을 통해 Cursor, VS Code Copilot 또는 Claude Code를 CloudWatch, Lambda, DynamoDB, IAM, Bedrock에 연결합니다.
아키텍처 및 설계 선택
전송 및 스택
구성 요소 | 선택 |
런타임 | Python 3.12+ |
MCP 프레임워크 | FastMCP 3.x |
패키지 관리자 | uv |
AWS SDK | boto3 |
스키마 검증 | Pydantic 2.x |
전송 | stdio (IDE가 서버 프로세스를 생성함) |
인증
boto3의 기본 자격 증명 체인을 사용하며 사용자 지정 인증 로직이 없습니다. 체인은 다음 순서로 확인합니다: 환경 변수(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) → ~/.aws/credentials → ~/.aws/config → 인스턴스 메타데이터. 특정 명명된 프로필을 대상으로 하려면 AWS_PROFILE을 설정하세요.
도구 표면
4개 모듈에 걸친 15개 도구:
CloudWatch 및 Lambda — 서비스 진단 (tools/cloudwatch.py, tools/lambda_ops.py)
도구 | 설명 |
| Lambda 함수를 나열하며, 이름 접두사로 선택적으로 필터링합니다. |
| Lambda 로그 그룹에서 최근 CloudWatch 로그 이벤트를 가져옵니다. |
| 로그 이벤트를 ERROR/exception/Traceback 줄만 필터링합니다. |
| 호출, 오류, 지속 시간, 스로틀 지표를 검색합니다. |
| 동기 호출( |
DynamoDB — 데이터 상태 (tools/dynamodb.py)
도구 | 설명 |
| DynamoDB 테이블을 나열하며, 이름 접두사로 선택적으로 필터링합니다. |
| 키 스키마, 속성, GSI, 항목 수, 크기, 상태를 반환합니다. |
| 기본 키 조건으로 쿼리하며, 최대 25개 항목으로 하드 제한됩니다. |
| 선택적 필터로 스캔하며, 최대 25개 항목으로 하드 제한됩니다. |
| CloudWatch에서 ReadThrottleEvents, WriteThrottleEvents, UserErrors를 쿼리합니다. |
IAM — 보안 거버넌스 (tools/iam.py)
도구 | 설명 |
| IAM 역할을 나열하며, 이름 접두사로 선택적으로 필터링합니다. |
| 신뢰 정책과 모든 연결/인라인 정책 문서를 반환합니다. |
| 각 Lambda 함수를 해당 실행 역할 ARN에 매핑합니다. |
| 세 가지 고위험 패턴에 플래그를 지정합니다(아래 참조). |
validate_least_privilege는 다음을 확인합니다:
와일드카드 권한 —
"Action": "*"또는"Resource": "*"가 포함된 문위험한 관리형 정책 —
AdministratorAccess또는PowerUserAccess가 연결된 경우범위가 지정되지 않은 데이터 액세스 — 특정 리소스 ARN 없이 S3 또는 DynamoDB 읽기/쓰기 작업을 수행하는 경우
Bedrock — AI 근본 원인 분석 (tools/bedrock.py)
도구 | 설명 |
| 진단 컨텍스트를 Bedrock에 전송하고 구조화된 분석을 반환합니다. |
원시 텍스트(로그, 스택 트레이스, 지표 요약)를 받아들입니다. 검증된 Pydantic 객체를 반환합니다:
class IncidentAnalysis(BaseModel):
severity: Literal["LOW", "MEDIUM", "HIGH", "CRITICAL"]
root_cause_summary: str
affected_components: list[str]
recommended_fix: strmodel_id 매개변수는 Bedrock에서 사용 가능한 모든 모델을 허용합니다(예: meta.llama3-2-3b).
보안 경계
invoke_lambda(동기 호출만 해당)를 제외한 모든 도구는 읽기 전용입니다.어떤 도구도 Lambda 함수, DynamoDB 항목, IAM 정책 또는 기타 AWS 리소스를 생성, 업데이트, 삭제하지 않습니다.
전역 자격 증명 스크러버(
utils/scrubber.py)는 데이터가 LLM 컨텍스트에 도달하기 전에 모든 도구 출력에서 AWS 액세스 키 ID, 시크릿 액세스 키, 세션 토큰을 삭제합니다. 로그 메시지, 호출 응답, 오류 출력에 적용됩니다.
프로젝트 구조
mcpserver/
├── app.py # FastMCP instance (single shared object)
├── server.py # Entry point — imports tool modules, runs stdio
├── tools/
│ ├── __init__.py
│ ├── cloudwatch.py # get_lambda_logs, get_lambda_errors, get_lambda_metrics
│ ├── lambda_ops.py # list_lambdas, invoke_lambda
│ ├── dynamodb.py # list_tables, describe_table, query_table, scan_table, get_table_metrics
│ ├── iam.py # list_roles, get_role_policy, validate_least_privilege, list_lambda_roles
│ └── bedrock.py # analyze_incident + IncidentAnalysis schema
├── utils/
│ ├── __init__.py
│ └── scrubber.py # Credential redaction regex patterns
├── tests/
│ ├── test_scrubber.py
│ ├── test_cloudwatch.py
│ ├── test_lambda_ops.py
│ ├── test_dynamodb.py
│ ├── test_iam.py
│ └── test_bedrock.py
├── pyproject.toml
└── uv.lock설치 및 로컬 설정
전제 조건:
Python 3.12+
uv 패키지 관리자
AWS CLI 구성 (
~/.aws/credentials또는 환경 변수)
# Clone and install dependencies
cd mcpserver
uv sync
# Run the server locally (stdio)
uv run python server.pyIDE 구성
VS Code / Cursor
프로젝트 루트에 .vscode/mcp.json을 생성하세요:
{
"servers": {
"aws-infra-mcp": {
"type": "stdio",
"command": "uv",
"args": ["--directory", "/absolute/path/to/mcpserver", "run", "server.py"]
}
}
}/absolute/path/to/mcpserver를 이 디렉터리의 실제 경로로 바꾸세요. Windows에서는 슬래시(C:/Users/.../mcpserver)를 사용하세요.
Claude Desktop
claude_desktop_config.json에 추가하세요:
{
"mcpServers": {
"aws-infra-mcp": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/mcpserver", "run", "server.py"]
}
}
}테스트 전략
테스트는 단일 결합 지점(single-seam) 설계를 사용합니다. 각 @mcp.tool() 함수는 unittest.mock.patch를 사용하여 그 아래의 boto3를 모의 처리한 상태에서 공개 경계에서 테스트됩니다. 테스트는 도구의 변환 로직(로그 필터링, 하드 캡 적용, 자격 증명 스크러빙, Pydantic 검증)을 검증하며, 실제 AWS 자격 증명이나 네트워크 호출이 필요하지 않습니다.
6개 테스트 파일에 걸친 57개의 단위 테스트:
# Run the full suite
uv run pytest
# Run a single cluster's tests
uv run pytest tests/test_iam.py -vThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI agent run monitoring with incident replay and SLA receipts.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Real-time Amazon, WIPO & PACER data for AI agents — 19 tools via the MCP protocol.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/getsuga-tenshou/mcpserver'
If you have feedback or need assistance with the MCP directory API, please join our Discord server