awslabs.openapi-mcp-server 0.2.0__tar.gz → 0.2.5__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 (126) hide show
  1. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/Dockerfile +3 -4
  2. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/PKG-INFO +39 -1
  3. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/README.md +38 -0
  4. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/__init__.py +1 -1
  5. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/prompts/generators/operation_prompts.py +11 -0
  6. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/pyproject.toml +1 -1
  7. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_openapi_coverage_89.py +12 -23
  8. awslabs_openapi_mcp_server-0.2.5/uv-requirements.txt +24 -0
  9. awslabs_openapi_mcp_server-0.2.5/uv.lock +2185 -0
  10. awslabs_openapi_mcp_server-0.2.0/Dockerlite +0 -73
  11. awslabs_openapi_mcp_server-0.2.0/uv-requirements.txt +0 -26
  12. awslabs_openapi_mcp_server-0.2.0/uv.lock +0 -1753
  13. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/.coveragerc +0 -0
  14. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/.dockerignore +0 -0
  15. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/.gitignore +0 -0
  16. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/.python-version +0 -0
  17. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/AUTHENTICATION.md +0 -0
  18. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/AWS_BEST_PRACTICES.md +0 -0
  19. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/CHANGELOG.md +0 -0
  20. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/DEPLOYMENT.md +0 -0
  21. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/LICENSE +0 -0
  22. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/NOTICE +0 -0
  23. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/OBSERVABILITY.md +0 -0
  24. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/__init__.py +0 -0
  25. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/api/__init__.py +0 -0
  26. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/api/config.py +0 -0
  27. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/__init__.py +0 -0
  28. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/api_key_auth.py +0 -0
  29. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/auth_cache.py +0 -0
  30. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/auth_errors.py +0 -0
  31. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/auth_factory.py +0 -0
  32. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/auth_protocol.py +0 -0
  33. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/auth_provider.py +0 -0
  34. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/base_auth.py +0 -0
  35. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/basic_auth.py +0 -0
  36. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/bearer_auth.py +0 -0
  37. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/cognito_auth.py +0 -0
  38. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/register.py +0 -0
  39. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/patch/__init__.py +0 -0
  40. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/prompts/__init__.py +0 -0
  41. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/prompts/generators/__init__.py +0 -0
  42. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/prompts/generators/workflow_prompts.py +0 -0
  43. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/prompts/models.py +0 -0
  44. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/prompts/prompt_manager.py +0 -0
  45. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/server.py +0 -0
  46. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/utils/__init__.py +0 -0
  47. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/utils/cache_provider.py +0 -0
  48. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/utils/config.py +0 -0
  49. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/utils/error_handler.py +0 -0
  50. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/utils/http_client.py +0 -0
  51. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/utils/metrics_provider.py +0 -0
  52. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/utils/openapi.py +0 -0
  53. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/utils/openapi_validator.py +0 -0
  54. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/docker-healthcheck.sh +0 -0
  55. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/pyrightconfig.json +0 -0
  56. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/README.md +0 -0
  57. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/api/test_config.py +0 -0
  58. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_api_key_auth.py +0 -0
  59. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_cache.py +0 -0
  60. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_errors.py +0 -0
  61. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_factory.py +0 -0
  62. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_factory_caching.py +0 -0
  63. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_factory_coverage.py +0 -0
  64. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_protocol.py +0 -0
  65. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_protocol_additional.py +0 -0
  66. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_protocol_boost.py +0 -0
  67. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_protocol_coverage.py +0 -0
  68. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_protocol_extended.py +0 -0
  69. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_protocol_improved.py +0 -0
  70. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_provider_additional.py +0 -0
  71. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_base_auth.py +0 -0
  72. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_base_auth_coverage.py +0 -0
  73. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_basic_auth.py +0 -0
  74. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_bearer_auth.py +0 -0
  75. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_cognito_auth.py +0 -0
  76. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_cognito_auth_additional_coverage.py +0 -0
  77. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_cognito_auth_boost_coverage.py +0 -0
  78. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_cognito_auth_client_credentials.py +0 -0
  79. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_cognito_auth_coverage_boost.py +0 -0
  80. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_cognito_auth_exceptions.py +0 -0
  81. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_register.py +0 -0
  82. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_register_coverage.py +0 -0
  83. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/standalone/test_operation_prompt.py +0 -0
  84. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/standalone/test_prompt_arguments.py +0 -0
  85. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/standalone/test_secure_operation_prompt.py +0 -0
  86. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/test_mcp_prompt_manager.py +0 -0
  87. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/test_mcp_prompt_manager_integration.py +0 -0
  88. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/test_models_dict_method.py +0 -0
  89. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/test_operation_prompts_extended.py +0 -0
  90. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/test_prompt_manager_additional.py +0 -0
  91. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/test_prompt_manager_comprehensive.py +0 -0
  92. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/test_prompt_manager_coverage.py +0 -0
  93. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/test_prompt_registration.py +0 -0
  94. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_api_name.py +0 -0
  95. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_cache_coverage_89.py +0 -0
  96. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_client.py +0 -0
  97. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_coverage_boost.py +0 -0
  98. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_init.py +0 -0
  99. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_main.py +0 -0
  100. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_main_extended.py +0 -0
  101. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server.py +0 -0
  102. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server_auth_errors.py +0 -0
  103. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server_coverage_boost.py +0 -0
  104. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server_coverage_boost_2.py +0 -0
  105. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server_exception_handling.py +0 -0
  106. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server_extended.py +0 -0
  107. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server_httpx_version.py +0 -0
  108. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server_part1.py +0 -0
  109. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server_route_logging.py +0 -0
  110. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server_signal_handlers.py +0 -0
  111. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_cache_provider.py +0 -0
  112. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_error_handler.py +0 -0
  113. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_error_handler_boost.py +0 -0
  114. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_error_handler_extended.py +0 -0
  115. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_error_handler_fix.py +0 -0
  116. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_http_client.py +0 -0
  117. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_http_client_comprehensive.py +0 -0
  118. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_http_client_extended.py +0 -0
  119. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_http_client_extended2.py +0 -0
  120. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_http_client_import_error.py +0 -0
  121. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_metrics_provider.py +0 -0
  122. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_metrics_provider_decorators.py +0 -0
  123. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_metrics_provider_extended2.py +0 -0
  124. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_metrics_provider_prometheus.py +0 -0
  125. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_openapi.py +0 -0
  126. {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_openapi_validator.py +0 -0
@@ -13,7 +13,7 @@
13
13
  # limitations under the License.
14
14
 
15
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
16
+ FROM public.ecr.aws/docker/library/python:3.13-alpine@sha256:070342a0cc1011532c0e69972cce2bbc6cc633eba294bae1d12abea8bd05303b AS uv
17
17
 
18
18
  # Install the project into `/app`
19
19
  WORKDIR /app
@@ -45,8 +45,7 @@ RUN apk update && \
45
45
  musl-dev \
46
46
  libffi-dev \
47
47
  openssl-dev \
48
- cargo && \
49
- pip install --no-cache-dir uv
48
+ cargo
50
49
 
51
50
  # Install the project's dependencies using the lockfile and settings
52
51
  RUN --mount=type=cache,target=/root/.cache/uv \
@@ -62,7 +61,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \
62
61
  # Make the directory just in case it doesn't exist
63
62
  RUN mkdir -p /root/.local
64
63
 
65
- FROM public.ecr.aws/docker/library/python:3.13.5-alpine3.21@sha256:c9a09c45a4bcc618c7f7128585b8dd0d41d0c31a8a107db4c8255ffe0b69375d
64
+ FROM public.ecr.aws/docker/library/python:3.13-alpine@sha256:070342a0cc1011532c0e69972cce2bbc6cc633eba294bae1d12abea8bd05303b
66
65
 
67
66
  # Place executables in the environment at the front of the path and include other binaries
68
67
  ENV PATH="/app/.venv/bin:$PATH" \
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: awslabs.openapi-mcp-server
3
- Version: 0.2.0
3
+ Version: 0.2.5
4
4
  Summary: An AWS Labs Model Context Protocol (MCP) server for OpenAPI
5
5
  Project-URL: Homepage, https://awslabs.github.io/mcp/
6
6
  Project-URL: Documentation, https://awslabs.github.io/mcp/servers/openapi-mcp-server/
@@ -86,6 +86,10 @@ This project is a server that dynamically creates Model Context Protocol (MCP) t
86
86
 
87
87
  ## Installation
88
88
 
89
+ | Cursor | VS Code |
90
+ |:------:|:-------:|
91
+ | [![Install MCP Server](https://cursor.com/deeplink/mcp-install-light.svg)](https://cursor.com/en/install-mcp?name=awslabs.openapi-mcp-server&config=eyJjb21tYW5kIjoidXZ4IGF3c2xhYnMub3BlbmFwaS1tY3Atc2VydmVyQGxhdGVzdCIsImVudiI6eyJBUElfTkFNRSI6InlvdXItYXBpLW5hbWUiLCJBUElfQkFTRV9VUkwiOiJodHRwczovL2FwaS5leGFtcGxlLmNvbSIsIkFQSV9TUEVDX1VSTCI6Imh0dHBzOi8vYXBpLmV4YW1wbGUuY29tL29wZW5hcGkuanNvbiIsIkxPR19MRVZFTCI6IkVSUk9SIiwiRU5BQkxFX1BST01FVEhFVVMiOiJmYWxzZSIsIkVOQUJMRV9PUEVSQVRJT05fUFJPTVBUUyI6InRydWUiLCJVVklDT1JOX1RJTUVPVVRfR1JBQ0VGVUxfU0hVVERPV04iOiI1LjAiLCJVVklDT1JOX0dSQUNFRlVMX1NIVVRET1dOIjoidHJ1ZSJ9LCJkaXNhYmxlZCI6ZmFsc2UsImF1dG9BcHByb3ZlIjpbXX0%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=OpenAPI%20MCP%20Server&config=%7B%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22awslabs.openapi-mcp-server%40latest%22%5D%2C%22env%22%3A%7B%22API_NAME%22%3A%22your-api-name%22%2C%22API_BASE_URL%22%3A%22https%3A%2F%2Fapi.example.com%22%2C%22API_SPEC_URL%22%3A%22https%3A%2F%2Fapi.example.com%2Fopenapi.json%22%2C%22LOG_LEVEL%22%3A%22ERROR%22%2C%22ENABLE_PROMETHEUS%22%3A%22false%22%2C%22ENABLE_OPERATION_PROMPTS%22%3A%22true%22%2C%22UVICORN_TIMEOUT_GRACEFUL_SHUTDOWN%22%3A%225.0%22%2C%22UVICORN_GRACEFUL_SHUTDOWN%22%3A%22true%22%7D%2C%22disabled%22%3Afalse%2C%22autoApprove%22%3A%5B%5D%7D) |
92
+
89
93
  ### From PyPI
90
94
 
91
95
  ```bash
@@ -145,6 +149,40 @@ Here are some ways you can work with MCP across AWS (e.g. for Amazon Q Developer
145
149
  }
146
150
  ```
147
151
 
152
+ ### Windows Installation
153
+
154
+ For Windows users, the MCP server configuration format is slightly different:
155
+
156
+ ```json
157
+ {
158
+ "mcpServers": {
159
+ "awslabs.openapi-mcp-server": {
160
+ "disabled": false,
161
+ "timeout": 60,
162
+ "type": "stdio",
163
+ "command": "uv",
164
+ "args": [
165
+ "tool",
166
+ "run",
167
+ "--from",
168
+ "awslabs.openapi-mcp-server@latest",
169
+ "awslabs.openapi-mcp-server.exe"
170
+ ],
171
+ "env": {
172
+ "API_NAME": "your-api-name",
173
+ "API_BASE_URL": "https://api.example.com",
174
+ "API_SPEC_URL": "https://api.example.com/openapi.json",
175
+ "LOG_LEVEL": "ERROR",
176
+ "ENABLE_PROMETHEUS": "false",
177
+ "ENABLE_OPERATION_PROMPTS": "true",
178
+ "UVICORN_TIMEOUT_GRACEFUL_SHUTDOWN": "5.0",
179
+ "UVICORN_GRACEFUL_SHUTDOWN": "true"
180
+ },
181
+ }
182
+ }
183
+ }
184
+ ```
185
+
148
186
  ## Usage
149
187
 
150
188
  ### Basic Usage
@@ -27,6 +27,10 @@ This project is a server that dynamically creates Model Context Protocol (MCP) t
27
27
 
28
28
  ## Installation
29
29
 
30
+ | Cursor | VS Code |
31
+ |:------:|:-------:|
32
+ | [![Install MCP Server](https://cursor.com/deeplink/mcp-install-light.svg)](https://cursor.com/en/install-mcp?name=awslabs.openapi-mcp-server&config=eyJjb21tYW5kIjoidXZ4IGF3c2xhYnMub3BlbmFwaS1tY3Atc2VydmVyQGxhdGVzdCIsImVudiI6eyJBUElfTkFNRSI6InlvdXItYXBpLW5hbWUiLCJBUElfQkFTRV9VUkwiOiJodHRwczovL2FwaS5leGFtcGxlLmNvbSIsIkFQSV9TUEVDX1VSTCI6Imh0dHBzOi8vYXBpLmV4YW1wbGUuY29tL29wZW5hcGkuanNvbiIsIkxPR19MRVZFTCI6IkVSUk9SIiwiRU5BQkxFX1BST01FVEhFVVMiOiJmYWxzZSIsIkVOQUJMRV9PUEVSQVRJT05fUFJPTVBUUyI6InRydWUiLCJVVklDT1JOX1RJTUVPVVRfR1JBQ0VGVUxfU0hVVERPV04iOiI1LjAiLCJVVklDT1JOX0dSQUNFRlVMX1NIVVRET1dOIjoidHJ1ZSJ9LCJkaXNhYmxlZCI6ZmFsc2UsImF1dG9BcHByb3ZlIjpbXX0%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=OpenAPI%20MCP%20Server&config=%7B%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22awslabs.openapi-mcp-server%40latest%22%5D%2C%22env%22%3A%7B%22API_NAME%22%3A%22your-api-name%22%2C%22API_BASE_URL%22%3A%22https%3A%2F%2Fapi.example.com%22%2C%22API_SPEC_URL%22%3A%22https%3A%2F%2Fapi.example.com%2Fopenapi.json%22%2C%22LOG_LEVEL%22%3A%22ERROR%22%2C%22ENABLE_PROMETHEUS%22%3A%22false%22%2C%22ENABLE_OPERATION_PROMPTS%22%3A%22true%22%2C%22UVICORN_TIMEOUT_GRACEFUL_SHUTDOWN%22%3A%225.0%22%2C%22UVICORN_GRACEFUL_SHUTDOWN%22%3A%22true%22%7D%2C%22disabled%22%3Afalse%2C%22autoApprove%22%3A%5B%5D%7D) |
33
+
30
34
  ### From PyPI
31
35
 
32
36
  ```bash
@@ -86,6 +90,40 @@ Here are some ways you can work with MCP across AWS (e.g. for Amazon Q Developer
86
90
  }
87
91
  ```
88
92
 
93
+ ### Windows Installation
94
+
95
+ For Windows users, the MCP server configuration format is slightly different:
96
+
97
+ ```json
98
+ {
99
+ "mcpServers": {
100
+ "awslabs.openapi-mcp-server": {
101
+ "disabled": false,
102
+ "timeout": 60,
103
+ "type": "stdio",
104
+ "command": "uv",
105
+ "args": [
106
+ "tool",
107
+ "run",
108
+ "--from",
109
+ "awslabs.openapi-mcp-server@latest",
110
+ "awslabs.openapi-mcp-server.exe"
111
+ ],
112
+ "env": {
113
+ "API_NAME": "your-api-name",
114
+ "API_BASE_URL": "https://api.example.com",
115
+ "API_SPEC_URL": "https://api.example.com/openapi.json",
116
+ "LOG_LEVEL": "ERROR",
117
+ "ENABLE_PROMETHEUS": "false",
118
+ "ENABLE_OPERATION_PROMPTS": "true",
119
+ "UVICORN_TIMEOUT_GRACEFUL_SHUTDOWN": "5.0",
120
+ "UVICORN_GRACEFUL_SHUTDOWN": "true"
121
+ },
122
+ }
123
+ }
124
+ }
125
+ ```
126
+
89
127
  ## Usage
90
128
 
91
129
  ### Basic Usage
@@ -15,7 +15,7 @@
15
15
  OpenAPI MCP Server - A server that dynamically creates MCP tools and resources from OpenAPI specifications.
16
16
  """
17
17
 
18
- __version__ = '0.2.0'
18
+ __version__ = '0.2.5'
19
19
 
20
20
 
21
21
  import inspect
@@ -552,6 +552,17 @@ def create_operation_prompt(
552
552
  named_args = dict(zip(param_names, args))
553
553
  named_args.update(kwargs)
554
554
 
555
+ # Validate required parameters
556
+ missing_required = []
557
+ for arg in prompt_arguments:
558
+ if arg.required and (
559
+ arg.name not in named_args or named_args[arg.name] is None
560
+ ):
561
+ missing_required.append(arg.name)
562
+
563
+ if missing_required:
564
+ raise TypeError(f'Missing required argument(s): {", ".join(missing_required)}')
565
+
555
566
  # Extract the values in the correct order for handler_with_fixed_args
556
567
  arg_values = []
557
568
  for arg in prompt_arguments:
@@ -7,7 +7,7 @@ allow-direct-references = true
7
7
 
8
8
  [project]
9
9
  name = "awslabs.openapi-mcp-server"
10
- version = "0.2.0"
10
+ version = "0.2.5"
11
11
  description = "An AWS Labs Model Context Protocol (MCP) server for OpenAPI"
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.10"
@@ -2,6 +2,7 @@
2
2
 
3
3
  import json
4
4
  import pytest
5
+ import sys
5
6
  import tempfile
6
7
  from awslabs.openapi_mcp_server.utils.openapi import load_openapi_spec
7
8
  from pathlib import Path
@@ -36,19 +37,15 @@ paths:
36
37
  temp_path = f.name
37
38
 
38
39
  try:
39
- # Mock yaml import to raise ImportError
40
- with patch('builtins.__import__') as mock_import:
41
-
42
- def side_effect(name, *args, **kwargs):
43
- if name == 'yaml':
44
- raise ImportError('No module named yaml')
45
- return __import__(name, *args, **kwargs)
46
-
47
- mock_import.side_effect = side_effect
48
-
49
- # This should raise ImportError about pyyaml
50
- with pytest.raises(ImportError, match="Required dependency 'pyyaml' not installed"):
51
- load_openapi_spec(path=temp_path)
40
+ # Mock prance to fail and remove yaml from sys.modules to simulate ImportError
41
+ with patch('awslabs.openapi_mcp_server.utils.openapi.ResolvingParser') as mock_parser:
42
+ mock_parser.side_effect = Exception('Prance failed')
43
+ with patch.dict(sys.modules, {'yaml': None}):
44
+ # This should raise ImportError about pyyaml
45
+ with pytest.raises(
46
+ ImportError, match="Required dependency 'pyyaml' not installed"
47
+ ):
48
+ load_openapi_spec(path=temp_path)
52
49
  finally:
53
50
  # Clean up
54
51
  Path(temp_path).unlink(missing_ok=True)
@@ -91,17 +88,9 @@ paths:
91
88
  temp_path = f.name
92
89
 
93
90
  try:
94
- # Mock prance to not be available and yaml import to fail
91
+ # Mock prance to not be available and remove yaml from sys.modules
95
92
  with patch('awslabs.openapi_mcp_server.utils.openapi.PRANCE_AVAILABLE', False):
96
- with patch('builtins.__import__') as mock_import:
97
-
98
- def side_effect(name, *args, **kwargs):
99
- if name == 'yaml':
100
- raise ImportError('No module named yaml')
101
- return __import__(name, *args, **kwargs)
102
-
103
- mock_import.side_effect = side_effect
104
-
93
+ with patch.dict(sys.modules, {'yaml': None}):
105
94
  # This should raise ImportError about pyyaml
106
95
  with pytest.raises(
107
96
  ImportError, match="Required dependency 'pyyaml' not installed"
@@ -0,0 +1,24 @@
1
+ # This file was autogenerated by uv via the following command:
2
+ # echo "uv==0.8.10" > uv-requirements.in
3
+ # uv pip compile --generate-hashes --output-file=uv-requirements.txt --strip-extras --python=3.10 uv-requirements.in
4
+ uv==0.8.10 \
5
+ --hash=sha256:31e4fc37ee94b94c032384a0957ad32ba7dce4ce6c04b4880fd3e31e25e51a82 \
6
+ --hash=sha256:36a5ce708d52388c37043e7335f9eb3fea5a19a56166a2cc6adb365179a1cd77 \
7
+ --hash=sha256:38286d230daad82388469c8dc7a1d2f5dc279c11178319c886d1a88d7938e513 \
8
+ --hash=sha256:3e190cee3bb2b4f574a419eef87ae8e33f713e9cd6f856b83277ece70ad9ca9b \
9
+ --hash=sha256:3fdf89fc40af9902141c39ed943bcfca15664623363335eb032a44f22001e2b4 \
10
+ --hash=sha256:4cc190d403a89e46d13cec83b6f8e8d7d07aaf1e5a996eac9a3f0c2a8cd92537 \
11
+ --hash=sha256:57b71dc79eff25a5419d3fe4a563d3b9397f55d789f685ef27f43f033b31f482 \
12
+ --hash=sha256:86fe044c2be43977566a0d184a487edd7aace2febb757fd95927684b629ef50b \
13
+ --hash=sha256:88df34c32555064fae459cce665757619fd1af7deb2dc393352b15d909d2d131 \
14
+ --hash=sha256:9ad21eeaa4156a1bf5ed85903f80db06e2c02badd3a587ba98d3171517960555 \
15
+ --hash=sha256:a5495b5a6e3111c03cf5e4dbdd598bc8fd1da887e3920d58cd5a2d4c8bc9a473 \
16
+ --hash=sha256:ab072cd3bf2f9dc264659a1ff48ad91a910ac4830bcfe965e2d3f89c86646f46 \
17
+ --hash=sha256:af8a5526b0e331775a264fa0dbccfd53c183cb974f269a208af136d7561f9eb2 \
18
+ --hash=sha256:b00637c63d5dfc9f879281c5c91db2bb909ab1f9ab275dab015e7fb6cac6be5b \
19
+ --hash=sha256:b3ff3c451fcd23ea78356d8c18e802d0e423cbe655273601e3ec039a51b33286 \
20
+ --hash=sha256:c4a493cd4b15b3aef11523531aff96a77a586666a63e842fa437966b7b7ee62d \
21
+ --hash=sha256:defc50bb319be2d58be74a680710cd4b7697e88d5f79974eacd354df95f0b6b0 \
22
+ --hash=sha256:e0a02bcec766eb0862b7082ab746b204add7d9fcaa62322502d159b5a7ccc54a \
23
+ --hash=sha256:eb79a46d8099f563ef58237bf4e9009f876a40145e757ea883a92b24b724d01e
24
+ # via -r uv-requirements.in