AWS Resources MCP Server
AWS 리소스 MCP 서버
개요
boto3를 통해 모든 AWS 리소스를 쿼리하기 위해 생성된 Python 코드를 실행하는 MCP(Model Context Protocol) 서버 구현입니다.
책임은 사용자에게 있습니다 . ReadyOnly로만 작업을 제한하지 않았습니다. 신중한 운영 담당자가 이 도구를 사용하여 관리 작업을 수행하는 데 도움을 받을 수 있도록 하기 위함입니다. AWS 사용자 역할에 따라 수행 가능한 권한이 결정됩니다.
데모: Dynamodb 권한 오류 수정
https://github.com/user-attachments/assets/de88688d-d7a0-45e1-94eb-3f5d71e9a7c7
Related MCP server: MCP Development Server
왜 또 다른 AWS MCP 서버가 필요한가요?
개발자 액세스로 AWS Chatbot을 사용해 봤습니다. 무료 티어는 리소스당 월 25개 쿼리로 제한됩니다. 다음 티어는 월 19달러로, 제가 사용하지 않는 기능의 90%를 포함합니다. 결과는 JSON 형식이고 제약이 많습니다.
aws-mcp를 사용해보려고 했지만 몇 가지 문제가 발생했습니다.
설정 번거로움 : git 저장소를 복제하고 로컬 설정을 처리해야 했습니다.
안정성 문제 : 내 Mac에서는 충분히 안정적이지 않았습니다.
Node.js 스택 : Python 개발자로서 Node.js 코드베이스에 효과적으로 기여할 수 없었습니다.
그래서 저는 다음과 같은 새로운 접근 방식을 만들었습니다.
Docker 이미지에서 직접 실행 - git 복제가 필요 없음
안정성 향상을 위해 Python과 boto3를 사용합니다.
Python 사용자가 쉽게 기여할 수 있도록 합니다.
코드 실행을 위한 적절한 샌드박싱이 포함되어 있습니다.
모든 것을 컨테이너화하고 깨끗하게 유지합니다.
모델 컨텍스트 프로토콜과 그 작동 방식에 대한 자세한 내용은 Anthropic의 MCP 설명서를 참조하세요.
구성 요소
자원
서버는 다음 리소스를 노출합니다.
aws://query_resources: boto3 쿼리를 통해 AWS 리소스에 대한 액세스를 제공하는 동적 리소스
예제 쿼리
실행할 수 있는 몇 가지 쿼리 예는 다음과 같습니다.
S3 버킷 나열:
지엑스피1
최신 CodePipeline 배포를 받으세요:
def get_latest_deployment(pipeline_name):
codepipeline = session.client('codepipeline')
result = codepipeline.list_pipeline_executions(
pipelineName=pipeline_name,
maxResults=5
)
if result['pipelineExecutionSummaries']:
latest_execution = max(
[e for e in result['pipelineExecutionSummaries']
if e['status'] == 'Succeeded'],
key=itemgetter('startTime'),
default=None
)
if latest_execution:
result = codepipeline.get_pipeline_execution(
pipelineName=pipeline_name,
pipelineExecutionId=latest_execution['pipelineExecutionId']
)
else:
result = None
else:
result = None
return result
result = get_latest_deployment("your-pipeline-name")참고 : 모든 코드 조각은 클라이언트에 반환될 result 변수를 설정해야 합니다. result 변수는 AWS 관련 객체 및 날짜/시간 값을 적절히 처리하여 JSON 형식으로 자동 변환됩니다.
도구
이 서버는 AWS 쿼리를 실행하기 위한 도구를 제공합니다.
aws_resources_query_or_modifyAWS 리소스를 쿼리하거나 수정하기 위해 boto3 코드 조각을 실행합니다.
입력:
code_snippet(문자열): boto3를 사용하여 AWS 리소스를 쿼리하는 Python 코드코드는 쿼리 출력으로
result변수를 설정해야 합니다.
허용된 수입품:
보토3
연산자
제이슨
날짜시간
피츠
날짜 유틸리티
답장
시간
사용 가능한 내장 함수:
기본 유형: dict, list, tuple, set, str, int, float, bool
연산: len, max, min, sorted, filter, map, sum, any, all
객체 처리: hasattr, getattr, isinstance
기타: 인쇄, 수입
구현 세부 사항
서버에는 여러 가지 안전 기능이 포함되어 있습니다.
가져오기 및 코드 구조를 검증하기 위한 AST 기반 코드 분석
제한된 내장 기능이 있는 제한된 실행 환경
AWS 특정 객체를 적절히 처리하여 결과의 JSON 직렬화
적절한 오류 처리 및 보고
설정
필수 조건
AWS 리소스를 쿼리하려면 적절한 권한이 있는 AWS 자격 증명이 필요합니다. 다음 방법으로 이러한 자격 증명을 얻을 수 있습니다.
AWS 계정에서 IAM 사용자 생성
프로그래밍 방식 액세스를 위한 액세스 키 생성
쿼리하려는 AWS 서비스에 대한 필요한 권한이 IAM 사용자에게 있는지 확인
다음 환경 변수가 필요합니다.
AWS_ACCESS_KEY_ID: AWS 액세스 키AWS_SECRET_ACCESS_KEY: AWS 비밀 키AWS_SESSION_TOKEN: (선택 사항) 임시 자격 증명을 사용하는 경우 AWS 세션 토큰AWS_DEFAULT_REGION: AWS 지역(설정하지 않으면 기본값은 'us-east-1')
~/.aws/credentials 파일에 저장된 프로필을 사용할 수도 있습니다. 이렇게 하려면 AWS_PROFILE 환경 변수를 프로필 이름으로 설정하세요.
참고: AWS 자격 증명을 안전하게 보관하고 버전 제어에 커밋하지 마세요.
Smithery를 통해 설치
Smithery를 통해 Claude Desktop용 AWS 리소스 MCP 서버를 자동으로 설치하려면:
npx -y @smithery/cli install mcp-server-aws-resources-python --client claude도커 설치
이미지를 로컬에서 빌드하거나 Docker Hub에서 가져올 수 있습니다. 이미지는 Linux 플랫폼용으로 빌드되었습니다.
지원 플랫폼
리눅스/amd64
리눅스/arm64
리눅스/arm/v7
옵션 1: Docker Hub에서 가져오기
docker pull buryhuang/mcp-server-aws-resources:latest옵션 2: 로컬로 빌드
docker build -t mcp-server-aws-resources .컨테이너를 실행합니다.
docker run \
-e AWS_ACCESS_KEY_ID=your_access_key_id_here \
-e AWS_SECRET_ACCESS_KEY=your_secret_access_key_here \
-e AWS_DEFAULT_REGION=your_AWS_DEFAULT_REGION \
buryhuang/mcp-server-aws-resources:latest또는 저장된 자격 증명과 프로필을 사용합니다.
docker run \
-e AWS_PROFILE=[AWS_PROFILE_NAME] \
-v ~/.aws:/root/.aws \
buryhuang/mcp-server-aws-resources:latest크로스 플랫폼 퍼블리싱
여러 플랫폼에 Docker 이미지를 게시하려면 docker buildx 명령을 사용할 수 있습니다. 다음 단계를 따르세요.
새로운 빌더 인스턴스를 만듭니다 (아직 만들지 않았다면):
docker buildx create --use여러 플랫폼에 대한 이미지를 빌드하고 푸시합니다 .
docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t buryhuang/mcp-server-aws-resources:latest --push .지정된 플랫폼에서 이미지를 사용할 수 있는지 확인하세요 .
docker buildx imagetools inspect buryhuang/mcp-server-aws-resources:latest
Claude Desktop과 함께 사용
Docker로 실행
ACCESS_KEY_ID 및 SECRET_ACCESS_KEY를 사용한 예
{
"mcpServers": {
"aws-resources": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"AWS_ACCESS_KEY_ID=your_access_key_id_here",
"-e",
"AWS_SECRET_ACCESS_KEY=your_secret_access_key_here",
"-e",
"AWS_DEFAULT_REGION=us-east-1",
"buryhuang/mcp-server-aws-resources:latest"
]
}
}
}PROFILE을 사용하고 로컬 AWS 자격 증명을 마운트하는 예
{
"mcpServers": {
"aws-resources": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"AWS_PROFILE=default",
"-v",
"~/.aws:/root/.aws",
"buryhuang/mcp-server-aws-resources:latest"
]
}
}
}Git clone으로 실행
git clone 및 profile을 사용하여 실행하는 예
{
"mcpServers": {
"aws": {
"command": "/Users/gmr/.local/bin/uv",
"args": [
"--directory",
"/<your-path>/mcp-server-aws-resources-python",
"run",
"src/mcp_server_aws_resources/server.py",
"--profile",
"testing"
]
}
}
}Available Tools
1 toolaws_resources_query_or_modifyC
Execute a boto3 code snippet to query or modify AWS resources
| Name | Required | Description | Default |
|---|---|---|---|
| code_snippet | Yes | Python code using boto3 to query or modify AWS resources. The code should have default execution setting variable named 'result'. Example code: 'result = boto3.client('s3').list_buckets()' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool can 'query or modify' AWS resources, implying both read and write operations, but fails to detail critical aspects like authentication requirements, error handling, rate limits, or safety considerations. This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded in a single sentence: 'Execute a boto3 code snippet to query or modify AWS resources.' It efficiently conveys the core purpose without unnecessary details, though it could be slightly improved by structuring usage hints separately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (executing arbitrary code for AWS operations) and the absence of annotations and output schema, the description is incomplete. It lacks information on return values, error cases, security implications, and operational constraints, which are crucial for safe and effective use by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'code_snippet' parameter well-documented in the schema. The description adds no additional meaning beyond what the schema provides, as it only repeats the boto3 and AWS context. According to the rules, with high schema coverage, the baseline is 3 even without param info in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Execute a boto3 code snippet to query or modify AWS resources.' It specifies the action (execute), technology (boto3), and target (AWS resources). However, it doesn't distinguish from siblings since there are none, so it cannot achieve the full differentiation required for a score of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions querying or modifying AWS resources but offers no context about specific scenarios, prerequisites, or exclusions. This lack of usage direction limits its effectiveness for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.0.0- First observed
aws_resources_query_or_modify
TDQS
Scored across 1 tool
With only one tool, there is no possibility of ambiguity or overlap between tools. The tool's purpose is clearly defined as executing boto3 code snippets for AWS operations.
Since there is only one tool, naming consistency is inherently perfect. The tool name 'aws_resources_query_or_modify' follows a clear verb_noun pattern and is descriptive.
A single tool for an AWS resources server is too few for the apparent scope, as AWS involves many distinct services and operations. This forces all functionality through one generic interface, which is insufficient for comprehensive coverage.
The tool surface is severely incomplete for an AWS resources domain. While the tool allows generic boto3 execution, it lacks specific operations for common AWS resources (e.g., EC2 instances, S3 buckets, IAM roles), leaving significant gaps that will likely cause agent failures.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Related MCP Servers
- FlicenseCqualityDmaintenanceA Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with your AWS environment. This allows for natural language querying and management of your AWS resources during conversations. Think of better Amazon Q alternative.13296-
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables Claude to manage software development projects with complete context awareness and code execution through Docker environments.14 npm4-
- AlicenseAqualityDmaintenanceA Model Context Protocol server implementation that enables Claude to perform AWS operations on S3 and DynamoDB services through natural language commands.23127MIT
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol server that enables AI assistants like Claude to perform Python development tasks through file operations, code analysis, project management, and safe code execution.9MIT