awslabs.openapi-mcp-server 0.2.8__tar.gz → 0.2.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.
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/AUTHENTICATION.md +1 -1
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/Dockerfile +2 -2
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/PKG-INFO +17 -16
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/README.md +15 -14
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/__init__.py +1 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/__init__.py +1 -1
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/prompts/generators/operation_prompts.py +7 -7
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/server.py +4 -9
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/pyproject.toml +2 -2
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/prompts/test_mcp_prompt_manager.py +3 -3
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/prompts/test_mcp_prompt_manager_integration.py +3 -3
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/test_server_route_logging.py +3 -3
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/uv.lock +289 -26
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/.coveragerc +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/.dockerignore +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/.gitignore +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/.python-version +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/AWS_BEST_PRACTICES.md +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/CHANGELOG.md +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/DEPLOYMENT.md +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/LICENSE +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/NOTICE +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/OBSERVABILITY.md +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/api/__init__.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/api/config.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/auth/__init__.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/auth/api_key_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/auth/auth_cache.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/auth/auth_errors.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/auth/auth_factory.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/auth/auth_protocol.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/auth/auth_provider.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/auth/base_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/auth/basic_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/auth/bearer_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/auth/cognito_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/auth/register.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/patch/__init__.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/prompts/__init__.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/prompts/generators/__init__.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/prompts/generators/workflow_prompts.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/prompts/models.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/prompts/prompt_manager.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/utils/__init__.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/utils/cache_provider.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/utils/config.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/utils/error_handler.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/utils/http_client.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/utils/metrics_provider.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/utils/openapi.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/awslabs/openapi_mcp_server/utils/openapi_validator.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/docker-healthcheck.sh +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/pyrightconfig.json +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/README.md +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/api/test_config.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_api_key_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_auth_cache.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_auth_errors.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_auth_factory.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_auth_factory_caching.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_auth_factory_coverage.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_auth_protocol.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_auth_protocol_additional.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_auth_protocol_boost.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_auth_protocol_coverage.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_auth_protocol_extended.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_auth_protocol_improved.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_auth_provider_additional.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_base_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_base_auth_coverage.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_basic_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_bearer_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_cognito_auth.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_cognito_auth_additional_coverage.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_cognito_auth_boost_coverage.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_cognito_auth_client_credentials.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_cognito_auth_coverage_boost.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_cognito_auth_exceptions.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_register.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/auth/test_register_coverage.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/prompts/standalone/test_operation_prompt.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/prompts/standalone/test_prompt_arguments.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/prompts/standalone/test_secure_operation_prompt.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/prompts/test_models_dict_method.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/prompts/test_operation_prompts_extended.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/prompts/test_prompt_manager_additional.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/prompts/test_prompt_manager_comprehensive.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/prompts/test_prompt_manager_coverage.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/prompts/test_prompt_registration.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/test_api_name.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/test_cache_coverage_89.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/test_client.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/test_coverage_boost.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/test_init.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/test_main.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/test_main_extended.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/test_openapi_coverage_89.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/test_server.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/test_server_auth_errors.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/test_server_coverage_boost.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/test_server_coverage_boost_2.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/test_server_exception_handling.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/test_server_extended.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/test_server_httpx_version.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/test_server_part1.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/test_server_signal_handlers.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/utils/test_cache_provider.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/utils/test_error_handler.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/utils/test_error_handler_boost.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/utils/test_error_handler_extended.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/utils/test_error_handler_fix.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/utils/test_http_client.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/utils/test_http_client_comprehensive.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/utils/test_http_client_extended.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/utils/test_http_client_extended2.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/utils/test_http_client_import_error.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/utils/test_metrics_provider.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/utils/test_metrics_provider_decorators.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/utils/test_metrics_provider_extended2.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/utils/test_metrics_provider_prometheus.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/utils/test_openapi.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/tests/utils/test_openapi_validator.py +0 -0
- {awslabs_openapi_mcp_server-0.2.8 → awslabs_openapi_mcp_server-0.2.10}/uv-requirements.txt +0 -0
|
@@ -251,7 +251,7 @@ To verify your authentication configuration is working correctly:
|
|
|
251
251
|
2. Check the logs for successful authentication messages
|
|
252
252
|
|
|
253
253
|
3. Make a simple request through your LLM tool to verify API connectivity:
|
|
254
|
-
- For
|
|
254
|
+
- For Kiro: "Can you list the available endpoints in my API?"
|
|
255
255
|
- For Cline: "Make a simple request to my API to verify authentication is working"
|
|
256
256
|
|
|
257
257
|
If you encounter authentication errors, see the Troubleshooting section below.
|
|
@@ -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-alpine@sha256:
|
|
16
|
+
FROM public.ecr.aws/docker/library/python:3.13-alpine@sha256:e7e041128ffc3e3600509f508e44d34ab08ff432bdb62ec508d01dfc5ca459f7 AS uv
|
|
17
17
|
|
|
18
18
|
# Install the project into `/app`
|
|
19
19
|
WORKDIR /app
|
|
@@ -61,7 +61,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \
|
|
|
61
61
|
# Make the directory just in case it doesn't exist
|
|
62
62
|
RUN mkdir -p /root/.local
|
|
63
63
|
|
|
64
|
-
FROM public.ecr.aws/docker/library/python:3.13-alpine@sha256:
|
|
64
|
+
FROM public.ecr.aws/docker/library/python:3.13-alpine@sha256:e7e041128ffc3e3600509f508e44d34ab08ff432bdb62ec508d01dfc5ca459f7
|
|
65
65
|
|
|
66
66
|
# Place executables in the environment at the front of the path and include other binaries
|
|
67
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.10
|
|
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/
|
|
@@ -24,7 +24,7 @@ Requires-Python: >=3.10
|
|
|
24
24
|
Requires-Dist: bcrypt>=4.3.0
|
|
25
25
|
Requires-Dist: boto3>=1.39.3
|
|
26
26
|
Requires-Dist: cachetools>=6.1.0
|
|
27
|
-
Requires-Dist: fastmcp>=2.
|
|
27
|
+
Requires-Dist: fastmcp>=2.14.0
|
|
28
28
|
Requires-Dist: httpx>=0.28.1
|
|
29
29
|
Requires-Dist: loguru>=0.7.3
|
|
30
30
|
Requires-Dist: openapi-spec-validator>=0.7.2
|
|
@@ -86,9 +86,9 @@ 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) |
|
|
89
|
+
| Kiro | Cursor | VS Code |
|
|
90
|
+
|:----:|:------:|:-------:|
|
|
91
|
+
| [](https://kiro.dev/launch/mcp/add?name=awslabs.openapi-mcp-server&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//api.example.com%22%2C%22API_SPEC_URL%22%3A%22https%3A//api.example.com/openapi.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%7D) | [](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
92
|
|
|
93
93
|
### From PyPI
|
|
94
94
|
|
|
@@ -124,7 +124,7 @@ pip install -e .
|
|
|
124
124
|
|
|
125
125
|
### Using MCP Configuration
|
|
126
126
|
|
|
127
|
-
|
|
127
|
+
Example configuration for Kiro (`~/.kiro/settings/mcp.json`):
|
|
128
128
|
|
|
129
129
|
```json
|
|
130
130
|
{
|
|
@@ -397,17 +397,18 @@ The server includes built-in monitoring capabilities:
|
|
|
397
397
|
- Prometheus metrics (disabled by default)
|
|
398
398
|
- Detailed logging of API calls and tool usage
|
|
399
399
|
- Performance tracking for API operations
|
|
400
|
-
## Testing with Amazon Q
|
|
401
400
|
|
|
402
|
-
|
|
401
|
+
## Testing with Kiro
|
|
403
402
|
|
|
404
|
-
|
|
403
|
+
To test the OpenAPI MCP Server with Kiro, you need to configure Kiro to use your MCP server. Here's how:
|
|
404
|
+
|
|
405
|
+
1. **Configure Kiro MCP Integration**
|
|
405
406
|
|
|
406
407
|
Create or edit the MCP configuration file:
|
|
407
408
|
|
|
408
409
|
```bash
|
|
409
|
-
mkdir -p ~/.
|
|
410
|
-
nano ~/.
|
|
410
|
+
mkdir -p ~/.kiro/settings
|
|
411
|
+
nano ~/.kiro/settings/mcp.json
|
|
411
412
|
```
|
|
412
413
|
|
|
413
414
|
Add the following configuration:
|
|
@@ -437,20 +438,20 @@ To test the OpenAPI MCP Server with Amazon Q, you need to configure Amazon Q to
|
|
|
437
438
|
}
|
|
438
439
|
```
|
|
439
440
|
|
|
440
|
-
2. **Start
|
|
441
|
+
2. **Start Kiro CLI**
|
|
441
442
|
|
|
442
|
-
Launch the
|
|
443
|
+
Launch the Kiro CLI:
|
|
443
444
|
|
|
444
445
|
```bash
|
|
445
|
-
|
|
446
|
+
kiro-cli chat
|
|
446
447
|
```
|
|
447
448
|
|
|
448
449
|
3. **Test the Operation Prompts**
|
|
449
450
|
|
|
450
|
-
Once connected, you can test the operation prompts by asking
|
|
451
|
+
Once connected, you can test the operation prompts by asking Kiro to help you with specific API operations:
|
|
451
452
|
|
|
452
453
|
```
|
|
453
454
|
I need to find a pet by ID using the Petstore API
|
|
454
455
|
```
|
|
455
456
|
|
|
456
|
-
|
|
457
|
+
Kiro should respond with guidance using the natural language prompt.
|
|
@@ -27,9 +27,9 @@ 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) |
|
|
30
|
+
| Kiro | Cursor | VS Code |
|
|
31
|
+
|:----:|:------:|:-------:|
|
|
32
|
+
| [](https://kiro.dev/launch/mcp/add?name=awslabs.openapi-mcp-server&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//api.example.com%22%2C%22API_SPEC_URL%22%3A%22https%3A//api.example.com/openapi.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%7D) | [](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
33
|
|
|
34
34
|
### From PyPI
|
|
35
35
|
|
|
@@ -65,7 +65,7 @@ pip install -e .
|
|
|
65
65
|
|
|
66
66
|
### Using MCP Configuration
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
Example configuration for Kiro (`~/.kiro/settings/mcp.json`):
|
|
69
69
|
|
|
70
70
|
```json
|
|
71
71
|
{
|
|
@@ -338,17 +338,18 @@ The server includes built-in monitoring capabilities:
|
|
|
338
338
|
- Prometheus metrics (disabled by default)
|
|
339
339
|
- Detailed logging of API calls and tool usage
|
|
340
340
|
- Performance tracking for API operations
|
|
341
|
-
## Testing with Amazon Q
|
|
342
341
|
|
|
343
|
-
|
|
342
|
+
## Testing with Kiro
|
|
344
343
|
|
|
345
|
-
|
|
344
|
+
To test the OpenAPI MCP Server with Kiro, you need to configure Kiro to use your MCP server. Here's how:
|
|
345
|
+
|
|
346
|
+
1. **Configure Kiro MCP Integration**
|
|
346
347
|
|
|
347
348
|
Create or edit the MCP configuration file:
|
|
348
349
|
|
|
349
350
|
```bash
|
|
350
|
-
mkdir -p ~/.
|
|
351
|
-
nano ~/.
|
|
351
|
+
mkdir -p ~/.kiro/settings
|
|
352
|
+
nano ~/.kiro/settings/mcp.json
|
|
352
353
|
```
|
|
353
354
|
|
|
354
355
|
Add the following configuration:
|
|
@@ -378,20 +379,20 @@ To test the OpenAPI MCP Server with Amazon Q, you need to configure Amazon Q to
|
|
|
378
379
|
}
|
|
379
380
|
```
|
|
380
381
|
|
|
381
|
-
2. **Start
|
|
382
|
+
2. **Start Kiro CLI**
|
|
382
383
|
|
|
383
|
-
Launch the
|
|
384
|
+
Launch the Kiro CLI:
|
|
384
385
|
|
|
385
386
|
```bash
|
|
386
|
-
|
|
387
|
+
kiro-cli chat
|
|
387
388
|
```
|
|
388
389
|
|
|
389
390
|
3. **Test the Operation Prompts**
|
|
390
391
|
|
|
391
|
-
Once connected, you can test the operation prompts by asking
|
|
392
|
+
Once connected, you can test the operation prompts by asking Kiro to help you with specific API operations:
|
|
392
393
|
|
|
393
394
|
```
|
|
394
395
|
I need to find a pet by ID using the Petstore API
|
|
395
396
|
```
|
|
396
397
|
|
|
397
|
-
|
|
398
|
+
Kiro should respond with guidance using the natural language prompt.
|
|
@@ -20,7 +20,7 @@ from awslabs.openapi_mcp_server.prompts.models import (
|
|
|
20
20
|
)
|
|
21
21
|
from fastmcp.prompts.prompt import Prompt
|
|
22
22
|
from fastmcp.prompts.prompt import PromptArgument as FastMCPPromptArgument
|
|
23
|
-
from fastmcp.server.openapi import
|
|
23
|
+
from fastmcp.server.openapi import MCPType
|
|
24
24
|
from typing import Any, Dict, List, Optional
|
|
25
25
|
|
|
26
26
|
|
|
@@ -178,16 +178,16 @@ def determine_operation_type(server: Any, path: str, method: str) -> str:
|
|
|
178
178
|
for route in routes:
|
|
179
179
|
route_path = getattr(route, 'path', '')
|
|
180
180
|
route_method = getattr(route, 'method', '')
|
|
181
|
-
|
|
181
|
+
mcp_type = getattr(route, 'mcp_type', None)
|
|
182
182
|
|
|
183
183
|
# Check if this route matches our operation
|
|
184
|
-
if route_path == path and route_method.upper() == method.upper() and
|
|
185
|
-
# Convert
|
|
186
|
-
if
|
|
184
|
+
if route_path == path and route_method.upper() == method.upper() and mcp_type:
|
|
185
|
+
# Convert MCPType enum to string
|
|
186
|
+
if mcp_type == MCPType.RESOURCE:
|
|
187
187
|
operation_type = 'resource'
|
|
188
|
-
elif
|
|
188
|
+
elif mcp_type == MCPType.RESOURCE_TEMPLATE:
|
|
189
189
|
operation_type = 'resource_template'
|
|
190
|
-
elif
|
|
190
|
+
elif mcp_type == MCPType.TOOL:
|
|
191
191
|
operation_type = 'tool'
|
|
192
192
|
break
|
|
193
193
|
|
|
@@ -29,7 +29,7 @@ from awslabs.openapi_mcp_server.utils.metrics_provider import metrics
|
|
|
29
29
|
from awslabs.openapi_mcp_server.utils.openapi import load_openapi_spec
|
|
30
30
|
from awslabs.openapi_mcp_server.utils.openapi_validator import validate_openapi_spec
|
|
31
31
|
from fastmcp import FastMCP
|
|
32
|
-
from fastmcp.server.openapi import FastMCPOpenAPI,
|
|
32
|
+
from fastmcp.server.openapi import FastMCPOpenAPI, MCPType, RouteMap
|
|
33
33
|
from typing import Any, Dict
|
|
34
34
|
|
|
35
35
|
|
|
@@ -57,11 +57,6 @@ def create_mcp_server(config: Config) -> FastMCP:
|
|
|
57
57
|
server = FastMCP(
|
|
58
58
|
'awslabs.openapi-mcp-server',
|
|
59
59
|
instructions='This server acts as a bridge between OpenAPI specifications and LLMs, allowing models to have a better understanding of available API capabilities without requiring manual tool definitions.',
|
|
60
|
-
dependencies=[
|
|
61
|
-
'pydantic',
|
|
62
|
-
'loguru',
|
|
63
|
-
'httpx',
|
|
64
|
-
],
|
|
65
60
|
)
|
|
66
61
|
|
|
67
62
|
try:
|
|
@@ -184,7 +179,7 @@ def create_mcp_server(config: Config) -> FastMCP:
|
|
|
184
179
|
RouteMap(
|
|
185
180
|
methods=['GET'],
|
|
186
181
|
pattern=f'^{re.escape(path)}$',
|
|
187
|
-
|
|
182
|
+
mcp_type=MCPType.TOOL,
|
|
188
183
|
)
|
|
189
184
|
)
|
|
190
185
|
|
|
@@ -214,8 +209,8 @@ def create_mcp_server(config: Config) -> FastMCP:
|
|
|
214
209
|
for i, route in enumerate(routes):
|
|
215
210
|
path = getattr(route, 'path', 'unknown')
|
|
216
211
|
method = getattr(route, 'method', 'unknown')
|
|
217
|
-
|
|
218
|
-
logger.debug(f'Route {i}: {method} {path} - Type: {
|
|
212
|
+
mcp_type = getattr(route, 'mcp_type', 'unknown')
|
|
213
|
+
logger.debug(f'Route {i}: {method} {path} - Type: {mcp_type}')
|
|
219
214
|
|
|
220
215
|
logger.info(f'Successfully configured API: {config.api_name}')
|
|
221
216
|
|
|
@@ -7,7 +7,7 @@ allow-direct-references = true
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "awslabs.openapi-mcp-server"
|
|
10
|
-
version = "0.2.
|
|
10
|
+
version = "0.2.10"
|
|
11
11
|
description = "An AWS Labs Model Context Protocol (MCP) server for OpenAPI"
|
|
12
12
|
readme = "README.md"
|
|
13
13
|
requires-python = ">=3.10"
|
|
@@ -28,7 +28,7 @@ classifiers = [
|
|
|
28
28
|
"Programming Language :: Python :: 3.13",
|
|
29
29
|
]
|
|
30
30
|
dependencies = [
|
|
31
|
-
"fastmcp>=2.
|
|
31
|
+
"fastmcp>=2.14.0",
|
|
32
32
|
"httpx>=0.28.1",
|
|
33
33
|
"pydantic>=2.11.7",
|
|
34
34
|
"typing-extensions>=4.14.1",
|
|
@@ -18,7 +18,7 @@ from awslabs.openapi_mcp_server.prompts import MCPPromptManager
|
|
|
18
18
|
from awslabs.openapi_mcp_server.prompts.generators.workflow_prompts import (
|
|
19
19
|
identify_workflows,
|
|
20
20
|
)
|
|
21
|
-
from fastmcp.server.openapi import
|
|
21
|
+
from fastmcp.server.openapi import MCPType
|
|
22
22
|
from unittest.mock import AsyncMock, MagicMock, patch
|
|
23
23
|
|
|
24
24
|
|
|
@@ -33,12 +33,12 @@ def mock_server():
|
|
|
33
33
|
mock_route = MagicMock()
|
|
34
34
|
mock_route.path = '/pet/{petId}'
|
|
35
35
|
mock_route.method = 'GET'
|
|
36
|
-
mock_route.
|
|
36
|
+
mock_route.mcp_type = MCPType.RESOURCE
|
|
37
37
|
|
|
38
38
|
mock_route2 = MagicMock()
|
|
39
39
|
mock_route2.path = '/pet/findByStatus'
|
|
40
40
|
mock_route2.method = 'GET'
|
|
41
|
-
mock_route2.
|
|
41
|
+
mock_route2.v = MCPType.TOOL
|
|
42
42
|
|
|
43
43
|
server._openapi_router = MagicMock()
|
|
44
44
|
server._openapi_router._routes = [mock_route, mock_route2]
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
import pytest
|
|
17
17
|
from awslabs.openapi_mcp_server.prompts import MCPPromptManager
|
|
18
|
-
from fastmcp.server.openapi import
|
|
18
|
+
from fastmcp.server.openapi import MCPType
|
|
19
19
|
from unittest.mock import AsyncMock, MagicMock
|
|
20
20
|
|
|
21
21
|
|
|
@@ -35,12 +35,12 @@ def mock_server():
|
|
|
35
35
|
mock_route = MagicMock()
|
|
36
36
|
mock_route.path = '/pet/{petId}'
|
|
37
37
|
mock_route.method = 'GET'
|
|
38
|
-
mock_route.
|
|
38
|
+
mock_route.mcp_type = MCPType.RESOURCE
|
|
39
39
|
|
|
40
40
|
mock_route2 = MagicMock()
|
|
41
41
|
mock_route2.path = '/pet/findByStatus'
|
|
42
42
|
mock_route2.method = 'GET'
|
|
43
|
-
mock_route2.
|
|
43
|
+
mock_route2.mcp_type = MCPType.TOOL
|
|
44
44
|
|
|
45
45
|
server._openapi_router = MagicMock()
|
|
46
46
|
server._openapi_router._routes = [mock_route, mock_route2]
|
|
@@ -51,12 +51,12 @@ class TestServerRouteLogging:
|
|
|
51
51
|
mock_route1 = MagicMock()
|
|
52
52
|
mock_route1.path = '/api/v1/pets'
|
|
53
53
|
mock_route1.method = 'GET'
|
|
54
|
-
mock_route1.
|
|
54
|
+
mock_route1.mcp_type = 'resource'
|
|
55
55
|
|
|
56
56
|
mock_route2 = MagicMock()
|
|
57
57
|
mock_route2.path = '/api/v1/pets/{id}'
|
|
58
58
|
mock_route2.method = 'POST'
|
|
59
|
-
mock_route2.
|
|
59
|
+
mock_route2.mcp_type = 'tool'
|
|
60
60
|
|
|
61
61
|
# Set up the _openapi_router attribute with routes
|
|
62
62
|
mock_openapi_router = MagicMock()
|
|
@@ -126,7 +126,7 @@ class TestServerRouteLogging:
|
|
|
126
126
|
mock_route1 = MagicMock()
|
|
127
127
|
mock_route1.path = '/api/v1/pets'
|
|
128
128
|
mock_route1.method = 'GET'
|
|
129
|
-
mock_route1.
|
|
129
|
+
mock_route1.mcp_type = 'resource'
|
|
130
130
|
|
|
131
131
|
# Set up the _openapi_router attribute with routes
|
|
132
132
|
mock_openapi_router = MagicMock()
|