awslabs.cloudwatch-mcp-server 0.0.13__py3-none-any.whl → 0.0.15__py3-none-any.whl

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/__init__.py CHANGED
@@ -14,3 +14,4 @@
14
14
 
15
15
  # This file is part of the awslabs namespace.
16
16
  # It is intentionally minimal to support PEP 420 namespace packages.
17
+ __path__ = __import__('pkgutil').extend_path(__path__, __name__)
@@ -14,4 +14,5 @@
14
14
 
15
15
  """awslabs.cloudwatch-mcp-server"""
16
16
 
17
- MCP_SERVER_VERSION = '0.0.12'
17
+ __version__ = '0.0.15'
18
+ MCP_SERVER_VERSION = __version__
@@ -162,7 +162,10 @@ class CloudWatchMetricsTools:
162
162
  ctx: Context,
163
163
  namespace: str,
164
164
  metric_name: str,
165
- start_time: Union[str, datetime],
165
+ start_time: Annotated[
166
+ Union[str, datetime],
167
+ Field(description='The start time for the metric data query (ISO format or datetime)'),
168
+ ],
166
169
  dimensions: List[Dimension] = [],
167
170
  end_time: Annotated[
168
171
  Union[str, datetime] | None,
@@ -390,10 +393,17 @@ class CloudWatchMetricsTools:
390
393
  start_time = datetime.fromisoformat(start_time.replace('Z', '+00:00'))
391
394
 
392
395
  if end_time is None:
393
- end_time = datetime.utcnow()
396
+ end_time = datetime.now(timezone.utc)
394
397
  elif isinstance(end_time, str):
395
398
  end_time = datetime.fromisoformat(end_time.replace('Z', '+00:00'))
396
399
 
400
+ # Ensure both datetimes have timezone info for correct datetime arithmetic afterwards.
401
+ # This avoids issues when datetime is passed as naive values (without timezone)
402
+ if start_time.tzinfo is None:
403
+ start_time = start_time.replace(tzinfo=timezone.utc)
404
+ if end_time.tzinfo is None:
405
+ end_time = end_time.replace(tzinfo=timezone.utc)
406
+
397
407
  # Calculate period based on time window and target datapoints
398
408
  time_window_seconds = int((end_time - start_time).total_seconds())
399
409
  calculated_period = max(60, int(time_window_seconds / target_datapoints))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: awslabs.cloudwatch-mcp-server
3
- Version: 0.0.13
3
+ Version: 0.0.15
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/
@@ -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.11.0
26
+ Requires-Dist: mcp[cli]>=1.23.0
27
27
  Requires-Dist: numpy>=2.0.0
28
28
  Requires-Dist: pandas>=2.2.3
29
29
  Requires-Dist: pydantic>=2.10.6
@@ -1,5 +1,5 @@
1
- awslabs/__init__.py,sha256=WuqxdDgUZylWNmVoPKiK7qGsTB_G4UmuXIrJ-VBwDew,731
2
- awslabs/cloudwatch_mcp_server/__init__.py,sha256=vqzwA3x7riO_70o_CNV6Xmbi_D1krbM0JVMe4v59lI0,683
1
+ awslabs/__init__.py,sha256=S-EDeDHGZzllMFhAeuJx_47fv85t2OUMOcsOisD5d_8,796
2
+ awslabs/cloudwatch_mcp_server/__init__.py,sha256=Q4ZiN-exGyvx7bTN3X3GN62oX5bn-jLG2gFAfT63MTE,709
3
3
  awslabs/cloudwatch_mcp_server/common.py,sha256=dbnaQlIOh4VmJvflzoJXv4JkrK7brPa1hgnrfLapJDs,2190
4
4
  awslabs/cloudwatch_mcp_server/server.py,sha256=raMeiC0F8M7cIH6-5rZnU2_DZZkPEtpvRm-5_hd9tbs,2505
5
5
  awslabs/cloudwatch_mcp_server/cloudwatch_alarms/models.py,sha256=wgwSE4JqLa0K7-3xhxGjDvGetXi-TZkmjbWtXRvx7CA,7202
@@ -11,11 +11,11 @@ awslabs/cloudwatch_mcp_server/cloudwatch_metrics/constants.py,sha256=v1IETRSHtck
11
11
  awslabs/cloudwatch_mcp_server/cloudwatch_metrics/metric_analyzer.py,sha256=t0cmrxbIPbw7gjWQXydYWxuhKnRbH_bbyzqkm7itFag,7601
12
12
  awslabs/cloudwatch_mcp_server/cloudwatch_metrics/metric_data_decomposer.py,sha256=SzB7CyyXvSIk7Qfd-5OyHAThFPjk5N3ZDbx37kjVsSs,8361
13
13
  awslabs/cloudwatch_mcp_server/cloudwatch_metrics/models.py,sha256=38ppi8euC-PurLypCAbBxyrIgeqja-5pOImQLPukDDo,10175
14
- awslabs/cloudwatch_mcp_server/cloudwatch_metrics/tools.py,sha256=v5orz1PICegO6A059CMyQd0Q3nwYNRtKcJHmD51Hh08,47807
14
+ awslabs/cloudwatch_mcp_server/cloudwatch_metrics/tools.py,sha256=9ZuUpPbIwV2EROFXBK5DbMYPaWjBsJYa55aWAmsq8SQ,48334
15
15
  awslabs/cloudwatch_mcp_server/cloudwatch_metrics/data/metric_metadata.json,sha256=FlSUlfYVo1VdANrsBg50atggMNGSqZvhhZU7ca-v48c,745055
16
- awslabs_cloudwatch_mcp_server-0.0.13.dist-info/METADATA,sha256=Z2TXYNOvczxpmqNSg09jwSsFIjTTCQCkI2nJp8rNRJM,10393
17
- awslabs_cloudwatch_mcp_server-0.0.13.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
18
- awslabs_cloudwatch_mcp_server-0.0.13.dist-info/entry_points.txt,sha256=u8YZn3_qq9Ai7nRux17K6K7RDssOBhTSyUNyZKrQUIk,92
19
- awslabs_cloudwatch_mcp_server-0.0.13.dist-info/licenses/LICENSE,sha256=CeipvOyAZxBGUsFoaFqwkx54aPnIKEtm9a5u2uXxEws,10142
20
- awslabs_cloudwatch_mcp_server-0.0.13.dist-info/licenses/NOTICE,sha256=xpvRUSHqG7LIpUZ1W_0D4sfPJG8lj51X6Mxjq1KJ6eQ,97
21
- awslabs_cloudwatch_mcp_server-0.0.13.dist-info/RECORD,,
16
+ awslabs_cloudwatch_mcp_server-0.0.15.dist-info/METADATA,sha256=DAxrmfmIEBCIOv5dNS4PmfMG8YcyKP-XSUCyL-0ljeA,10393
17
+ awslabs_cloudwatch_mcp_server-0.0.15.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
18
+ awslabs_cloudwatch_mcp_server-0.0.15.dist-info/entry_points.txt,sha256=u8YZn3_qq9Ai7nRux17K6K7RDssOBhTSyUNyZKrQUIk,92
19
+ awslabs_cloudwatch_mcp_server-0.0.15.dist-info/licenses/LICENSE,sha256=CeipvOyAZxBGUsFoaFqwkx54aPnIKEtm9a5u2uXxEws,10142
20
+ awslabs_cloudwatch_mcp_server-0.0.15.dist-info/licenses/NOTICE,sha256=xpvRUSHqG7LIpUZ1W_0D4sfPJG8lj51X6Mxjq1KJ6eQ,97
21
+ awslabs_cloudwatch_mcp_server-0.0.15.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.27.0
2
+ Generator: hatchling 1.28.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any