AWS Infrastructure MCP Server
AWS Infrastructure MCP Server
Локальный сервер FastMCP (Python 3.12+, транспорт stdio), который предоставляет диагностические инструменты AWS для бессерверных приложений напрямую IDE-агентам на базе ИИ. Он подключает Cursor, VS Code Copilot или Claude Code к CloudWatch, Lambda, DynamoDB, IAM и Bedrock через Model Context Protocol.
Архитектура и проектные решения
Транспорт и стек
Компонент | Выбор |
Среда выполнения | 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, чтобы выбрать конкретный именованный профиль.
Набор инструментов
15 инструментов в 4 модулях:
CloudWatch и Lambda — диагностика сервисов (tools/cloudwatch.py, tools/lambda_ops.py)
Инструмент | Описание |
| Список функций Lambda, опционально отфильтрованных по префиксу имени |
| Получение последних событий журнала CloudWatch для группы журналов Lambda |
| Фильтрация событий журнала только по строкам 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 проверяет:
Wildcard-разрешения — операторы с
"Action": "*"или"Resource": "*"Опасные управляемые политики — прикреплены
AdministratorAccessилиPowerUserAccessНеограниченный доступ к данным — операции чтения/записи S3 или DynamoDB без конкретных ARN ресурсов
Bedrock — ИИ-анализ первопричин (tools/bedrock.py)
Инструмент | Описание |
| Отправляет диагностический контекст в Bedrock; возвращает структурированный анализ |
Принимает необработанный текст (журналы, стектрейсы, сводки метрик). Возвращает валидированный объект Pydantic:
class IncidentAnalysis(BaseModel):
severity: Literal["LOW", "MEDIUM", "HIGH", "CRITICAL"]
root_cause_summary: str
affected_components: list[str]
recommended_fix: strПараметр model_id принимает любую модель, доступную в Bedrock (например: meta.llama3-2-3b).
Границы безопасности
Все инструменты только для чтения, кроме
invoke_lambda(только синхронный вызов).Ни один инструмент не создаёт, не обновляет и не удаляет функции Lambda, элементы DynamoDB, политики IAM или любые другие ресурсы AWS.
Глобальный очиститель учётных данных (
utils/scrubber.py) маскирует идентификаторы ключей доступа AWS, секретные ключи доступа и токены сессий во всех выходных данных инструментов, прежде чем данные попадут в контекст LLM. Применяется к сообщениям журналов, ответам на вызовы и выводам ошибок.
Related MCP server: AWS MCP Server
Структура проекта
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.pyНастройка IDE
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() тестируется на её публичной границе, а boto3 под ней мокируется с помощью unittest.mock.patch. Тесты проверяют логику преобразования инструментов — фильтрацию журналов, соблюдение жёстких лимитов, очистку учётных данных, валидацию Pydantic — без необходимости в реальных учётных данных AWS и без сетевых вызовов.
57 модульных тестов в 6 тестовых файлах:
# Run the full suite
uv run pytest
# Run a single cluster's tests
uv run pytest tests/test_iam.py -vThis server cannot be deployed
Maintenance
Related MCP Connectors
The AWS Knowledge MCP server is a fully managed remote Model Context Protocol server that provides real-time access to official AWS content in an LLM-compatible format. It offers structured access to AWS documentation, code samples, blog posts, What's New announcements, Well-Architected best practices, and regional availability information for AWS APIs and CloudFormation resources. Key capabilities include searching and reading documentation in markdown format, getting content recommendations, listing AWS regions, and checking regional availability for services and features.
AWS cloud security scanners for AI agents — S3, IAM, EC2, EKS, RDS, CloudTrail, CloudWatch Logs
Governed app access for AI agents: 1,000+ apps & 12,000+ tools via Code Mode MCP.
Outcome-based infrastructure for agents — verified AWS deployments, metered billing
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables management and provisioning of AWS resources like EC2, S3, and RDS using natural language prompts through the Model Context Protocol. It allows users to automate complex infrastructure tasks, such as setting up VPCs and security groups, via a chat interface.5411 npm27MIT
- AlicenseNot gradedqualityDmaintenanceA read-only Model Context Protocol server that exposes over 60 AWS tools across services like EC2, S3, and IAM for AI agent interaction. It features multi-region support, resource caching, and audit logging to provide secure, AI-ready access to AWS infrastructure data.100 npmISC
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to autonomously query AWS CloudWatch Logs and perform structured root-cause analysis via natural language prompts, using MCP tools for log group listing and Insights queries.MIT
- FlicenseNot gradedqualityDmaintenanceEnables interaction with AWS services (EC2, S3, Lambda, DynamoDB, etc.) through the Model Context Protocol, allowing natural language management of cloud resources.2-