awslabs.cfn-mcp-server 0.0.1__tar.gz → 1.0.0__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_cfn_mcp_server-1.0.0/CHANGELOG.md +19 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/Dockerfile +2 -2
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/PKG-INFO +24 -4
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/README.md +23 -3
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/awslabs/cfn_mcp_server/server.py +1 -9
- awslabs_cfn_mcp_server-1.0.0/docker-healthcheck.sh +12 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/pyproject.toml +1 -1
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/tests/test_main.py +0 -17
- awslabs_cfn_mcp_server-0.0.1/CHANGELOG.md +0 -12
- awslabs_cfn_mcp_server-0.0.1/docker-healthcheck.sh +0 -12
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/.gitignore +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/.pre-commit-config.yaml +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/.python-version +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/LICENSE +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/NOTICE +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/awslabs/__init__.py +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/awslabs/cfn_mcp_server/__init__.py +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/awslabs/cfn_mcp_server/aws_client.py +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/awslabs/cfn_mcp_server/cloud_control_utils.py +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/awslabs/cfn_mcp_server/context.py +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/awslabs/cfn_mcp_server/errors.py +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/awslabs/cfn_mcp_server/schema_manager.py +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/run_tests.sh +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/tests/__init__.py +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/tests/test_aws_client.py +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/tests/test_cloud_control_utils.py +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/tests/test_errors.py +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/tests/test_init.py +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/tests/test_schema_manager.py +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/tests/test_server.py +0 -0
- {awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/uv.lock +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [1.0.0] - 2025-05-26
|
|
9
|
+
|
|
10
|
+
### Removed
|
|
11
|
+
|
|
12
|
+
- **BREAKING CHANGE:** Server Sent Events (SSE) support has been removed in accordance with the Model Context Protocol specification's [backwards compatibility guidelines](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#backwards-compatibility)
|
|
13
|
+
- This change prepares for future support of [Streamable HTTP](https://modelcontextprotocol.io/specification/draft/basic/transports#streamable-http) transport
|
|
14
|
+
|
|
15
|
+
## Unreleased
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- Initial project setup
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
# and limitations under the License.
|
|
11
11
|
|
|
12
12
|
#FROM public.ecr.aws/sam/build-python3.10:1.137.1-20250411084548
|
|
13
|
-
FROM public.ecr.aws/sam/build-python3.10@sha256:
|
|
13
|
+
FROM public.ecr.aws/sam/build-python3.10@sha256:e78695db10ca8cb129e59e30f7dc9789b0dbd0181dba195d68419c72bac51ac1 AS uv
|
|
14
14
|
|
|
15
15
|
# Install the project into `/app`
|
|
16
16
|
WORKDIR /app
|
|
@@ -44,7 +44,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \
|
|
|
44
44
|
# Make the directory just in case it doesn't exist
|
|
45
45
|
RUN mkdir -p /root/.local
|
|
46
46
|
|
|
47
|
-
FROM public.ecr.aws/sam/build-python3.10@sha256:
|
|
47
|
+
FROM public.ecr.aws/sam/build-python3.10@sha256:e78695db10ca8cb129e59e30f7dc9789b0dbd0181dba195d68419c72bac51ac1
|
|
48
48
|
|
|
49
49
|
# Place executables in the environment at the front of the path and include other binaries
|
|
50
50
|
ENV PATH="/app/.venv/bin:$PATH:/usr/sbin"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: awslabs.cfn-mcp-server
|
|
3
|
-
Version: 0.0
|
|
3
|
+
Version: 1.0.0
|
|
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/
|
|
@@ -59,11 +59,31 @@ Here are some ways you can work with MCP across AWS, and we'll be adding support
|
|
|
59
59
|
"awslabs.cfn-mcp-server": {
|
|
60
60
|
"command": "uvx",
|
|
61
61
|
"args": [
|
|
62
|
-
"awslabs.
|
|
63
|
-
"--readonly" // Optional paramter if you would like to restrict the MCP to only read actions
|
|
62
|
+
"awslabs.cfn-mcp-server@latest"
|
|
64
63
|
],
|
|
65
64
|
"env": {
|
|
66
|
-
"AWS_PROFILE": "your-named-profile"
|
|
65
|
+
"AWS_PROFILE": "your-named-profile"
|
|
66
|
+
},
|
|
67
|
+
"disabled": false,
|
|
68
|
+
"autoApprove": []
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
If you would like to prevent the MCP from taking any mutating actions (i.e. Create/Update/Delete Resource), you can specify the readonly flag as demonstrated below:
|
|
75
|
+
|
|
76
|
+
```json
|
|
77
|
+
{
|
|
78
|
+
"mcpServers": {
|
|
79
|
+
"awslabs.cfn-mcp-server": {
|
|
80
|
+
"command": "uvx",
|
|
81
|
+
"args": [
|
|
82
|
+
"awslabs.cfn-mcp-server@latest",
|
|
83
|
+
"--readonly"
|
|
84
|
+
],
|
|
85
|
+
"env": {
|
|
86
|
+
"AWS_PROFILE": "your-named-profile"
|
|
67
87
|
},
|
|
68
88
|
"disabled": false,
|
|
69
89
|
"autoApprove": []
|
|
@@ -30,11 +30,31 @@ Here are some ways you can work with MCP across AWS, and we'll be adding support
|
|
|
30
30
|
"awslabs.cfn-mcp-server": {
|
|
31
31
|
"command": "uvx",
|
|
32
32
|
"args": [
|
|
33
|
-
"awslabs.
|
|
34
|
-
"--readonly" // Optional paramter if you would like to restrict the MCP to only read actions
|
|
33
|
+
"awslabs.cfn-mcp-server@latest"
|
|
35
34
|
],
|
|
36
35
|
"env": {
|
|
37
|
-
"AWS_PROFILE": "your-named-profile"
|
|
36
|
+
"AWS_PROFILE": "your-named-profile"
|
|
37
|
+
},
|
|
38
|
+
"disabled": false,
|
|
39
|
+
"autoApprove": []
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
If you would like to prevent the MCP from taking any mutating actions (i.e. Create/Update/Delete Resource), you can specify the readonly flag as demonstrated below:
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"mcpServers": {
|
|
50
|
+
"awslabs.cfn-mcp-server": {
|
|
51
|
+
"command": "uvx",
|
|
52
|
+
"args": [
|
|
53
|
+
"awslabs.cfn-mcp-server@latest",
|
|
54
|
+
"--readonly"
|
|
55
|
+
],
|
|
56
|
+
"env": {
|
|
57
|
+
"AWS_PROFILE": "your-named-profile"
|
|
38
58
|
},
|
|
39
59
|
"disabled": false,
|
|
40
60
|
"autoApprove": []
|
{awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/awslabs/cfn_mcp_server/server.py
RENAMED
|
@@ -358,8 +358,6 @@ def main():
|
|
|
358
358
|
parser = argparse.ArgumentParser(
|
|
359
359
|
description='An AWS Labs Model Context Protocol (MCP) server for doing common cloudformation tasks and for managing your resources in your AWS account'
|
|
360
360
|
)
|
|
361
|
-
parser.add_argument('--sse', action='store_true', help='Use SSE transport')
|
|
362
|
-
parser.add_argument('--port', type=int, default=8888, help='Port to run the server on')
|
|
363
361
|
parser.add_argument(
|
|
364
362
|
'--readonly',
|
|
365
363
|
action=argparse.BooleanOptionalAction,
|
|
@@ -368,13 +366,7 @@ def main():
|
|
|
368
366
|
|
|
369
367
|
args = parser.parse_args()
|
|
370
368
|
Context.initialize(args.readonly)
|
|
371
|
-
|
|
372
|
-
# Run server with appropriate transport
|
|
373
|
-
if args.sse:
|
|
374
|
-
mcp.settings.port = args.port
|
|
375
|
-
mcp.run(transport='sse')
|
|
376
|
-
else:
|
|
377
|
-
mcp.run()
|
|
369
|
+
mcp.run()
|
|
378
370
|
|
|
379
371
|
|
|
380
372
|
if __name__ == '__main__':
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
|
|
3
|
+
if [ "$(lsof +c 0 -p 1 | grep -e "^awslabs\..*\s1\s.*\sunix\s.*socket$" | wc -l)" -ne "0" ]; then
|
|
4
|
+
echo -n "$(lsof +c 0 -p 1 | grep -e "^awslabs\..*\s1\s.*\sunix\s.*socket$" | wc -l) awslabs.* streams found";
|
|
5
|
+
exit 0;
|
|
6
|
+
else
|
|
7
|
+
echo -n "Zero awslabs.* streams found";
|
|
8
|
+
exit 1;
|
|
9
|
+
fi;
|
|
10
|
+
|
|
11
|
+
echo -n "Never should reach here";
|
|
12
|
+
exit 99;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "awslabs.cfn-mcp-server"
|
|
3
|
-
version = "0.0
|
|
3
|
+
version = "1.0.0"
|
|
4
4
|
description = "An AWS Labs Model Context Protocol (MCP) server for doing common cloudformation tasks and for managing your resources in your AWS account"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -26,23 +26,6 @@ class TestMain:
|
|
|
26
26
|
|
|
27
27
|
# Check that mcp.run was called with the correct arguments
|
|
28
28
|
mock_run.assert_called_once()
|
|
29
|
-
assert mock_run.call_args[1].get('transport') is None
|
|
30
|
-
|
|
31
|
-
@patch('awslabs.cfn_mcp_server.server.mcp.run')
|
|
32
|
-
@patch('sys.argv', ['awslabs.cfn-mcp-server', '--sse', '--port', '9999'])
|
|
33
|
-
def test_main_sse(self, mock_run):
|
|
34
|
-
"""Test main function with SSE transport."""
|
|
35
|
-
# Call the main function
|
|
36
|
-
main()
|
|
37
|
-
|
|
38
|
-
# Check that mcp.run was called with the correct arguments
|
|
39
|
-
mock_run.assert_called_once()
|
|
40
|
-
assert mock_run.call_args[1].get('transport') == 'sse'
|
|
41
|
-
|
|
42
|
-
# Check that the port was set correctly
|
|
43
|
-
from awslabs.cfn_mcp_server.server import mcp
|
|
44
|
-
|
|
45
|
-
assert mcp.settings.port == 9999
|
|
46
29
|
|
|
47
30
|
def test_module_execution(self):
|
|
48
31
|
"""Test the module execution when run as __main__."""
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file.
|
|
4
|
-
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
-
|
|
8
|
-
## Unreleased
|
|
9
|
-
|
|
10
|
-
### Added
|
|
11
|
-
|
|
12
|
-
- Initial project setup
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
|
|
3
|
-
if [ "$(lsof +c 0 -p 1 | grep -e grep -e "^awslabs\..*\s1\s.*\unix\s.*socket$" | wc -l)" -ne "0" ]; then
|
|
4
|
-
echo -n "$(lsof +c 0 -p 1 | grep -e grep -e "^awslabs\..*\s1\s.*\unix\s.*socket$" | wc -l) awslabs.* streams found";
|
|
5
|
-
exit 0;
|
|
6
|
-
else
|
|
7
|
-
echo -n "Zero awslabs.* streams found";
|
|
8
|
-
exit 1;
|
|
9
|
-
fi;
|
|
10
|
-
|
|
11
|
-
echo -n "Never should reach here";
|
|
12
|
-
exit 99;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/awslabs/cfn_mcp_server/__init__.py
RENAMED
|
File without changes
|
{awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/awslabs/cfn_mcp_server/aws_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/awslabs/cfn_mcp_server/context.py
RENAMED
|
File without changes
|
{awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/awslabs/cfn_mcp_server/errors.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{awslabs_cfn_mcp_server-0.0.1 → awslabs_cfn_mcp_server-1.0.0}/tests/test_cloud_control_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|