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 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 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
- FlicenseNot gradedqualityCmaintenanceProvides AI assistants with read-only access to AWS CloudWatch Logs for production debugging and log analysis, enabling error searching and bug report generation.
- 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.7ISC
Related MCP Connectors
Read-only MCP access to sessions, funnels, campaigns, errors, live visitors, and anomalies.
Remote MCP for Copilot CLI switch gate MCP, structured receipts, audit logs, and reviewer-ready evid
A paid remote MCP for AI SDK data query MCP, built to return verdicts, receipts, usage logs, and aud
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/tahanadeem125/cloudwatch-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server