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.
Files changed (37) hide show
  1. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/CHANGELOG.md +6 -1
  2. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/Dockerfile +33 -22
  3. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/PKG-INFO +37 -29
  4. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/README.md +34 -26
  5. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/docker-healthcheck.sh +7 -8
  6. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/pyproject.toml +6 -2
  7. awslabs_cloudwatch_mcp_server-0.0.6/uv-requirements.txt +26 -0
  8. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/uv.lock +755 -555
  9. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/.gitignore +0 -0
  10. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/.python-version +0 -0
  11. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/LICENSE +0 -0
  12. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/NOTICE +0 -0
  13. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/__init__.py +0 -0
  14. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/__init__.py +0 -0
  15. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/cloudwatch_alarms/models.py +0 -0
  16. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/cloudwatch_alarms/tools.py +0 -0
  17. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/cloudwatch_logs/models.py +0 -0
  18. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/cloudwatch_logs/tools.py +0 -0
  19. {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
  20. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/cloudwatch_metrics/models.py +0 -0
  21. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/cloudwatch_metrics/tools.py +0 -0
  22. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/common.py +0 -0
  23. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/awslabs/cloudwatch_mcp_server/server.py +0 -0
  24. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_alarms/test_active_alarms.py +0 -0
  25. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_alarms/test_alarm_history.py +0 -0
  26. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_alarms/test_alarm_history_integration.py +0 -0
  27. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_alarms/test_alarms_error_handling.py +0 -0
  28. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_logs/test_logs_error_handling.py +0 -0
  29. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_logs/test_logs_models.py +0 -0
  30. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_logs/test_logs_server.py +0 -0
  31. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_metrics/test_metrics_error_handling.py +0 -0
  32. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_metrics/test_metrics_models.py +0 -0
  33. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_metrics/test_metrics_server.py +0 -0
  34. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/cloudwatch_metrics/test_validation_error.py +0 -0
  35. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/test_common_and_server.py +0 -0
  36. {awslabs_cloudwatch_mcp_server-0.0.3 → awslabs_cloudwatch_mcp_server-0.0.6}/tests/test_init.py +0 -0
  37. {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
- ## [0.0.1] - 2025-07-02
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
- FROM public.ecr.aws/sam/build-python3.10@sha256:d821662474d65f3cf2fc97dba2fa807a3adb580d02895fc4545527812550ea65 AS uv
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==0.7.11 && \
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/sam/build-python3.10@sha256:d821662474d65f3cf2fc97dba2fa807a3adb580d02895fc4545527812550ea65
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:/usr/sbin"
53
-
54
- # Install lsof for the healthcheck
55
- # Install other tools as needed for the MCP server
56
- # Add non-root user and ability to change directory into /root
57
- RUN yum update -y && \
58
- yum install -y lsof && \
59
- yum clean all -y && \
60
- rm -rf /var/cache/yum && \
61
- groupadd --force --system app && \
62
- useradd app -g app -d /app && \
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=30s --timeout=30s --start-period=5s --retries=3 CMD [ "docker-healthcheck.sh" ]
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
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.6.0
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
- 1. Install `uv` from [Astral](https://docs.astral.sh/uv/getting-started/installation/) or the [GitHub README](https://github.com/astral-sh/uv#installation)
51
- 2. Install Python using `uv python install 3.10`
52
- 3. An AWS account with [CloudWatch Telemetry](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)
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
- [![Install MCP Server](https://cursor.com/deeplink/mcp-install-light.svg)](https://www.cursor.com/install-mcp?name=awslabs.cloudwatch-mcp-server&config=eyJhdXRvQXBwcm92ZSI6W10sImRpc2FibGVkIjpmYWxzZSwidGltZW91dCI6NjAsImNvbW1hbmQiOiJ1dnggYXdzbGFicy5jbG91ZHdhdGNoLW1jcC1zZXJ2ZXJAbGF0ZXN0IiwiZW52Ijp7IkFXU19QUk9GSUxFIjoiW1RoZSBBV1MgUHJvZmlsZSBOYW1lIHRvIHVzZSBmb3IgQVdTIGFjY2Vzc10iLCJBV1NfUkVHSU9OIjoiW1RoZSBBV1MgcmVnaW9uIHRvIHJ1biBpbl0iLCJGQVNUTUNQX0xPR19MRVZFTCI6IkVSUk9SIn0sInRyYW5zcG9ydFR5cGUiOiJzdGRpbyJ9)
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
- Example for Amazon Q Developer CLI (~/.aws/amazonq/mcp.json):
96
+ | Cursor | VS Code |
97
+ |:------:|:-------:|
98
+ | [![Install MCP Server](https://cursor.com/deeplink/mcp-install-light.svg)](https://cursor.com/install-mcp?name=awslabs.cloudwatch-mcp-server&config=ewogICAgImF1dG9BcHByb3ZlIjogW10sCiAgICAiZGlzYWJsZWQiOiBmYWxzZSwKICAgICJjb21tYW5kIjogInV2eCBhd3NsYWJzLmNsb3Vkd2F0Y2gtbWNwLXNlcnZlckBsYXRlc3QiLAogICAgImVudiI6IHsKICAgICAgIkFXU19QUk9GSUxFIjogIltUaGUgQVdTIFByb2ZpbGUgTmFtZSB0byB1c2UgZm9yIEFXUyBhY2Nlc3NdIiwKICAgICAgIkZBU1RNQ1BfTE9HX0xFVkVMIjogIkVSUk9SIgogICAgfSwKICAgICJ0cmFuc3BvcnRUeXBlIjogInN0ZGlvIgp9) | [![Install on VS Code](https://img.shields.io/badge/Install_on-VS_Code-FF9900?style=flat-square&logo=visualstudiocode&logoColor=white)](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
- ### Build and install docker image locally on the same host of your LLM client
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
- 1. `git clone https://github.com/awslabs/mcp.git`
122
- 2. Go to sub-directory 'src/cloudwatch-mcp-server/'
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
+ [![Install CloudWatch MCP Server](https://cursor.com/deeplink/mcp-install-light.svg)](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
- "--env-file",
143
- "/full/path/to/file/above/.env",
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
- NOTE: Your credentials will need to be kept refreshed from your host
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](../../CONTRIBUTING.md) in the monorepo root for guidelines.
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
- 1. Install `uv` from [Astral](https://docs.astral.sh/uv/getting-started/installation/) or the [GitHub README](https://github.com/astral-sh/uv#installation)
22
- 2. Install Python using `uv python install 3.10`
23
- 3. An AWS account with [CloudWatch Telemetry](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)
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
- [![Install MCP Server](https://cursor.com/deeplink/mcp-install-light.svg)](https://www.cursor.com/install-mcp?name=awslabs.cloudwatch-mcp-server&config=eyJhdXRvQXBwcm92ZSI6W10sImRpc2FibGVkIjpmYWxzZSwidGltZW91dCI6NjAsImNvbW1hbmQiOiJ1dnggYXdzbGFicy5jbG91ZHdhdGNoLW1jcC1zZXJ2ZXJAbGF0ZXN0IiwiZW52Ijp7IkFXU19QUk9GSUxFIjoiW1RoZSBBV1MgUHJvZmlsZSBOYW1lIHRvIHVzZSBmb3IgQVdTIGFjY2Vzc10iLCJBV1NfUkVHSU9OIjoiW1RoZSBBV1MgcmVnaW9uIHRvIHJ1biBpbl0iLCJGQVNUTUNQX0xPR19MRVZFTCI6IkVSUk9SIn0sInRyYW5zcG9ydFR5cGUiOiJzdGRpbyJ9)
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
- Example for Amazon Q Developer CLI (~/.aws/amazonq/mcp.json):
67
+ | Cursor | VS Code |
68
+ |:------:|:-------:|
69
+ | [![Install MCP Server](https://cursor.com/deeplink/mcp-install-light.svg)](https://cursor.com/install-mcp?name=awslabs.cloudwatch-mcp-server&config=ewogICAgImF1dG9BcHByb3ZlIjogW10sCiAgICAiZGlzYWJsZWQiOiBmYWxzZSwKICAgICJjb21tYW5kIjogInV2eCBhd3NsYWJzLmNsb3Vkd2F0Y2gtbWNwLXNlcnZlckBsYXRlc3QiLAogICAgImVudiI6IHsKICAgICAgIkFXU19QUk9GSUxFIjogIltUaGUgQVdTIFByb2ZpbGUgTmFtZSB0byB1c2UgZm9yIEFXUyBhY2Nlc3NdIiwKICAgICAgIkZBU1RNQ1BfTE9HX0xFVkVMIjogIkVSUk9SIgogICAgfSwKICAgICJ0cmFuc3BvcnRUeXBlIjogInN0ZGlvIgp9) | [![Install on VS Code](https://img.shields.io/badge/Install_on-VS_Code-FF9900?style=flat-square&logo=visualstudiocode&logoColor=white)](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
- ### Build and install docker image locally on the same host of your LLM client
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
- 1. `git clone https://github.com/awslabs/mcp.git`
93
- 2. Go to sub-directory 'src/cloudwatch-mcp-server/'
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
+ [![Install CloudWatch MCP Server](https://cursor.com/deeplink/mcp-install-light.svg)](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
- "--env-file",
114
- "/full/path/to/file/above/.env",
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
- NOTE: Your credentials will need to be kept refreshed from your host
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](../../CONTRIBUTING.md) in the monorepo root for guidelines.
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.
@@ -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
- if [ "$(lsof +c 0 -p 1 | grep -e "^awslabs\..*\s1\s.*\sunix\s.*socket$" | wc -l)" -ne "0" ]; then
18
- echo -n "$(lsof +c 0 -p 1 | grep -e "^awslabs\..*\s1\s.*\sunix\s.*socket$" | wc -l) awslabs.* streams found";
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
- echo -n "Never should reach here";
26
- exit 99;
24
+ # Unhealthy
25
+ exit 1;
@@ -1,13 +1,13 @@
1
1
  [project]
2
2
  name = "awslabs.cloudwatch-mcp-server"
3
- version = "0.0.3"
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.6.0",
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`)