awslabs.lambda-tool-mcp-server 2.0.9__tar.gz → 2.0.10__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 (32) hide show
  1. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/PKG-INFO +1 -1
  2. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/awslabs/lambda_tool_mcp_server/__init__.py +1 -1
  3. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/awslabs/lambda_tool_mcp_server/server.py +12 -2
  4. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/pyproject.toml +1 -1
  5. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/tests/conftest.py +29 -25
  6. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/tests/test_integration.py +11 -9
  7. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/tests/test_server.py +2 -2
  8. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/uv.lock +1 -1
  9. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/.gitignore +0 -0
  10. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/.python-version +0 -0
  11. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/CHANGELOG.md +0 -0
  12. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/Dockerfile +0 -0
  13. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/LICENSE +0 -0
  14. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/NOTICE +0 -0
  15. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/README.md +0 -0
  16. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/awslabs/__init__.py +0 -0
  17. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/docker-healthcheck.sh +0 -0
  18. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/examples/README.md +0 -0
  19. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/examples/sample_functions/customer-create/app.py +0 -0
  20. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/examples/sample_functions/customer-id-from-email/app.py +0 -0
  21. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/examples/sample_functions/customer-info-from-id/app.py +0 -0
  22. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/examples/sample_functions/template.yml +0 -0
  23. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/tests/.gitignore +0 -0
  24. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/tests/README.md +0 -0
  25. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/tests/__init__.py +0 -0
  26. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/tests/test_format_lambda_response.py +0 -0
  27. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/tests/test_integration_coverage.py +0 -0
  28. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/tests/test_register_lambda_functions.py +0 -0
  29. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/tests/test_schema_integration.py +0 -0
  30. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/tests/test_server_coverage.py +0 -0
  31. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/tests/test_server_coverage_additional.py +0 -0
  32. {awslabs_lambda_tool_mcp_server-2.0.9 → awslabs_lambda_tool_mcp_server-2.0.10}/uv-requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: awslabs.lambda-tool-mcp-server
3
- Version: 2.0.9
3
+ Version: 2.0.10
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/
@@ -14,4 +14,4 @@
14
14
 
15
15
  """awslabs.lambda-tool-mcp-server"""
16
16
 
17
- __version__ = '2.0.9'
17
+ __version__ = '2.0.10'
@@ -264,14 +264,24 @@ def filter_functions_by_tag(functions, tag_key, tag_value):
264
264
  return tagged_functions
265
265
 
266
266
 
267
+ def get_all_lambda_functions():
268
+ """Retrieve all available Lambda functions using pagination."""
269
+ paginator = lambda_client.get_paginator('list_functions')
270
+ all_functions = []
271
+
272
+ for page in paginator.paginate():
273
+ all_functions.extend(page.get('Functions', []))
274
+
275
+ return all_functions
276
+
277
+
267
278
  def register_lambda_functions():
268
279
  """Register Lambda functions as individual tools."""
269
280
  try:
270
281
  logger.info('Registering Lambda functions as individual tools...')
271
- functions = lambda_client.list_functions()
272
282
 
273
283
  # Get all functions
274
- all_functions = functions['Functions']
284
+ all_functions = get_all_lambda_functions()
275
285
  logger.info(f'Total Lambda functions found: {len(all_functions)}')
276
286
 
277
287
  # First filter by function name if prefix or list is set
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "awslabs.lambda-tool-mcp-server"
3
- version = "2.0.9"
3
+ version = "2.0.10"
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"
@@ -10,31 +10,35 @@ def mock_lambda_client():
10
10
  """Create a mock boto3 Lambda client."""
11
11
  mock_client = MagicMock()
12
12
 
13
- # Mock list_functions response
14
- mock_client.list_functions.return_value = {
15
- 'Functions': [
16
- {
17
- 'FunctionName': 'test-function-1',
18
- 'FunctionArn': 'arn:aws:lambda:us-east-1:123456789012:function:test-function-1',
19
- 'Description': 'Test function 1 description',
20
- },
21
- {
22
- 'FunctionName': 'test-function-2',
23
- 'FunctionArn': 'arn:aws:lambda:us-east-1:123456789012:function:test-function-2',
24
- 'Description': 'Test function 2 description',
25
- },
26
- {
27
- 'FunctionName': 'prefix-test-function-3',
28
- 'FunctionArn': 'arn:aws:lambda:us-east-1:123456789012:function:prefix-test-function-3',
29
- 'Description': 'Test function 3 with prefix',
30
- },
31
- {
32
- 'FunctionName': 'other-function',
33
- 'FunctionArn': 'arn:aws:lambda:us-east-1:123456789012:function:other-function',
34
- 'Description': '', # Empty description
35
- },
36
- ]
37
- }
13
+ # Mock list_functions paginator response
14
+ paginator_mock = MagicMock()
15
+ paginator_mock.paginate.return_value = [
16
+ {
17
+ 'Functions': [
18
+ {
19
+ 'FunctionName': 'test-function-1',
20
+ 'FunctionArn': 'arn:aws:lambda:us-east-1:123456789012:function:test-function-1',
21
+ 'Description': 'Test function 1 description',
22
+ },
23
+ {
24
+ 'FunctionName': 'test-function-2',
25
+ 'FunctionArn': 'arn:aws:lambda:us-east-1:123456789012:function:test-function-2',
26
+ 'Description': 'Test function 2 description',
27
+ },
28
+ {
29
+ 'FunctionName': 'prefix-test-function-3',
30
+ 'FunctionArn': 'arn:aws:lambda:us-east-1:123456789012:function:prefix-test-function-3',
31
+ 'Description': 'Test function 3 with prefix',
32
+ },
33
+ {
34
+ 'FunctionName': 'other-function',
35
+ 'FunctionArn': 'arn:aws:lambda:us-east-1:123456789012:function:other-function',
36
+ 'Description': '', # Empty description
37
+ },
38
+ ]
39
+ }
40
+ ]
41
+ mock_client.get_paginator.return_value = paginator_mock
38
42
 
39
43
  # Mock list_tags response
40
44
  def mock_list_tags(Resource):
@@ -34,15 +34,17 @@ with pytest.MonkeyPatch().context() as CTX:
34
34
  def test_tool_registration(self, mock_lambda_client, mock_create_lambda_tool):
35
35
  """Test that Lambda functions are registered as tools."""
36
36
  # Set up the mock
37
- mock_lambda_client.list_functions.return_value = {
38
- 'Functions': [
39
- {
40
- 'FunctionName': 'test-function',
41
- 'FunctionArn': 'arn:aws:lambda:us-east-1:123456789012:function:test-function',
42
- 'Description': 'Test function description',
43
- },
44
- ]
45
- }
37
+ mock_lambda_client.get_paginator.return_value.paginate.return_value = [
38
+ {
39
+ 'Functions': [
40
+ {
41
+ 'FunctionName': 'test-function',
42
+ 'FunctionArn': 'arn:aws:lambda:us-east-1:123456789012:function:test-function',
43
+ 'Description': 'Test function description',
44
+ },
45
+ ]
46
+ }
47
+ ]
46
48
 
47
49
  # Call the function
48
50
  register_lambda_functions()
@@ -416,8 +416,8 @@ with pytest.MonkeyPatch().context() as CTX:
416
416
  @patch('awslabs.lambda_tool_mcp_server.server.lambda_client')
417
417
  def test_register_error_handling(self, mock_lambda_client):
418
418
  """Test error handling in register_lambda_functions."""
419
- # Make list_functions raise an exception
420
- mock_lambda_client.list_functions.side_effect = Exception('Error listing functions')
419
+ # Make get_paginator raise an exception
420
+ mock_lambda_client.get_paginator.side_effect = Exception('Error listing functions')
421
421
 
422
422
  # Should not raise an exception
423
423
  register_lambda_functions()
@@ -46,7 +46,7 @@ wheels = [
46
46
 
47
47
  [[package]]
48
48
  name = "awslabs-lambda-tool-mcp-server"
49
- version = "2.0.9"
49
+ version = "2.0.10"
50
50
  source = { editable = "." }
51
51
  dependencies = [
52
52
  { name = "boto3" },