awslabs.lambda-tool-mcp-server 2.0.2__tar.gz → 2.0.4__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 (34) hide show
  1. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/Dockerfile +33 -23
  2. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/PKG-INFO +7 -3
  3. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/README.md +5 -1
  4. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/docker-healthcheck.sh +7 -8
  5. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/examples/README.md +1 -1
  6. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/pyproject.toml +2 -2
  7. awslabs_lambda_tool_mcp_server-2.0.4/uv-requirements.txt +26 -0
  8. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/uv.lock +664 -454
  9. awslabs_lambda_tool_mcp_server-2.0.2/.pre-commit-config.yaml +0 -14
  10. awslabs_lambda_tool_mcp_server-2.0.2/run_tests.sh +0 -173
  11. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/.gitignore +0 -0
  12. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/.python-version +0 -0
  13. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/CHANGELOG.md +0 -0
  14. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/LICENSE +0 -0
  15. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/NOTICE +0 -0
  16. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/awslabs/__init__.py +0 -0
  17. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/awslabs/lambda_tool_mcp_server/__init__.py +0 -0
  18. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/awslabs/lambda_tool_mcp_server/server.py +0 -0
  19. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/examples/sample_functions/customer-create/app.py +0 -0
  20. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/examples/sample_functions/customer-id-from-email/app.py +0 -0
  21. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/examples/sample_functions/customer-info-from-id/app.py +0 -0
  22. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/examples/sample_functions/template.yml +0 -0
  23. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/tests/.gitignore +0 -0
  24. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/tests/README.md +0 -0
  25. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/tests/__init__.py +0 -0
  26. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/tests/conftest.py +0 -0
  27. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/tests/test_format_lambda_response.py +0 -0
  28. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/tests/test_integration.py +0 -0
  29. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/tests/test_integration_coverage.py +0 -0
  30. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/tests/test_register_lambda_functions.py +0 -0
  31. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/tests/test_schema_integration.py +0 -0
  32. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/tests/test_server.py +0 -0
  33. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/tests/test_server_coverage.py +0 -0
  34. {awslabs_lambda_tool_mcp_server-2.0.2 → awslabs_lambda_tool_mcp_server-2.0.4}/tests/test_server_coverage_additional.py +0 -0
@@ -12,8 +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:1.137.1-20250411084548
16
- FROM public.ecr.aws/sam/build-python3.10@sha256:e78695db10ca8cb129e59e30f7dc9789b0dbd0181dba195d68419c72bac51ac1 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
17
17
 
18
18
  # Install the project into `/app`
19
19
  WORKDIR /app
@@ -31,40 +31,50 @@ ENV UV_PYTHON_PREFERENCE=only-system
31
31
  ENV UV_FROZEN=true
32
32
 
33
33
  # Copy the required files first
34
- 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
35
49
 
36
50
  # Install the project's dependencies using the lockfile and settings
37
51
  RUN --mount=type=cache,target=/root/.cache/uv \
38
- pip install uv && \
39
- 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
40
54
 
41
55
  # Then, add the rest of the project source code and install it
42
56
  # Installing separately from its dependencies allows optimal layer caching
43
57
  COPY . /app
44
58
  RUN --mount=type=cache,target=/root/.cache/uv \
45
- uv sync --frozen --no-dev --no-editable
59
+ uv sync --python 3.13 --frozen --no-dev --no-editable
46
60
 
47
61
  # Make the directory just in case it doesn't exist
48
62
  RUN mkdir -p /root/.local
49
63
 
50
- FROM public.ecr.aws/sam/build-python3.10@sha256:e78695db10ca8cb129e59e30f7dc9789b0dbd0181dba195d68419c72bac51ac1
64
+ FROM public.ecr.aws/docker/library/python:3.13.5-alpine3.21@sha256:c9a09c45a4bcc618c7f7128585b8dd0d41d0c31a8a107db4c8255ffe0b69375d
51
65
 
52
66
  # Place executables in the environment at the front of the path and include other binaries
53
- ENV PATH="/app/.venv/bin:$PATH:/usr/sbin"
54
-
55
- # Install lsof for the healthcheck
56
- # Install other tools as needed for the MCP server
57
- # Add non-root user and ability to change directory into /root
58
- RUN yum update -y && \
59
- yum install -y lsof && \
60
- yum clean all -y && \
61
- rm -rf /var/cache/yum && \
62
- groupadd --force --system app && \
63
- useradd app -g app -d /app && \
64
- chmod o+x /root
65
-
66
- # Get the project from the uv layer
67
- 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
68
78
  COPY --from=uv --chown=app:app /app/.venv /app/.venv
69
79
 
70
80
  # Get healthcheck script
@@ -74,5 +84,5 @@ COPY ./docker-healthcheck.sh /usr/local/bin/docker-healthcheck.sh
74
84
  USER app
75
85
 
76
86
  # When running the container, add --db-path and a bind mount to the host's db file
77
- 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"]
78
88
  ENTRYPOINT ["awslabs.lambda-tool-mcp-server"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: awslabs.lambda-tool-mcp-server
3
- Version: 2.0.2
3
+ Version: 2.0.4
4
4
  Summary: An AWS Labs Model Context Protocol (MCP) server for AWS Lambda Tools
5
5
  Project-URL: Homepage, https://awslabs.github.io/mcp/
6
6
  Project-URL: Documentation, https://awslabs.github.io/mcp/servers/lambda-tool-mcp-server/
@@ -22,7 +22,7 @@ Classifier: Programming Language :: Python :: 3.12
22
22
  Classifier: Programming Language :: Python :: 3.13
23
23
  Requires-Python: >=3.10
24
24
  Requires-Dist: boto3>=1.37.27
25
- Requires-Dist: mcp[cli]>=1.6.0
25
+ Requires-Dist: mcp[cli]>=1.11.0
26
26
  Requires-Dist: pydantic>=2.10.6
27
27
  Description-Content-Type: text/markdown
28
28
 
@@ -61,7 +61,11 @@ From a **security** perspective, this approach implements segregation of duties
61
61
 
62
62
  ## Installation
63
63
 
64
- Here are some ways you can work with MCP across AWS, and we'll be adding support to more products including Amazon Q Developer CLI soon: (e.g. for Amazon Q Developer CLI MCP, `~/.aws/amazonq/mcp.json`):
64
+ | Cursor | VS Code |
65
+ |:------:|:-------:|
66
+ | [![Install MCP Server](https://cursor.com/deeplink/mcp-install-light.svg)](https://cursor.com/install-mcp?name=awslabs.lambda-tool-mcp-server&config=eyJjb21tYW5kIjoidXZ4IGF3c2xhYnMubGFtYmRhLXRvb2wtbWNwLXNlcnZlckBsYXRlc3QiLCJlbnYiOnsiQVdTX1BST0ZJTEUiOiJ5b3VyLWF3cy1wcm9maWxlIiwiQVdTX1JFR0lPTiI6InVzLWVhc3QtMSIsIkZVTkNUSU9OX1BSRUZJWCI6InlvdXItZnVuY3Rpb24tcHJlZml4IiwiRlVOQ1RJT05fTElTVCI6InlvdXItZmlyc3QtZnVuY3Rpb24sIHlvdXItc2Vjb25kLWZ1bmN0aW9uIiwiRlVOQ1RJT05fVEFHX0tFWSI6InlvdXItdGFnLWtleSIsIkZVTkNUSU9OX1RBR19WQUxVRSI6InlvdXItdGFnLXZhbHVlIiwiRlVOQ1RJT05fSU5QVVRfU0NIRU1BX0FSTl9UQUdfS0VZIjoieW91ci1mdW5jdGlvbi10YWctZm9yLWlucHV0LXNjaGVtYSJ9fQ%3D%3D) | [![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=AWS%20Lambda%20Tool%20MCP%20Server&config=%7B%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22awslabs.lambda-tool-mcp-server%40latest%22%5D%2C%22env%22%3A%7B%22AWS_PROFILE%22%3A%22your-aws-profile%22%2C%22AWS_REGION%22%3A%22us-east-1%22%2C%22FUNCTION_PREFIX%22%3A%22your-function-prefix%22%2C%22FUNCTION_LIST%22%3A%22your-first-function%2C%20your-second-function%22%2C%22FUNCTION_TAG_KEY%22%3A%22your-tag-key%22%2C%22FUNCTION_TAG_VALUE%22%3A%22your-tag-value%22%2C%22FUNCTION_INPUT_SCHEMA_ARN_TAG_KEY%22%3A%22your-function-tag-for-input-schema%22%7D%7D) |
67
+
68
+ Configure the MCP server in your MCP client configuration (e.g., for Amazon Q Developer CLI, edit `~/.aws/amazonq/mcp.json`):
65
69
 
66
70
  ```json
67
71
  {
@@ -33,7 +33,11 @@ From a **security** perspective, this approach implements segregation of duties
33
33
 
34
34
  ## Installation
35
35
 
36
- Here are some ways you can work with MCP across AWS, and we'll be adding support to more products including Amazon Q Developer CLI soon: (e.g. for Amazon Q Developer CLI MCP, `~/.aws/amazonq/mcp.json`):
36
+ | Cursor | VS Code |
37
+ |:------:|:-------:|
38
+ | [![Install MCP Server](https://cursor.com/deeplink/mcp-install-light.svg)](https://cursor.com/install-mcp?name=awslabs.lambda-tool-mcp-server&config=eyJjb21tYW5kIjoidXZ4IGF3c2xhYnMubGFtYmRhLXRvb2wtbWNwLXNlcnZlckBsYXRlc3QiLCJlbnYiOnsiQVdTX1BST0ZJTEUiOiJ5b3VyLWF3cy1wcm9maWxlIiwiQVdTX1JFR0lPTiI6InVzLWVhc3QtMSIsIkZVTkNUSU9OX1BSRUZJWCI6InlvdXItZnVuY3Rpb24tcHJlZml4IiwiRlVOQ1RJT05fTElTVCI6InlvdXItZmlyc3QtZnVuY3Rpb24sIHlvdXItc2Vjb25kLWZ1bmN0aW9uIiwiRlVOQ1RJT05fVEFHX0tFWSI6InlvdXItdGFnLWtleSIsIkZVTkNUSU9OX1RBR19WQUxVRSI6InlvdXItdGFnLXZhbHVlIiwiRlVOQ1RJT05fSU5QVVRfU0NIRU1BX0FSTl9UQUdfS0VZIjoieW91ci1mdW5jdGlvbi10YWctZm9yLWlucHV0LXNjaGVtYSJ9fQ%3D%3D) | [![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=AWS%20Lambda%20Tool%20MCP%20Server&config=%7B%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22awslabs.lambda-tool-mcp-server%40latest%22%5D%2C%22env%22%3A%7B%22AWS_PROFILE%22%3A%22your-aws-profile%22%2C%22AWS_REGION%22%3A%22us-east-1%22%2C%22FUNCTION_PREFIX%22%3A%22your-function-prefix%22%2C%22FUNCTION_LIST%22%3A%22your-first-function%2C%20your-second-function%22%2C%22FUNCTION_TAG_KEY%22%3A%22your-tag-key%22%2C%22FUNCTION_TAG_VALUE%22%3A%22your-tag-value%22%2C%22FUNCTION_INPUT_SCHEMA_ARN_TAG_KEY%22%3A%22your-function-tag-for-input-schema%22%7D%7D) |
39
+
40
+ Configure the MCP server in your MCP client configuration (e.g., for Amazon Q Developer CLI, edit `~/.aws/amazonq/mcp.json`):
37
41
 
38
42
  ```json
39
43
  {
@@ -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="lambda-tool-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;
@@ -2,7 +2,7 @@
2
2
 
3
3
  This directory contains sample Lambda functions that demonstrate different use cases for the MCP server. These functions are designed to be deployed using the AWS SAM CLI.
4
4
 
5
- The first two functions (`CustomerInfoFromId` and `CustomerIdFromEmail`) simulate an internal customer infromation system where a customer status can be retrived via a customer ID and the customer ID can be retrieved form the email. In this way, an agent using these two functions as tools can retrive customer information from an email by invoking the two functions.
5
+ The first two functions (`CustomerInfoFromId` and `CustomerIdFromEmail`) simulate an internal customer information system where a customer status can be retrieved via a customer ID and the customer ID can be retrieved form the email. In this way, an agent using these two functions as tools can retrieved customer information from an email by invoking the two functions.
6
6
 
7
7
  ## Available Functions
8
8
 
@@ -1,12 +1,12 @@
1
1
  [project]
2
2
  name = "awslabs.lambda-tool-mcp-server"
3
- version = "2.0.2"
3
+ version = "2.0.4"
4
4
  description = "An AWS Labs Model Context Protocol (MCP) server for AWS Lambda Tools"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
7
7
  dependencies = [
8
8
  "boto3>=1.37.27",
9
- "mcp[cli]>=1.6.0",
9
+ "mcp[cli]>=1.11.0",
10
10
  "pydantic>=2.10.6",
11
11
  ]
12
12
  license = {text = "Apache-2.0"}
@@ -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`)