CloudWatch MCP Server
CloudWatch MCP Server
Собственный MCP сервер на базе FastMCP, который предоставляет метрики Amazon CloudWatch, Logs Insights и сигналы тревоги как инструменты, доступные ИИ-ассистенту. Он рассчитан на локальный запуск в разработке и на развёртывание на AWS Lambda в виде образа контейнера, доступ к которому открывается через Lambda Function URL.
Протестировано с fastmcp==3.4.7 и boto3 на моках moto (все перечисленные ниже инструменты прогонялись против мока вызовов CloudWatch/Logs). Зафиксируйте свою версию fastmcp в requirements.txt перед развёртыванием и сверьте этот README с gofastmcp.com, если с момента последней проверки прошло время — API FastMCP уже не раз менял свою форму (см. раздел «Заметка о меняющемся API FastMCP» ниже).
Доступные инструменты
Инструмент | Описание |
| Поиск доступных метрик по namespace/имени/измерению |
| Получение точек временного ряда для одной метрики |
| Вывод списка групп журналов CloudWatch, опционально по префиксу |
| Выполнение запроса Logs Insights и ожидание результатов |
| Вывод списка сигналов тревоги, опционально фильтруя по состоянию |
| Получение истории изменения состояния одного сигнала тревоги |
Все инструменты только для чтения — ни один из них не может изменять, удалять или создавать что-либо в CloudWatch. Оставляйте всё так, если только не появится конкретная причина добавить право на запись; принцип минимальных привилегий становится о гораздо более важным, когда решение о том, когда вызывать такие инструменты, принимает ИИ-модель.
Related MCP server: cloudwatch-mcp
1. Сначала запустите локально
Это самый быстрый способ убедиться, что инструменты работают, прежде чем вообще касаться развёртывания в AWS.
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# Uses your normal AWS credentials (aws configure / AWS_PROFILE / SSO)
export AWS_PROFILE=your-profile
export AWS_REGION=us-east-1
python3 server.py # defaults to stdio transportНаправьте MCP-клиент (Claude Desktop, Claude Code и т.п.) на эту команду напрямую — для Claude Desktop добавьте её в конфигурацию MCP:
{
"mcpServers": {
"cloudwatch": {
"command": "/full/path/to/.venv/bin/python3",
"args": ["/full/path/to/server.py"],
"env": { "AWS_PROFILE": "your-profile", "AWS_REGION": "us-east-1" }
}
}
}Чтобы проверить HTTP-транспорт локально (именно этот режимом используется на Lambda):
MCP_TRANSPORT=http PORT=8080 python3 server.py
# then, from another terminal:
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'2. IAM: что серверу можно трогать
iam-policy.json в этой папке — минимальный набор правых серверу: GetMetricData/ListMetrics/DescribeAlarms* for CloudWatch, DescribeLogGroups/StartQuery/GetQueryResults/StopQuery — для Logs Insights. Больше ничего. Приныпройте его к тому identity, под которым работает сервер:
Локально: приныните его к IAM-пользователю/роли и используйте через
AWS_PROFILEили выдайте его искомой SSO-роли.На легко: прикрепите его к роли выполнения функции Lambda (плюс стандартной
AWSLambdaBasicExecutionRoleдля логирования самой функции) — никогда не зашивайте ключи доступа в образ.
3. Развёртывание на AВаваLambda
Рекомендуемое самим CloudWatch для «выставить существующую функцию наружу как MCP-инструмент, не вспылая протокольный код» — это Amazon Bedrock AgentCore Gateway — направление, наРазwe worthпосмотреть: сервер без повода есть. Применитель — когда полностью управляемый вариант станет приемлемым позже. Внизу описан именно буквальный путь «мы волимнуем MCP-сервер», с использованием AWS Lambda Web Adapter, чтобы позволить вот этому точно приложению FastMCP работать в ler Lambda без изменений.
Соберите и залейте образ контейтента
aws ecr create-repository --repository-name cloudwatch-mcp-server
aws ecr get-login-password --region <region> | \
docker login --username AWS --password-stdin <account-id>.dkr.ecr.<region>.amazonaws.com
docker build -t cloudwatch-mcp-server .
docker tag cloudwatch-mcp-server:latest \
<account-id>.dkr.ecr.<region>.amazonaws.com/cloudwatch-mcp-server:latest
docker push <account-id>.dkr.ecr.<region>.amazonaws.com/cloudwatch-mcp-server:latestСоздайте ж функция Lambda
Создайте функцию из образа, который вы только чтоцентрализовали.
Память: начните с 512 МБ; таймаут: 30 с достаточно для большинства запросов к метрикам/сигналамотпов, поднимите до 60–120 с, если ваши
Logs Insights-запросы крупные (max_wait_secondsуquery_logsдолжен с запасом вписываться в таймаут функции).Прикрепите роль выполнения с IAM-политикой из пункта 2.
Выставьте режим вызова в
RESPONSE_STREAM,раз если включили стриминг для Function URL (нужно, чтобы адаптер мог отрпавить длинные ответы).Создайте Function URL:
Тип аутентификации: AWS_IAM ( не используйте
NONEвне quick личного теста — это оет ваши сдельные данные KGS доступными для кого угодно по URL).Вашему MCP-клиенту придётся подписывать заппросы SigV4, чтобы сделать вызов; большинство MCP-клиентов пока это нативно не умеют, так что на практике обычно это стоит за тем, что умеет подписывать запросы — например, внутренний шлюз/прокси вашей команды или API Gateway с IAM-аутентификацией перед Function URL, а не за прямой IAM-аутентификацией самого Function URL.
MCP-эндпоинт будет
https://<function-url>/mcp.
Быстрая проверка развёрнутой функции
aws lambda invoke --function-name cloudwatch-mcp-server \
--payload '{}' /tmp/out.json && cat /tmp/out.jsonи затем настоящий вызов MCP initialize против Function URL — с подписью SigV4, например через awscurl или небольшой скрипт подписанного запроса — тот же JSON-тело, что и в локальном curl-тесте выше.
4. Известные шероховатости (честно скажите о них вашей команде)
Холодные старты: полный HTTP-сервер (uvicorn + FastMCP), поднимающийся внутри холодного старта Lambda, медленнее типинного легкого обработчика Lambda — ожидайте лтентности несколько секунд на первом вызове после бездействия. If это важно, см будет смягчено Provisioned Concurrency.
Лэники/нет долгоживущей системы: stable обычных HTTP
stateless_http=Trueозначает, что каждый запрос — с ручными и сам до себя: между вызовами ничего не сохраняется, и сервер клиента сам не может пушить. Выстраивайте инструменты так, чтобы каждый вызов нёс в себе все нужное — сервер уже готов правильные примеры:query_logsпринимает полный диапазон времени и текста запроса одним выйзов.Аутентификация — ваша зона ответственности: IAM-аутентификация Function URL — единственная преграда между «AI UI» и любым, у кого есть URL. Не пренебрегайте ею даже на раннем отладческом этап: функция может никогда не быть касается какого-либо не одноразового аккаунта-песочницы.
Запросы Logs Insights — это поллинг, а не push:
query_logsблокирует выполнение и опрашиваетget-gate_results()до предельногоmax_wait_seconds. Для очень объёмных запросов это может занять время в Lambda timeout — держите запросы ограниченными (limit, узкие временные интервал), а не сильно открытыми.
5. Заметка о меняющемся API FastMCP
FastMCP в разных версиях не раз менял свой HTTP/статечный API (флат stateless_http в различных релизах перебирался между конструктором FastMCP() и mcp.run()/более — mcp.http_flags()). Код в server.py валидировался против fastmcp==3.4.7 (mcp.run(transport="http", stateless_http=True, ...)). Если поднимите версию и что-то сломается в первую очередь сверьтесь с gofastmcp.com/deployment/http — скорее всего изменилось именно это.
This server cannot be deployed
Maintenance
Related MCP Connectors
Read-only MCP access to your DEXUN AdWhiz account: ad accounts, AI recommendations, savings.
Read-only MCP access to sessions, funnels, campaigns, errors, live visitors, and anomalies.
Read-only Google Search Console and Google Analytics for AI agents.
Read-only Google Analytics 4 MCP server for AI assistants.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to monitor and troubleshoot AWS Application Signals services by tracking service health, analyzing SLO compliance, querying CloudWatch metrics, and investigating issues using distributed tracing with AWS X-Ray.MIT
- AlicenseNot gradedqualityDmaintenanceProvides AI assistants with read-only access to AWS CloudWatch Logs for production debugging and log analysis, enabling error searching and bug report generation.ISC
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to query AWS CloudWatch metrics, alarms, and logs read-only via MCP, providing rapid health snapshots and triage without console navigation.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants read-only access to Sprinklr data via MCP, allowing querying reports, searching cases, and calling Sprinklr API endpoints.8 npmISC