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.
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/Dockerfile +3 -4
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/PKG-INFO +39 -1
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/README.md +38 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/__init__.py +1 -1
- {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
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/pyproject.toml +1 -1
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_openapi_coverage_89.py +12 -23
- awslabs_openapi_mcp_server-0.2.5/uv-requirements.txt +24 -0
- awslabs_openapi_mcp_server-0.2.5/uv.lock +2185 -0
- awslabs_openapi_mcp_server-0.2.0/Dockerlite +0 -73
- awslabs_openapi_mcp_server-0.2.0/uv-requirements.txt +0 -26
- awslabs_openapi_mcp_server-0.2.0/uv.lock +0 -1753
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/.coveragerc +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/.dockerignore +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/.gitignore +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/.python-version +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/AUTHENTICATION.md +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/AWS_BEST_PRACTICES.md +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/CHANGELOG.md +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/DEPLOYMENT.md +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/LICENSE +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/NOTICE +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/OBSERVABILITY.md +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/__init__.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/api/__init__.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/api/config.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/__init__.py +0 -0
- {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
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/auth_cache.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/auth_errors.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/auth_factory.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/auth_protocol.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/auth_provider.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/base_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/basic_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/bearer_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/cognito_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/auth/register.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/patch/__init__.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/prompts/__init__.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/prompts/generators/__init__.py +0 -0
- {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
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/prompts/models.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/prompts/prompt_manager.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/server.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/utils/__init__.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/utils/cache_provider.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/utils/config.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/utils/error_handler.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/utils/http_client.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/utils/metrics_provider.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/utils/openapi.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/awslabs/openapi_mcp_server/utils/openapi_validator.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/docker-healthcheck.sh +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/pyrightconfig.json +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/README.md +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/api/test_config.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_api_key_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_cache.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_errors.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_factory.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_factory_caching.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_factory_coverage.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_protocol.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_protocol_additional.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_protocol_boost.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_protocol_coverage.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_protocol_extended.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_protocol_improved.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_auth_provider_additional.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_base_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_base_auth_coverage.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_basic_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_bearer_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_cognito_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_cognito_auth_additional_coverage.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_cognito_auth_boost_coverage.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_cognito_auth_client_credentials.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_cognito_auth_coverage_boost.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_cognito_auth_exceptions.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_register.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/auth/test_register_coverage.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/standalone/test_operation_prompt.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/standalone/test_prompt_arguments.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/standalone/test_secure_operation_prompt.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/test_mcp_prompt_manager.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/test_mcp_prompt_manager_integration.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/test_models_dict_method.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/test_operation_prompts_extended.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/test_prompt_manager_additional.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/test_prompt_manager_comprehensive.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/test_prompt_manager_coverage.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/prompts/test_prompt_registration.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_api_name.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_cache_coverage_89.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_client.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_coverage_boost.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_init.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_main.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_main_extended.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server_auth_errors.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server_coverage_boost.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server_coverage_boost_2.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server_exception_handling.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server_extended.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server_httpx_version.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server_part1.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server_route_logging.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/test_server_signal_handlers.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_cache_provider.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_error_handler.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_error_handler_boost.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_error_handler_extended.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_error_handler_fix.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_http_client.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_http_client_comprehensive.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_http_client_extended.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_http_client_extended2.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_http_client_import_error.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_metrics_provider.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_metrics_provider_decorators.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_metrics_provider_extended2.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_metrics_provider_prometheus.py +0 -0
- {awslabs_openapi_mcp_server-0.2.0 → awslabs_openapi_mcp_server-0.2.5}/tests/utils/test_openapi.py +0 -0
- {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
|
|
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
|
|
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.
|
|
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
|
+
| [](https://cursor.com/en/install-mcp?name=awslabs.openapi-mcp-server&config=eyJjb21tYW5kIjoidXZ4IGF3c2xhYnMub3BlbmFwaS1tY3Atc2VydmVyQGxhdGVzdCIsImVudiI6eyJBUElfTkFNRSI6InlvdXItYXBpLW5hbWUiLCJBUElfQkFTRV9VUkwiOiJodHRwczovL2FwaS5leGFtcGxlLmNvbSIsIkFQSV9TUEVDX1VSTCI6Imh0dHBzOi8vYXBpLmV4YW1wbGUuY29tL29wZW5hcGkuanNvbiIsIkxPR19MRVZFTCI6IkVSUk9SIiwiRU5BQkxFX1BST01FVEhFVVMiOiJmYWxzZSIsIkVOQUJMRV9PUEVSQVRJT05fUFJPTVBUUyI6InRydWUiLCJVVklDT1JOX1RJTUVPVVRfR1JBQ0VGVUxfU0hVVERPV04iOiI1LjAiLCJVVklDT1JOX0dSQUNFRlVMX1NIVVRET1dOIjoidHJ1ZSJ9LCJkaXNhYmxlZCI6ZmFsc2UsImF1dG9BcHByb3ZlIjpbXX0%3D) | [](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
|
+
| [](https://cursor.com/en/install-mcp?name=awslabs.openapi-mcp-server&config=eyJjb21tYW5kIjoidXZ4IGF3c2xhYnMub3BlbmFwaS1tY3Atc2VydmVyQGxhdGVzdCIsImVudiI6eyJBUElfTkFNRSI6InlvdXItYXBpLW5hbWUiLCJBUElfQkFTRV9VUkwiOiJodHRwczovL2FwaS5leGFtcGxlLmNvbSIsIkFQSV9TUEVDX1VSTCI6Imh0dHBzOi8vYXBpLmV4YW1wbGUuY29tL29wZW5hcGkuanNvbiIsIkxPR19MRVZFTCI6IkVSUk9SIiwiRU5BQkxFX1BST01FVEhFVVMiOiJmYWxzZSIsIkVOQUJMRV9PUEVSQVRJT05fUFJPTVBUUyI6InRydWUiLCJVVklDT1JOX1RJTUVPVVRfR1JBQ0VGVUxfU0hVVERPV04iOiI1LjAiLCJVVklDT1JOX0dSQUNFRlVMX1NIVVRET1dOIjoidHJ1ZSJ9LCJkaXNhYmxlZCI6ZmFsc2UsImF1dG9BcHByb3ZlIjpbXX0%3D) | [](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
|
|
@@ -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:
|
|
@@ -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
|
|
40
|
-
with patch('
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
|
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(
|
|
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
|