awslabs.cfn-mcp-server 1.0.3__py3-none-any.whl → 1.0.4__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.
@@ -33,19 +33,18 @@ def validate_patch(patch_document: list):
33
33
  raise ClientError(f"The '{patch_op['op']}' operation requires a 'from' field")
34
34
 
35
35
 
36
- def progress_event(response_event) -> dict[str, str]:
36
+ def progress_event(response_event, hooks_events) -> dict[str, str]:
37
37
  """Map a CloudControl API response to a standard output format for the MCP."""
38
38
  response = {
39
39
  'status': response_event['OperationStatus'],
40
40
  'resource_type': response_event['TypeName'],
41
- 'is_complete': response_event['OperationStatus'] == 'SUCCESS',
41
+ 'is_complete': response_event['OperationStatus'] == 'SUCCESS'
42
+ or response_event['OperationStatus'] == 'FAILED',
42
43
  'request_token': response_event['RequestToken'],
43
44
  }
44
45
 
45
46
  if response_event.get('Identifier', None):
46
47
  response['identifier'] = response_event['Identifier']
47
- if response_event.get('StatusMessage', None):
48
- response['status_message'] = response_event['StatusMessage']
49
48
  if response_event.get('ResourceModel', None):
50
49
  response['resource_info'] = response_event['ResourceModel']
51
50
  if response_event.get('ErrorCode', None):
@@ -55,4 +54,21 @@ def progress_event(response_event) -> dict[str, str]:
55
54
  if response_event.get('RetryAfter', None):
56
55
  response['retry_after'] = response_event['RetryAfter']
57
56
 
57
+ # CloudControl returns a list of hooks events which may also contain a message which should
58
+ # take precedent over the status message returned from CloudControl directly
59
+ hooks_status_message = None
60
+ if hooks_events:
61
+ failed_hook_event_messages = (
62
+ hook_event['HookStatusMessage']
63
+ for hook_event in hooks_events
64
+ if hook_event.get('HookStatus', None) == 'HOOK_COMPLETE_FAILED'
65
+ or hook_event.get('HookStatus', None) == 'HOOK_FAILED'
66
+ )
67
+ hooks_status_message = next(failed_hook_event_messages, None)
68
+
69
+ if hooks_status_message:
70
+ response['status_message'] = hooks_status_message
71
+ elif response_event.get('StatusMessage', None):
72
+ response['status_message'] = response_event['StatusMessage']
73
+
58
74
  return response
@@ -202,7 +202,7 @@ async def update_resource(
202
202
  except Exception as e:
203
203
  raise handle_aws_api_error(e)
204
204
 
205
- return progress_event(response['ProgressEvent'])
205
+ return progress_event(response['ProgressEvent'], None)
206
206
 
207
207
 
208
208
  @mcp.tool()
@@ -253,7 +253,7 @@ async def create_resource(
253
253
  except Exception as e:
254
254
  raise handle_aws_api_error(e)
255
255
 
256
- return progress_event(response['ProgressEvent'])
256
+ return progress_event(response['ProgressEvent'], None)
257
257
 
258
258
 
259
259
  @mcp.tool()
@@ -305,7 +305,7 @@ async def delete_resource(
305
305
  except Exception as e:
306
306
  raise handle_aws_api_error(e)
307
307
 
308
- return progress_event(response['ProgressEvent'])
308
+ return progress_event(response['ProgressEvent'], None)
309
309
 
310
310
 
311
311
  @mcp.tool()
@@ -347,7 +347,7 @@ async def get_resource_request_status(
347
347
  except Exception as e:
348
348
  raise handle_aws_api_error(e)
349
349
 
350
- return progress_event(response['ProgressEvent'])
350
+ return progress_event(response['ProgressEvent'], response.get('HooksProgressEvent', None))
351
351
 
352
352
 
353
353
  @mcp.tool()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: awslabs.cfn-mcp-server
3
- Version: 1.0.3
3
+ Version: 1.0.4
4
4
  Summary: An AWS Labs Model Context Protocol (MCP) server for doing common cloudformation tasks and for managing your resources in your AWS account
5
5
  Project-URL: homepage, https://awslabs.github.io/mcp/
6
6
  Project-URL: docs, https://awslabs.github.io/mcp/servers/cfn-mcp-server/
@@ -1,15 +1,15 @@
1
1
  awslabs/__init__.py,sha256=47wJeKcStxEJwX7SVVV2pnAWYR8FxcaYoT3YTmZ5Plg,674
2
2
  awslabs/cfn_mcp_server/__init__.py,sha256=83bE3XbvOF6sigHPxEk0J9k7lNU9bzTwoCLde-IKQNA,611
3
3
  awslabs/cfn_mcp_server/aws_client.py,sha256=w0cwuQq7b34IUaABEwZYpEols1QoMjO2gd3T98K5FcE,2783
4
- awslabs/cfn_mcp_server/cloud_control_utils.py,sha256=wUDT-J9iEAOYnqZAG2vDtBsXUp0EUZ__jQzJ4RJ6AvM,2973
4
+ awslabs/cfn_mcp_server/cloud_control_utils.py,sha256=LI7gEcQlQuHxEjfIKYaKwgN0Yha336n7GazVBCyx_rI,3714
5
5
  awslabs/cfn_mcp_server/context.py,sha256=YpJZPjyzHW7df9O-lyj2j8yuenZI-yPxLuVuyvmnAnE,777
6
6
  awslabs/cfn_mcp_server/errors.py,sha256=0ADg9EesPyvjNZD-J89QLQ5OFcD6aSKDaMfW_4RQjfo,4481
7
7
  awslabs/cfn_mcp_server/iac_generator.py,sha256=iTZ6tM92m430GHM60lH1qR5nlRdhSbx2m0_WTbkU1f8,7881
8
8
  awslabs/cfn_mcp_server/schema_manager.py,sha256=7dw2W2hgdn1ODRU5PrUmOG9_rvnKUhGD51q8Wz4Ksks,6775
9
- awslabs/cfn_mcp_server/server.py,sha256=Fw7vMYfzxGCTaJD_MHj1EmGVlTO_CmtOKjzicGj8uYw,16737
10
- awslabs_cfn_mcp_server-1.0.3.dist-info/METADATA,sha256=rnKRPLiaG5-n1zVWpwJ5WtbUL_41ChoqlCqsdjjnd64,9121
11
- awslabs_cfn_mcp_server-1.0.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
12
- awslabs_cfn_mcp_server-1.0.3.dist-info/entry_points.txt,sha256=Hartc24s_fYgi3o2m2tBHahod0pqXYwpebQy2_tXL7s,78
13
- awslabs_cfn_mcp_server-1.0.3.dist-info/licenses/LICENSE,sha256=CeipvOyAZxBGUsFoaFqwkx54aPnIKEtm9a5u2uXxEws,10142
14
- awslabs_cfn_mcp_server-1.0.3.dist-info/licenses/NOTICE,sha256=bcw4NZAgn5eQZzrtuDiwOe23BRSm_JiRzn0gxBLDzlg,90
15
- awslabs_cfn_mcp_server-1.0.3.dist-info/RECORD,,
9
+ awslabs/cfn_mcp_server/server.py,sha256=TFadYC3k1fa0h42dZnhE07DBSgmOvyncGWvDwYWpQaw,16797
10
+ awslabs_cfn_mcp_server-1.0.4.dist-info/METADATA,sha256=IVY_ukqh5kV3rQVwLlVONnPA_eG5Cqkg9KgsGRLVXns,9121
11
+ awslabs_cfn_mcp_server-1.0.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
12
+ awslabs_cfn_mcp_server-1.0.4.dist-info/entry_points.txt,sha256=Hartc24s_fYgi3o2m2tBHahod0pqXYwpebQy2_tXL7s,78
13
+ awslabs_cfn_mcp_server-1.0.4.dist-info/licenses/LICENSE,sha256=CeipvOyAZxBGUsFoaFqwkx54aPnIKEtm9a5u2uXxEws,10142
14
+ awslabs_cfn_mcp_server-1.0.4.dist-info/licenses/NOTICE,sha256=bcw4NZAgn5eQZzrtuDiwOe23BRSm_JiRzn0gxBLDzlg,90
15
+ awslabs_cfn_mcp_server-1.0.4.dist-info/RECORD,,