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. Применяется к сообщениям журналов, ответам на вызовы и выводам ошибок.
Структура проекта
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 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