awslabs.cloudwatch-mcp-server 0.0.3__tar.gz → 0.0.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/CHANGELOG.md +6 -1
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/Dockerfile +33 -22
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/PKG-INFO +37 -29
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/README.md +34 -26
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/docker-healthcheck.sh +7 -8
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/pyproject.toml +6 -2
- awslabs_cloudwatch_mcp_server-0.0.6/uv-requirements.txt +26 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/uv.lock +755 -555
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/.gitignore +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/.python-version +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/LICENSE +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/NOTICE +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/__init__.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/__init__.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/cloudwatch_alarms/models.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/cloudwatch_alarms/tools.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/cloudwatch_logs/models.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/cloudwatch_logs/tools.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/cloudwatch_metrics/data/metric_metadata.json +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/cloudwatch_metrics/models.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/cloudwatch_metrics/tools.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/common.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/server.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_alarms/test_active_alarms.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_alarms/test_alarm_history.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_alarms/test_alarm_history_integration.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_alarms/test_alarms_error_handling.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_logs/test_logs_error_handling.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_logs/test_logs_models.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_logs/test_logs_server.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_metrics/test_metrics_error_handling.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_metrics/test_metrics_models.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_metrics/test_metrics_server.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_metrics/test_validation_error.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/test_common_and_server.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/test_init.py +0 -0
- {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/test_main.py +0 -0
|
@@ -6,8 +6,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
8
|
## Unreleased
|
|
9
|
+
## [0.0.4] - 2025-07-11
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- Updated README instructions to correcly setup server with Q CLI
|
|
14
|
+
|
|
15
|
+
## [0.0.3] - 2025-07-02
|
|
11
16
|
|
|
12
17
|
### Added
|
|
13
18
|
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
# dependabot should continue to update this to the latest hash.
|
|
16
|
+
FROM public.ecr.aws/docker/library/python:3.13.5-alpine3.21@sha256:c9a09c45a4bcc618c7f7128585b8dd0d41d0c31a8a107db4c8255ffe0b69375d AS uv
|
|
16
17
|
|
|
17
18
|
# Install the project into `/app`
|
|
18
19
|
WORKDIR /app
|
|
@@ -30,40 +31,50 @@ ENV UV_PYTHON_PREFERENCE=only-system
|
|
|
30
31
|
ENV UV_FROZEN=true
|
|
31
32
|
|
|
32
33
|
# Copy the required files first
|
|
33
|
-
COPY pyproject.toml uv.lock ./
|
|
34
|
+
COPY pyproject.toml uv.lock uv-requirements.txt ./
|
|
35
|
+
|
|
36
|
+
# Python optimization and uv configuration
|
|
37
|
+
ENV PIP_NO_CACHE_DIR=1 \
|
|
38
|
+
PIP_DISABLE_PIP_VERSION_CHECK=1
|
|
39
|
+
|
|
40
|
+
# Install system dependencies and Python package manager
|
|
41
|
+
RUN apk update && \
|
|
42
|
+
apk add --no-cache --virtual .build-deps \
|
|
43
|
+
build-base \
|
|
44
|
+
gcc \
|
|
45
|
+
musl-dev \
|
|
46
|
+
libffi-dev \
|
|
47
|
+
openssl-dev \
|
|
48
|
+
cargo
|
|
34
49
|
|
|
35
50
|
# Install the project's dependencies using the lockfile and settings
|
|
36
51
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
37
|
-
pip install uv
|
|
38
|
-
uv sync --frozen --no-install-project --no-dev --no-editable
|
|
52
|
+
pip install --require-hashes --requirement uv-requirements.txt --no-cache-dir && \
|
|
53
|
+
uv sync --python 3.13 --frozen --no-install-project --no-dev --no-editable
|
|
39
54
|
|
|
40
55
|
# Then, add the rest of the project source code and install it
|
|
41
56
|
# Installing separately from its dependencies allows optimal layer caching
|
|
42
57
|
COPY . /app
|
|
43
58
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
44
|
-
uv sync --frozen --no-dev --no-editable
|
|
59
|
+
uv sync --python 3.13 --frozen --no-dev --no-editable
|
|
45
60
|
|
|
46
61
|
# Make the directory just in case it doesn't exist
|
|
47
62
|
RUN mkdir -p /root/.local
|
|
48
63
|
|
|
49
|
-
FROM public.ecr.aws/
|
|
64
|
+
FROM public.ecr.aws/docker/library/python:3.13.5-alpine3.21@sha256:c9a09c45a4bcc618c7f7128585b8dd0d41d0c31a8a107db4c8255ffe0b69375d
|
|
50
65
|
|
|
51
66
|
# Place executables in the environment at the front of the path and include other binaries
|
|
52
|
-
ENV PATH="/app/.venv/bin:$PATH
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
# Install
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
chmod o+x /root
|
|
64
|
-
|
|
65
|
-
# Get the project from the uv layer
|
|
66
|
-
COPY --from=uv --chown=app:app /root/.local /root/.local
|
|
67
|
+
ENV PATH="/app/.venv/bin:$PATH" \
|
|
68
|
+
PYTHONUNBUFFERED=1
|
|
69
|
+
|
|
70
|
+
# Install runtime dependencies and create application user
|
|
71
|
+
RUN apk update && \
|
|
72
|
+
apk add --no-cache ca-certificates && \
|
|
73
|
+
update-ca-certificates && \
|
|
74
|
+
addgroup -S app && \
|
|
75
|
+
adduser -S app -G app -h /app
|
|
76
|
+
|
|
77
|
+
# Copy application artifacts from build stage
|
|
67
78
|
COPY --from=uv --chown=app:app /app/.venv /app/.venv
|
|
68
79
|
|
|
69
80
|
# Get healthcheck script
|
|
@@ -73,5 +84,5 @@ COPY ./docker-healthcheck.sh /usr/local/bin/docker-healthcheck.sh
|
|
|
73
84
|
USER app
|
|
74
85
|
|
|
75
86
|
# When running the container, add --db-path and a bind mount to the host's db file
|
|
76
|
-
HEALTHCHECK --interval=
|
|
87
|
+
HEALTHCHECK --interval=60s --timeout=10s --start-period=10s --retries=3 CMD ["docker-healthcheck.sh"]
|
|
77
88
|
ENTRYPOINT ["awslabs.cloudwatch-mcp-server"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: awslabs.cloudwatch-mcp-server
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.6
|
|
4
4
|
Summary: An AWS Labs Model Context Protocol (MCP) server for cloudwatch
|
|
5
5
|
Project-URL: homepage, https://awslabs.github.io/mcp/
|
|
6
6
|
Project-URL: docs, https://awslabs.github.io/mcp/servers/cloudwatch-mcp-server/
|
|
@@ -8,7 +8,7 @@ Project-URL: documentation, https://awslabs.github.io/mcp/servers/cloudwatch-mcp
|
|
|
8
8
|
Project-URL: repository, https://github.com/awslabs/mcp.git
|
|
9
9
|
Project-URL: changelog, https://github.com/awslabs/mcp/blob/main/src/cloudwatch-mcp-server/CHANGELOG.md
|
|
10
10
|
Author: Amazon Web Services
|
|
11
|
-
Author-email: AWSLabs MCP <203918161+awslabs-mcp@users.noreply.github.com>, Isaiah Lemmon <ilemmon@amazon.com>
|
|
11
|
+
Author-email: AWSLabs MCP <203918161+awslabs-mcp@users.noreply.github.com>, Isaiah Lemmon <ilemmon@amazon.com>, Shrikant Tambe <tshrikan@amazon.com>, Gianluca Cacace <cacaceg@amazon.com>, Andrea Giuliano <aggiulia@amazon.com>, Goran Modrusa <goran@amazon.com>
|
|
12
12
|
License: Apache-2.0
|
|
13
13
|
License-File: LICENSE
|
|
14
14
|
License-File: NOTICE
|
|
@@ -23,7 +23,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
23
23
|
Requires-Python: >=3.10
|
|
24
24
|
Requires-Dist: boto3>=1.38.22
|
|
25
25
|
Requires-Dist: loguru>=0.7.0
|
|
26
|
-
Requires-Dist: mcp[cli]>=1.
|
|
26
|
+
Requires-Dist: mcp[cli]>=1.11.0
|
|
27
27
|
Requires-Dist: pydantic>=2.10.6
|
|
28
28
|
Description-Content-Type: text/markdown
|
|
29
29
|
|
|
@@ -46,13 +46,10 @@ Metric Definition Analyzer - Provides comprehensive descriptions of what metrics
|
|
|
46
46
|
Alarm Recommendations - Suggests recommended alarm configurations for CloudWatch metrics, including thresholds, evaluation periods, and other alarm settings.
|
|
47
47
|
|
|
48
48
|
## Prerequisites
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
4. This MCP server can only be run locally on the same host as your LLM client.
|
|
54
|
-
5. Set up AWS credentials with access to AWS services
|
|
55
|
-
- You need an AWS account with appropriate permissions
|
|
49
|
+
1. An AWS account with [CloudWatch Telemetry](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)
|
|
50
|
+
2. This MCP server can only be run locally on the same host as your LLM client.
|
|
51
|
+
3. Set up AWS credentials with access to AWS services
|
|
52
|
+
- You need an AWS account with appropriate permissions (See required permissions below)
|
|
56
53
|
- Configure AWS credentials with `aws configure` or environment variables
|
|
57
54
|
|
|
58
55
|
## Available Tools
|
|
@@ -89,17 +86,26 @@ Alarm Recommendations - Suggests recommended alarm configurations for CloudWatch
|
|
|
89
86
|
|
|
90
87
|
## Installation
|
|
91
88
|
|
|
92
|
-
|
|
89
|
+
### Option 1: Python (UVX)
|
|
90
|
+
#### Prerequisites
|
|
91
|
+
1. Install `uv` from [Astral](https://docs.astral.sh/uv/getting-started/installation/) or the [GitHub README](https://github.com/astral-sh/uv#installation)
|
|
92
|
+
2. Install Python using `uv python install 3.10`
|
|
93
|
+
|
|
94
|
+
#### One Click Install
|
|
93
95
|
|
|
94
|
-
|
|
96
|
+
| Cursor | VS Code |
|
|
97
|
+
|:------:|:-------:|
|
|
98
|
+
| [](https://cursor.com/install-mcp?name=awslabs.cloudwatch-mcp-server&config=ewogICAgImF1dG9BcHByb3ZlIjogW10sCiAgICAiZGlzYWJsZWQiOiBmYWxzZSwKICAgICJjb21tYW5kIjogInV2eCBhd3NsYWJzLmNsb3Vkd2F0Y2gtbWNwLXNlcnZlckBsYXRlc3QiLAogICAgImVudiI6IHsKICAgICAgIkFXU19QUk9GSUxFIjogIltUaGUgQVdTIFByb2ZpbGUgTmFtZSB0byB1c2UgZm9yIEFXUyBhY2Nlc3NdIiwKICAgICAgIkZBU1RNQ1BfTE9HX0xFVkVMIjogIkVSUk9SIgogICAgfSwKICAgICJ0cmFuc3BvcnRUeXBlIjogInN0ZGlvIgp9) | [](https://insiders.vscode.dev/redirect/mcp/install?name=CloudWatch%20MCP%20Server&config=%7B%22autoApprove%22%3A%5B%5D%2C%22disabled%22%3Afalse%2C%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22awslabs.cloudwatch-mcp-server%40latest%22%5D%2C%22env%22%3A%7B%22AWS_PROFILE%22%3A%22%5BThe%20AWS%20Profile%20Name%20to%20use%20for%20AWS%20access%5D%22%2C%22FASTMCP_LOG_LEVEL%22%3A%22ERROR%22%7D%2C%22transportType%22%3A%22stdio%22%7D) |
|
|
95
99
|
|
|
100
|
+
#### MCP Config (Q CLI, Cline)
|
|
101
|
+
* For Q CLI, update MCP Config Amazon Q Developer CLI (~/.aws/amazonq/mcp.json)
|
|
102
|
+
* For Cline click on "Configure MCP Servers" option from MCP tab
|
|
96
103
|
```json
|
|
97
104
|
{
|
|
98
105
|
"mcpServers": {
|
|
99
106
|
"awslabs.cloudwatch-mcp-server": {
|
|
100
107
|
"autoApprove": [],
|
|
101
108
|
"disabled": false,
|
|
102
|
-
"timeout": 60,
|
|
103
109
|
"command": "uvx",
|
|
104
110
|
"args": [
|
|
105
111
|
"awslabs.cloudwatch-mcp-server@latest"
|
|
@@ -116,20 +122,18 @@ Example for Amazon Q Developer CLI (~/.aws/amazonq/mcp.json):
|
|
|
116
122
|
|
|
117
123
|
Please reference [AWS documentation](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html) to create and manage your credentials profile
|
|
118
124
|
|
|
119
|
-
###
|
|
125
|
+
### Option 2: Docker Image
|
|
126
|
+
#### Prerequisites
|
|
127
|
+
Build and install docker image locally on the same host of your LLM client
|
|
128
|
+
1. Install [Docker](https://docs.docker.com/desktop/)
|
|
129
|
+
2. `git clone https://github.com/awslabs/mcp.git`
|
|
130
|
+
3. Go to sub-directory `cd src/cloudwatch-mcp-server/`
|
|
131
|
+
4. Run `docker build -t awslabs/cloudwatch-mcp-server:latest .`
|
|
120
132
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
3. Run 'docker build -t awslabs/cloudwatch-mcp-server:latest .'
|
|
124
|
-
|
|
125
|
-
### Add or update your LLM client's config with following:
|
|
126
|
-
```file
|
|
127
|
-
# fictitious `.env` file with AWS temporary credentials
|
|
128
|
-
AWS_ACCESS_KEY_ID=<from the profile you set up>
|
|
129
|
-
AWS_SECRET_ACCESS_KEY=<from the profile you set up>
|
|
130
|
-
AWS_SESSION_TOKEN=<from the profile you set up>
|
|
131
|
-
```
|
|
133
|
+
#### One Click Cursor Install
|
|
134
|
+
[](https://www.cursor.com/install-mcp?name=awslabs.cloudwatch-mcp-server&config=ewogICAgICAgICJjb21tYW5kIjogImRvY2tlciIsCiAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAicnVuIiwKICAgICAgICAgICItLXJtIiwKICAgICAgICAgICItLWludGVyYWN0aXZlIiwKICAgICAgICAgICItZSBBV1NfUFJPRklMRT1bVGhlIEFXUyBQcm9maWxlIE5hbWVdIiwKICAgICAgICAgICJhd3NsYWJzL2Nsb3Vkd2F0Y2gtbWNwLXNlcnZlcjpsYXRlc3QiCiAgICAgICAgXSwKICAgICAgICAiZW52Ijoge30sCiAgICAgICAgImRpc2FibGVkIjogZmFsc2UsCiAgICAgICAgImF1dG9BcHByb3ZlIjogW10KfQ==)
|
|
132
135
|
|
|
136
|
+
#### MCP Config using Docker image(Q CLI, Cline)
|
|
133
137
|
```json
|
|
134
138
|
{
|
|
135
139
|
"mcpServers": {
|
|
@@ -139,8 +143,8 @@ AWS_SESSION_TOKEN=<from the profile you set up>
|
|
|
139
143
|
"run",
|
|
140
144
|
"--rm",
|
|
141
145
|
"--interactive",
|
|
142
|
-
"
|
|
143
|
-
"
|
|
146
|
+
"-v ~/.aws:/root/.aws",
|
|
147
|
+
"-e AWS_PROFILE=[The AWS Profile Name to use for AWS access]",
|
|
144
148
|
"awslabs/cloudwatch-mcp-server:latest"
|
|
145
149
|
],
|
|
146
150
|
"env": {},
|
|
@@ -150,8 +154,12 @@ AWS_SESSION_TOKEN=<from the profile you set up>
|
|
|
150
154
|
}
|
|
151
155
|
}
|
|
152
156
|
```
|
|
153
|
-
|
|
157
|
+
Please reference [AWS documentation](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html) to create and manage your credentials profile
|
|
154
158
|
|
|
155
159
|
## Contributing
|
|
156
160
|
|
|
157
|
-
Contributions are welcome! Please see the [CONTRIBUTING.md](
|
|
161
|
+
Contributions are welcome! Please see the [CONTRIBUTING.md](https://github.com/awslabs/mcp/blob/main/CONTRIBUTING.md) in the monorepo root for guidelines.
|
|
162
|
+
|
|
163
|
+
## Feedback and Issues
|
|
164
|
+
|
|
165
|
+
We value your feedback! Submit your feedback, feature requests and any bugs at [GitHub issues](https://github.com/awslabs/mcp/issues) with prefix `cloudwatch-mcp-server` in title.
|
|
@@ -17,13 +17,10 @@ Metric Definition Analyzer - Provides comprehensive descriptions of what metrics
|
|
|
17
17
|
Alarm Recommendations - Suggests recommended alarm configurations for CloudWatch metrics, including thresholds, evaluation periods, and other alarm settings.
|
|
18
18
|
|
|
19
19
|
## Prerequisites
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
4. This MCP server can only be run locally on the same host as your LLM client.
|
|
25
|
-
5. Set up AWS credentials with access to AWS services
|
|
26
|
-
- You need an AWS account with appropriate permissions
|
|
20
|
+
1. An AWS account with [CloudWatch Telemetry](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)
|
|
21
|
+
2. This MCP server can only be run locally on the same host as your LLM client.
|
|
22
|
+
3. Set up AWS credentials with access to AWS services
|
|
23
|
+
- You need an AWS account with appropriate permissions (See required permissions below)
|
|
27
24
|
- Configure AWS credentials with `aws configure` or environment variables
|
|
28
25
|
|
|
29
26
|
## Available Tools
|
|
@@ -60,17 +57,26 @@ Alarm Recommendations - Suggests recommended alarm configurations for CloudWatch
|
|
|
60
57
|
|
|
61
58
|
## Installation
|
|
62
59
|
|
|
63
|
-
|
|
60
|
+
### Option 1: Python (UVX)
|
|
61
|
+
#### Prerequisites
|
|
62
|
+
1. Install `uv` from [Astral](https://docs.astral.sh/uv/getting-started/installation/) or the [GitHub README](https://github.com/astral-sh/uv#installation)
|
|
63
|
+
2. Install Python using `uv python install 3.10`
|
|
64
|
+
|
|
65
|
+
#### One Click Install
|
|
64
66
|
|
|
65
|
-
|
|
67
|
+
| Cursor | VS Code |
|
|
68
|
+
|:------:|:-------:|
|
|
69
|
+
| [](https://cursor.com/install-mcp?name=awslabs.cloudwatch-mcp-server&config=ewogICAgImF1dG9BcHByb3ZlIjogW10sCiAgICAiZGlzYWJsZWQiOiBmYWxzZSwKICAgICJjb21tYW5kIjogInV2eCBhd3NsYWJzLmNsb3Vkd2F0Y2gtbWNwLXNlcnZlckBsYXRlc3QiLAogICAgImVudiI6IHsKICAgICAgIkFXU19QUk9GSUxFIjogIltUaGUgQVdTIFByb2ZpbGUgTmFtZSB0byB1c2UgZm9yIEFXUyBhY2Nlc3NdIiwKICAgICAgIkZBU1RNQ1BfTE9HX0xFVkVMIjogIkVSUk9SIgogICAgfSwKICAgICJ0cmFuc3BvcnRUeXBlIjogInN0ZGlvIgp9) | [](https://insiders.vscode.dev/redirect/mcp/install?name=CloudWatch%20MCP%20Server&config=%7B%22autoApprove%22%3A%5B%5D%2C%22disabled%22%3Afalse%2C%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22awslabs.cloudwatch-mcp-server%40latest%22%5D%2C%22env%22%3A%7B%22AWS_PROFILE%22%3A%22%5BThe%20AWS%20Profile%20Name%20to%20use%20for%20AWS%20access%5D%22%2C%22FASTMCP_LOG_LEVEL%22%3A%22ERROR%22%7D%2C%22transportType%22%3A%22stdio%22%7D) |
|
|
66
70
|
|
|
71
|
+
#### MCP Config (Q CLI, Cline)
|
|
72
|
+
* For Q CLI, update MCP Config Amazon Q Developer CLI (~/.aws/amazonq/mcp.json)
|
|
73
|
+
* For Cline click on "Configure MCP Servers" option from MCP tab
|
|
67
74
|
```json
|
|
68
75
|
{
|
|
69
76
|
"mcpServers": {
|
|
70
77
|
"awslabs.cloudwatch-mcp-server": {
|
|
71
78
|
"autoApprove": [],
|
|
72
79
|
"disabled": false,
|
|
73
|
-
"timeout": 60,
|
|
74
80
|
"command": "uvx",
|
|
75
81
|
"args": [
|
|
76
82
|
"awslabs.cloudwatch-mcp-server@latest"
|
|
@@ -87,20 +93,18 @@ Example for Amazon Q Developer CLI (~/.aws/amazonq/mcp.json):
|
|
|
87
93
|
|
|
88
94
|
Please reference [AWS documentation](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html) to create and manage your credentials profile
|
|
89
95
|
|
|
90
|
-
###
|
|
96
|
+
### Option 2: Docker Image
|
|
97
|
+
#### Prerequisites
|
|
98
|
+
Build and install docker image locally on the same host of your LLM client
|
|
99
|
+
1. Install [Docker](https://docs.docker.com/desktop/)
|
|
100
|
+
2. `git clone https://github.com/awslabs/mcp.git`
|
|
101
|
+
3. Go to sub-directory `cd src/cloudwatch-mcp-server/`
|
|
102
|
+
4. Run `docker build -t awslabs/cloudwatch-mcp-server:latest .`
|
|
91
103
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
3. Run 'docker build -t awslabs/cloudwatch-mcp-server:latest .'
|
|
95
|
-
|
|
96
|
-
### Add or update your LLM client's config with following:
|
|
97
|
-
```file
|
|
98
|
-
# fictitious `.env` file with AWS temporary credentials
|
|
99
|
-
AWS_ACCESS_KEY_ID=<from the profile you set up>
|
|
100
|
-
AWS_SECRET_ACCESS_KEY=<from the profile you set up>
|
|
101
|
-
AWS_SESSION_TOKEN=<from the profile you set up>
|
|
102
|
-
```
|
|
104
|
+
#### One Click Cursor Install
|
|
105
|
+
[](https://www.cursor.com/install-mcp?name=awslabs.cloudwatch-mcp-server&config=ewogICAgICAgICJjb21tYW5kIjogImRvY2tlciIsCiAgICAgICAgImFyZ3MiOiBbCiAgICAgICAgICAicnVuIiwKICAgICAgICAgICItLXJtIiwKICAgICAgICAgICItLWludGVyYWN0aXZlIiwKICAgICAgICAgICItZSBBV1NfUFJPRklMRT1bVGhlIEFXUyBQcm9maWxlIE5hbWVdIiwKICAgICAgICAgICJhd3NsYWJzL2Nsb3Vkd2F0Y2gtbWNwLXNlcnZlcjpsYXRlc3QiCiAgICAgICAgXSwKICAgICAgICAiZW52Ijoge30sCiAgICAgICAgImRpc2FibGVkIjogZmFsc2UsCiAgICAgICAgImF1dG9BcHByb3ZlIjogW10KfQ==)
|
|
103
106
|
|
|
107
|
+
#### MCP Config using Docker image(Q CLI, Cline)
|
|
104
108
|
```json
|
|
105
109
|
{
|
|
106
110
|
"mcpServers": {
|
|
@@ -110,8 +114,8 @@ AWS_SESSION_TOKEN=<from the profile you set up>
|
|
|
110
114
|
"run",
|
|
111
115
|
"--rm",
|
|
112
116
|
"--interactive",
|
|
113
|
-
"
|
|
114
|
-
"
|
|
117
|
+
"-v ~/.aws:/root/.aws",
|
|
118
|
+
"-e AWS_PROFILE=[The AWS Profile Name to use for AWS access]",
|
|
115
119
|
"awslabs/cloudwatch-mcp-server:latest"
|
|
116
120
|
],
|
|
117
121
|
"env": {},
|
|
@@ -121,8 +125,12 @@ AWS_SESSION_TOKEN=<from the profile you set up>
|
|
|
121
125
|
}
|
|
122
126
|
}
|
|
123
127
|
```
|
|
124
|
-
|
|
128
|
+
Please reference [AWS documentation](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html) to create and manage your credentials profile
|
|
125
129
|
|
|
126
130
|
## Contributing
|
|
127
131
|
|
|
128
|
-
Contributions are welcome! Please see the [CONTRIBUTING.md](
|
|
132
|
+
Contributions are welcome! Please see the [CONTRIBUTING.md](https://github.com/awslabs/mcp/blob/main/CONTRIBUTING.md) in the monorepo root for guidelines.
|
|
133
|
+
|
|
134
|
+
## Feedback and Issues
|
|
135
|
+
|
|
136
|
+
We value your feedback! Submit your feedback, feature requests and any bugs at [GitHub issues](https://github.com/awslabs/mcp/issues) with prefix `cloudwatch-mcp-server` in title.
|
{awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/docker-healthcheck.sh
RENAMED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/bin/sh
|
|
2
|
-
|
|
3
2
|
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
4
3
|
#
|
|
5
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -14,13 +13,13 @@
|
|
|
14
13
|
# See the License for the specific language governing permissions and
|
|
15
14
|
# limitations under the License.
|
|
16
15
|
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
SERVER="cloudwatch-mcp-server"
|
|
17
|
+
|
|
18
|
+
# Check if the server process is running
|
|
19
|
+
if pgrep -P 0 -a -l -x -f "/app/.venv/bin/python3 /app/.venv/bin/awslabs.$SERVER" > /dev/null; then
|
|
20
|
+
echo -n "$SERVER is running";
|
|
19
21
|
exit 0;
|
|
20
|
-
else
|
|
21
|
-
echo -n "Zero awslabs.* streams found";
|
|
22
|
-
exit 1;
|
|
23
22
|
fi;
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
exit
|
|
24
|
+
# Unhealthy
|
|
25
|
+
exit 1;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "awslabs.cloudwatch-mcp-server"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.6"
|
|
4
4
|
description = "An AWS Labs Model Context Protocol (MCP) server for cloudwatch"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
7
7
|
dependencies = [
|
|
8
8
|
"boto3>=1.38.22",
|
|
9
9
|
"loguru>=0.7.0",
|
|
10
|
-
"mcp[cli]>=1.
|
|
10
|
+
"mcp[cli]>=1.11.0",
|
|
11
11
|
"pydantic>=2.10.6",
|
|
12
12
|
]
|
|
13
13
|
license = {text = "Apache-2.0"}
|
|
@@ -16,6 +16,10 @@ authors = [
|
|
|
16
16
|
{name = "Amazon Web Services"},
|
|
17
17
|
{name = "AWSLabs MCP", email="203918161+awslabs-mcp@users.noreply.github.com"},
|
|
18
18
|
{name = "Isaiah Lemmon", email="ilemmon@amazon.com"},
|
|
19
|
+
{name = "Shrikant Tambe", email="tshrikan@amazon.com"},
|
|
20
|
+
{name = "Gianluca Cacace", email="cacaceg@amazon.com"},
|
|
21
|
+
{name = "Andrea Giuliano", email="aggiulia@amazon.com"},
|
|
22
|
+
{name = "Goran Modrusa", email="goran@amazon.com"},
|
|
19
23
|
]
|
|
20
24
|
classifiers = [
|
|
21
25
|
"License :: OSI Approved :: Apache Software License",
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#
|
|
2
|
+
# This file is autogenerated by pip-compile with Python 3.10
|
|
3
|
+
# by the following command:
|
|
4
|
+
#
|
|
5
|
+
# pip-compile --generate-hashes --output-file=uv-requirements.txt --strip-extras uv-requirements-0.7.13.in
|
|
6
|
+
#
|
|
7
|
+
uv==0.7.13 \
|
|
8
|
+
--hash=sha256:05f3c03c4ea55d294f3da725b6c2c2ff544754c18552da7594def4ec3889dcfb \
|
|
9
|
+
--hash=sha256:1afdbfcabc3425b383141ba42d413841c0a48b9ee0f4da65459313275e3cea84 \
|
|
10
|
+
--hash=sha256:33837aca7bdf02d47554d5d44f9e71756ee17c97073b07b4afead25309855bc7 \
|
|
11
|
+
--hash=sha256:4efa555b217e15767f0691a51d435f7bb2b0bf473fdfd59f173aeda8a93b8d17 \
|
|
12
|
+
--hash=sha256:4f828174e15a557d3bc0f809de76135c3b66bcbf524657f8ced9d22fc978b89c \
|
|
13
|
+
--hash=sha256:527a12d0c2f4d15f72b275b6f4561ae92af76dd59b4624796fddd45867f13c33 \
|
|
14
|
+
--hash=sha256:5786a29e286f2cc3cbda13a357fd9a4dd5bf1d7448a9d3d842b26b4f784a3a86 \
|
|
15
|
+
--hash=sha256:59915aec9fd2b845708a76ddc6c0639cfc99b6e2811854ea2425ee7552aff0e9 \
|
|
16
|
+
--hash=sha256:721b058064150fc1c6d88e277af093d1b4f8bb7a59546fe9969d9ff7dbe3f6fd \
|
|
17
|
+
--hash=sha256:866cad0d04a7de1aaa3c5cbef203f9d3feef9655972dcccc3283d60122db743b \
|
|
18
|
+
--hash=sha256:88fcf2bfbb53309531a850af50d2ea75874099b19d4159625d0b4f88c53494b9 \
|
|
19
|
+
--hash=sha256:8c0c29a2089ff9011d6c3abccd272f3ee6d0e166dae9e5232099fd83d26104d9 \
|
|
20
|
+
--hash=sha256:9c457a84cfbe2019ba301e14edd3e1c950472abd0b87fc77622ab3fc475ba012 \
|
|
21
|
+
--hash=sha256:9d2952a1e74c7027347c74cee1cb2be09121a5290db38498b8b17ff585f73748 \
|
|
22
|
+
--hash=sha256:a51006c7574e819308d92a3452b22d5bd45ef8593a4983b5856aa7cb8220885f \
|
|
23
|
+
--hash=sha256:b1af81e57d098b21b28f42ec756f0e26dce2341d59ba4e4f11759bc3ca2c0a99 \
|
|
24
|
+
--hash=sha256:e077dcac19e564cae8b4223b7807c2f617a59938f8142ca77fc6348ae9c6d0aa \
|
|
25
|
+
--hash=sha256:f28e70baadfebe71dcc2d9505059b988d75e903fc62258b102eb87dc4b6994a3
|
|
26
|
+
# via -r uv-requirements-0.7.13.in (contents of `uv==0.7.13`)
|