fastmcp 2.13.3__tar.gz → 2.14.1__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.
- fastmcp-2.14.1/.github/workflows/martian-test-failure.yml +182 -0
- fastmcp-2.14.1/.github/workflows/run-tests.yml +115 -0
- fastmcp-2.14.1/.gitignore +77 -0
- fastmcp-2.14.1/.pre-commit-config.yaml +48 -0
- fastmcp-2.14.1/AGENTS.md +266 -0
- fastmcp-2.14.1/PKG-INFO +554 -0
- fastmcp-2.14.1/README.md +512 -0
- fastmcp-2.14.1/docs/changelog.mdx +2062 -0
- fastmcp-2.14.1/docs/clients/sampling.mdx +258 -0
- fastmcp-2.14.1/docs/clients/tasks.mdx +138 -0
- fastmcp-2.14.1/docs/css/version-badge.css +23 -0
- fastmcp-2.14.1/docs/deployment/http.mdx +736 -0
- fastmcp-2.14.1/docs/development/upgrade-guide.mdx +153 -0
- fastmcp-2.14.1/docs/docs.json +531 -0
- fastmcp-2.14.1/docs/integrations/fastapi.mdx +451 -0
- fastmcp-2.14.1/docs/integrations/oci.mdx +333 -0
- fastmcp-2.14.1/docs/integrations/openapi.mdx +451 -0
- fastmcp-2.14.1/docs/integrations/supabase.mdx +143 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-cli-cli.mdx +129 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-cli-tasks.mdx +41 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-client-auth-oauth.mdx +104 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-client-client.mdx +684 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-client-elicitation.mdx +18 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-client-messages.mdx +107 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-client-tasks.mdx +219 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-client-transports.mdx +312 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-dependencies.mdx +14 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-prompts-prompt.mdx +117 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-resources-resource.mdx +123 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-resources-template.mdx +182 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-auth-auth.mdx +262 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-auth-oauth_proxy.mdx +420 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-auth-oidc_proxy.mdx +82 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-auth-providers-azure.mdx +76 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-auth-providers-discord.mdx +72 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-context.mdx +421 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-dependencies.mdx +262 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-elicitation.mdx +140 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-event_store.mdx +78 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-http.mdx +106 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-low_level.mdx +53 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +112 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-openapi-__init__.mdx +9 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-openapi-components.mdx +62 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-openapi-routing.mdx +23 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-openapi-server.mdx +20 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-proxy.mdx +339 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-server.mdx +799 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-tasks-__init__.mdx +12 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-tasks-capabilities.mdx +24 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-tasks-config.mdx +66 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-tasks-converters.mdx +77 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-tasks-handlers.mdx +78 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-tasks-keys.mdx +91 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-tasks-protocol.mdx +88 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-server-tasks-subscriptions.mdx +35 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-settings.mdx +56 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-tools-tool.mdx +128 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-tools-tool_transform.mdx +290 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-utilities-openapi-__init__.mdx +9 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-utilities-openapi-director.mdx +36 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-utilities-openapi-formatters.mdx +115 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-utilities-openapi-json_schema_converter.mdx +62 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-utilities-openapi-models.mdx +35 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-utilities-openapi-parser.mdx +43 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-utilities-openapi-schemas.mdx +43 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-utilities-tests.mdx +106 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-utilities-types.mdx +169 -0
- fastmcp-2.14.1/docs/python-sdk/fastmcp-utilities-ui.mdx +140 -0
- fastmcp-2.14.1/docs/servers/auth/oauth-proxy.mdx +594 -0
- fastmcp-2.14.1/docs/servers/composition.mdx +326 -0
- fastmcp-2.14.1/docs/servers/context.mdx +613 -0
- fastmcp-2.14.1/docs/servers/elicitation.mdx +462 -0
- fastmcp-2.14.1/docs/servers/middleware.mdx +816 -0
- fastmcp-2.14.1/docs/servers/proxy.mdx +349 -0
- fastmcp-2.14.1/docs/servers/sampling.mdx +488 -0
- fastmcp-2.14.1/docs/servers/server.mdx +436 -0
- fastmcp-2.14.1/docs/servers/tasks.mdx +223 -0
- fastmcp-2.14.1/docs/servers/tools.mdx +982 -0
- fastmcp-2.14.1/docs/snippets/version-badge.mdx +7 -0
- fastmcp-2.14.1/examples/auth/mounted/README.md +39 -0
- fastmcp-2.14.1/examples/auth/mounted/client.py +50 -0
- fastmcp-2.14.1/examples/auth/mounted/server.py +121 -0
- fastmcp-2.14.1/examples/memory.py +341 -0
- fastmcp-2.14.1/examples/sampling/README.md +62 -0
- fastmcp-2.14.1/examples/sampling/server_fallback.py +88 -0
- fastmcp-2.14.1/examples/sampling/structured_output.py +110 -0
- fastmcp-2.14.1/examples/sampling/text.py +78 -0
- fastmcp-2.14.1/examples/sampling/tool_use.py +125 -0
- fastmcp-2.14.1/examples/screenshot.py +34 -0
- fastmcp-2.14.1/examples/smart_home/src/smart_home/lights/server.py +307 -0
- fastmcp-2.14.1/examples/tasks/README.md +60 -0
- fastmcp-2.14.1/examples/tasks/client.py +160 -0
- fastmcp-2.14.1/examples/tasks/docker-compose.yml +10 -0
- fastmcp-2.14.1/examples/tasks/server.py +75 -0
- fastmcp-2.14.1/pyproject.toml +183 -0
- fastmcp-2.14.1/src/fastmcp/__init__.py +35 -0
- fastmcp-2.14.1/src/fastmcp/cli/__init__.py +3 -0
- fastmcp-2.14.1/src/fastmcp/cli/__main__.py +5 -0
- fastmcp-2.14.1/src/fastmcp/cli/cli.py +864 -0
- fastmcp-2.14.1/src/fastmcp/cli/install/shared.py +127 -0
- fastmcp-2.14.1/src/fastmcp/cli/tasks.py +110 -0
- fastmcp-2.14.1/src/fastmcp/client/auth/oauth.py +325 -0
- fastmcp-2.14.1/src/fastmcp/client/client.py +1618 -0
- fastmcp-2.14.1/src/fastmcp/client/elicitation.py +80 -0
- fastmcp-2.14.1/src/fastmcp/client/messages.py +128 -0
- fastmcp-2.14.1/src/fastmcp/client/roots.py +76 -0
- fastmcp-2.14.1/src/fastmcp/client/sampling/__init__.py +69 -0
- fastmcp-2.14.1/src/fastmcp/client/sampling/handlers/anthropic.py +387 -0
- fastmcp-2.14.1/src/fastmcp/client/sampling/handlers/openai.py +399 -0
- fastmcp-2.14.1/src/fastmcp/client/tasks.py +551 -0
- fastmcp-2.14.1/src/fastmcp/client/transports.py +1170 -0
- fastmcp-2.14.1/src/fastmcp/contrib/component_manager/component_service.py +209 -0
- fastmcp-2.14.1/src/fastmcp/dependencies.py +25 -0
- fastmcp-2.14.1/src/fastmcp/experimental/sampling/handlers/__init__.py +5 -0
- fastmcp-2.14.1/src/fastmcp/experimental/sampling/handlers/openai.py +5 -0
- fastmcp-2.14.1/src/fastmcp/experimental/server/openapi/__init__.py +37 -0
- fastmcp-2.14.1/src/fastmcp/experimental/utilities/openapi/__init__.py +37 -0
- fastmcp-2.14.1/src/fastmcp/prompts/prompt.py +381 -0
- fastmcp-2.14.1/src/fastmcp/resources/resource.py +240 -0
- fastmcp-2.14.1/src/fastmcp/resources/template.py +413 -0
- fastmcp-2.14.1/src/fastmcp/server/auth/__init__.py +25 -0
- fastmcp-2.14.1/src/fastmcp/server/auth/auth.py +523 -0
- fastmcp-2.14.1/src/fastmcp/server/auth/oauth_proxy.py +2189 -0
- fastmcp-2.14.1/src/fastmcp/server/auth/oidc_proxy.py +419 -0
- fastmcp-2.14.1/src/fastmcp/server/auth/providers/in_memory.py +364 -0
- fastmcp-2.14.1/src/fastmcp/server/auth/providers/oci.py +233 -0
- fastmcp-2.14.1/src/fastmcp/server/context.py +1132 -0
- fastmcp-2.14.1/src/fastmcp/server/dependencies.py +621 -0
- fastmcp-2.14.1/src/fastmcp/server/elicitation.py +458 -0
- fastmcp-2.14.1/src/fastmcp/server/event_store.py +177 -0
- fastmcp-2.14.1/src/fastmcp/server/http.py +372 -0
- fastmcp-2.14.1/src/fastmcp/server/low_level.py +200 -0
- fastmcp-2.14.1/src/fastmcp/server/middleware/middleware.py +208 -0
- fastmcp-2.14.1/src/fastmcp/server/openapi/components.py +353 -0
- fastmcp-2.14.1/src/fastmcp/server/openapi/routing.py +130 -0
- fastmcp-2.14.1/src/fastmcp/server/openapi/server.py +452 -0
- fastmcp-2.14.1/src/fastmcp/server/proxy.py +707 -0
- fastmcp-2.14.1/src/fastmcp/server/sampling/__init__.py +10 -0
- fastmcp-2.14.1/src/fastmcp/server/sampling/run.py +301 -0
- fastmcp-2.14.1/src/fastmcp/server/sampling/sampling_tool.py +108 -0
- fastmcp-2.14.1/src/fastmcp/server/server.py +3139 -0
- fastmcp-2.14.1/src/fastmcp/server/tasks/__init__.py +21 -0
- fastmcp-2.14.1/src/fastmcp/server/tasks/capabilities.py +22 -0
- fastmcp-2.14.1/src/fastmcp/server/tasks/config.py +89 -0
- fastmcp-2.14.1/src/fastmcp/server/tasks/converters.py +206 -0
- fastmcp-2.14.1/src/fastmcp/server/tasks/handlers.py +356 -0
- fastmcp-2.14.1/src/fastmcp/server/tasks/keys.py +93 -0
- fastmcp-2.14.1/src/fastmcp/server/tasks/protocol.py +355 -0
- fastmcp-2.14.1/src/fastmcp/server/tasks/subscriptions.py +205 -0
- fastmcp-2.14.1/src/fastmcp/settings.py +412 -0
- fastmcp-2.14.1/src/fastmcp/tools/tool.py +639 -0
- fastmcp-2.14.1/src/fastmcp/tools/tool_transform.py +943 -0
- fastmcp-2.14.1/src/fastmcp/utilities/components.py +181 -0
- fastmcp-2.14.1/src/fastmcp/utilities/json_schema_type.py +648 -0
- fastmcp-2.14.1/src/fastmcp/utilities/mcp_config.py +56 -0
- fastmcp-2.14.1/src/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +447 -0
- fastmcp-2.14.1/src/fastmcp/utilities/openapi/README.md +211 -0
- fastmcp-2.14.1/src/fastmcp/utilities/openapi/formatters.py +389 -0
- fastmcp-2.14.1/src/fastmcp/utilities/openapi/json_schema_converter.py +344 -0
- fastmcp-2.14.1/src/fastmcp/utilities/tests.py +286 -0
- fastmcp-2.14.1/src/fastmcp/utilities/types.py +496 -0
- fastmcp-2.14.1/tests/cli/test_tasks.py +50 -0
- fastmcp-2.14.1/tests/client/auth/test_oauth_client.py +173 -0
- fastmcp-2.14.1/tests/client/sampling/handlers/test_anthropic_handler.py +247 -0
- fastmcp-2.14.1/tests/client/sampling/handlers/test_openai_handler.py +100 -0
- fastmcp-2.14.1/tests/client/tasks/conftest.py +3 -0
- fastmcp-2.14.1/tests/client/tasks/test_client_prompt_tasks.py +103 -0
- fastmcp-2.14.1/tests/client/tasks/test_client_resource_tasks.py +108 -0
- fastmcp-2.14.1/tests/client/tasks/test_client_task_notifications.py +209 -0
- fastmcp-2.14.1/tests/client/tasks/test_client_task_protocol.py +85 -0
- fastmcp-2.14.1/tests/client/tasks/test_client_tool_tasks.py +88 -0
- fastmcp-2.14.1/tests/client/tasks/test_prompt_task_mcp_message.py +57 -0
- fastmcp-2.14.1/tests/client/tasks/test_task_context_validation.py +210 -0
- fastmcp-2.14.1/tests/client/tasks/test_task_result_caching.py +325 -0
- fastmcp-2.14.1/tests/client/test_client.py +1289 -0
- fastmcp-2.14.1/tests/client/test_elicitation.py +1071 -0
- fastmcp-2.14.1/tests/client/test_openapi.py +192 -0
- fastmcp-2.14.1/tests/client/test_sampling.py +988 -0
- fastmcp-2.14.1/tests/client/test_sse.py +190 -0
- fastmcp-2.14.1/tests/client/test_streamable_http.py +263 -0
- fastmcp-2.14.1/tests/client/transports/test_transports.py +39 -0
- fastmcp-2.14.1/tests/conftest.py +83 -0
- fastmcp-2.14.1/tests/deprecated/test_deprecated.py +48 -0
- fastmcp-2.14.1/tests/deprecated/test_openapi_deprecations.py +73 -0
- fastmcp-2.14.1/tests/deprecated/test_settings.py +300 -0
- fastmcp-2.14.1/tests/integration_tests/conftest.py +72 -0
- fastmcp-2.14.1/tests/integration_tests/test_github_mcp_remote.py +122 -0
- fastmcp-2.14.1/tests/prompts/test_prompt_manager.py +464 -0
- fastmcp-2.14.1/tests/resources/test_resource_template.py +991 -0
- fastmcp-2.14.1/tests/server/auth/providers/test_azure.py +882 -0
- fastmcp-2.14.1/tests/server/auth/test_jwt_provider.py +1101 -0
- fastmcp-2.14.1/tests/server/auth/test_oauth_mounting.py +380 -0
- fastmcp-2.14.1/tests/server/auth/test_oauth_proxy.py +1470 -0
- fastmcp-2.14.1/tests/server/auth/test_oauth_proxy_redirect_validation.py +201 -0
- fastmcp-2.14.1/tests/server/auth/test_oauth_proxy_storage.py +209 -0
- fastmcp-2.14.1/tests/server/http/test_http_middleware.py +234 -0
- fastmcp-2.14.1/tests/server/middleware/test_caching.py +528 -0
- fastmcp-2.14.1/tests/server/middleware/test_initialization_middleware.py +375 -0
- fastmcp-2.14.1/tests/server/middleware/test_logging.py +670 -0
- fastmcp-2.14.1/tests/server/middleware/test_tool_injection.py +498 -0
- fastmcp-2.14.1/tests/server/openapi/test_comprehensive.py +695 -0
- fastmcp-2.14.1/tests/server/openapi/test_deepobject_style.py +333 -0
- fastmcp-2.14.1/tests/server/openapi/test_end_to_end_compatibility.py +325 -0
- fastmcp-2.14.1/tests/server/openapi/test_openapi_features.py +401 -0
- fastmcp-2.14.1/tests/server/openapi/test_openapi_performance.py +136 -0
- fastmcp-2.14.1/tests/server/openapi/test_parameter_collisions.py +212 -0
- fastmcp-2.14.1/tests/server/openapi/test_performance_comparison.py +285 -0
- fastmcp-2.14.1/tests/server/openapi/test_server.py +337 -0
- fastmcp-2.14.1/tests/server/proxy/test_proxy_client.py +425 -0
- fastmcp-2.14.1/tests/server/proxy/test_proxy_server.py +789 -0
- fastmcp-2.14.1/tests/server/proxy/test_stateful_proxy_client.py +147 -0
- fastmcp-2.14.1/tests/server/sampling/test_sampling_tool.py +121 -0
- fastmcp-2.14.1/tests/server/tasks/__init__.py +1 -0
- fastmcp-2.14.1/tests/server/tasks/conftest.py +3 -0
- fastmcp-2.14.1/tests/server/tasks/test_progress_dependency.py +155 -0
- fastmcp-2.14.1/tests/server/tasks/test_server_tasks_parameter.py +310 -0
- fastmcp-2.14.1/tests/server/tasks/test_sync_function_task_disabled.py +229 -0
- fastmcp-2.14.1/tests/server/tasks/test_task_capabilities.py +44 -0
- fastmcp-2.14.1/tests/server/tasks/test_task_config_modes.py +350 -0
- fastmcp-2.14.1/tests/server/tasks/test_task_dependencies.py +272 -0
- fastmcp-2.14.1/tests/server/tasks/test_task_metadata.py +63 -0
- fastmcp-2.14.1/tests/server/tasks/test_task_methods.py +174 -0
- fastmcp-2.14.1/tests/server/tasks/test_task_mount.py +550 -0
- fastmcp-2.14.1/tests/server/tasks/test_task_prompts.py +92 -0
- fastmcp-2.14.1/tests/server/tasks/test_task_protocol.py +81 -0
- fastmcp-2.14.1/tests/server/tasks/test_task_proxy.py +165 -0
- fastmcp-2.14.1/tests/server/tasks/test_task_resources.py +108 -0
- fastmcp-2.14.1/tests/server/tasks/test_task_return_types.py +660 -0
- fastmcp-2.14.1/tests/server/tasks/test_task_security.py +47 -0
- fastmcp-2.14.1/tests/server/tasks/test_task_status_notifications.py +160 -0
- fastmcp-2.14.1/tests/server/tasks/test_task_tools.py +102 -0
- fastmcp-2.14.1/tests/server/tasks/test_task_ttl.py +87 -0
- fastmcp-2.14.1/tests/server/test_auth_integration.py +1242 -0
- fastmcp-2.14.1/tests/server/test_context.py +182 -0
- fastmcp-2.14.1/tests/server/test_dependencies.py +735 -0
- fastmcp-2.14.1/tests/server/test_event_store.py +237 -0
- fastmcp-2.14.1/tests/server/test_import_server.py +627 -0
- fastmcp-2.14.1/tests/server/test_logging.py +177 -0
- fastmcp-2.14.1/tests/server/test_mount.py +1426 -0
- fastmcp-2.14.1/tests/server/test_server.py +1526 -0
- fastmcp-2.14.1/tests/server/test_server_docket.py +170 -0
- fastmcp-2.14.1/tests/server/test_server_interactions.py +2804 -0
- fastmcp-2.14.1/tests/server/test_server_lifespan.py +71 -0
- fastmcp-2.14.1/tests/server/test_tool_annotations.py +255 -0
- fastmcp-2.14.1/tests/tools/test_tool.py +1897 -0
- fastmcp-2.14.1/tests/tools/test_tool_manager.py +1083 -0
- fastmcp-2.14.1/tests/utilities/openapi/test_allof_requestbody.py +227 -0
- fastmcp-2.14.1/tests/utilities/openapi/test_direct_array_schemas.py +323 -0
- fastmcp-2.14.1/tests/utilities/openapi/test_director.py +462 -0
- fastmcp-2.14.1/tests/utilities/openapi/test_legacy_compatibility.py +192 -0
- fastmcp-2.14.1/tests/utilities/openapi/test_models.py +476 -0
- fastmcp-2.14.1/tests/utilities/openapi/test_nullable_fields.py +375 -0
- fastmcp-2.14.1/tests/utilities/openapi/test_parser.py +460 -0
- fastmcp-2.14.1/tests/utilities/openapi/test_schemas.py +635 -0
- fastmcp-2.14.1/tests/utilities/openapi/test_transitive_references.py +842 -0
- fastmcp-2.14.1/tests/utilities/test_json_schema_type.py +1586 -0
- fastmcp-2.14.1/tests/utilities/test_types.py +673 -0
- fastmcp-2.14.1/uv.lock +2750 -0
- fastmcp-2.13.3/.github/workflows/martian-test-failure.yml +0 -179
- fastmcp-2.13.3/.github/workflows/run-tests.yml +0 -107
- fastmcp-2.13.3/.gitignore +0 -76
- fastmcp-2.13.3/.pre-commit-config.yaml +0 -48
- fastmcp-2.13.3/AGENTS.md +0 -265
- fastmcp-2.13.3/PKG-INFO +0 -551
- fastmcp-2.13.3/README.md +0 -512
- fastmcp-2.13.3/docs/changelog.mdx +0 -2062
- fastmcp-2.13.3/docs/clients/sampling.mdx +0 -156
- fastmcp-2.13.3/docs/css/version-badge.css +0 -39
- fastmcp-2.13.3/docs/deployment/http.mdx +0 -605
- fastmcp-2.13.3/docs/development/upgrade-guide.mdx +0 -50
- fastmcp-2.13.3/docs/docs.json +0 -491
- fastmcp-2.13.3/docs/integrations/fastapi.mdx +0 -460
- fastmcp-2.13.3/docs/integrations/oci.mdx +0 -333
- fastmcp-2.13.3/docs/integrations/openapi.mdx +0 -473
- fastmcp-2.13.3/docs/python-sdk/fastmcp-cli-cli.mdx +0 -129
- fastmcp-2.13.3/docs/python-sdk/fastmcp-client-auth-oauth.mdx +0 -104
- fastmcp-2.13.3/docs/python-sdk/fastmcp-client-client.mdx +0 -546
- fastmcp-2.13.3/docs/python-sdk/fastmcp-client-elicitation.mdx +0 -18
- fastmcp-2.13.3/docs/python-sdk/fastmcp-client-messages.mdx +0 -107
- fastmcp-2.13.3/docs/python-sdk/fastmcp-client-transports.mdx +0 -300
- fastmcp-2.13.3/docs/python-sdk/fastmcp-prompts-prompt.mdx +0 -117
- fastmcp-2.13.3/docs/python-sdk/fastmcp-resources-resource.mdx +0 -123
- fastmcp-2.13.3/docs/python-sdk/fastmcp-resources-template.mdx +0 -170
- fastmcp-2.13.3/docs/python-sdk/fastmcp-server-auth-auth.mdx +0 -210
- fastmcp-2.13.3/docs/python-sdk/fastmcp-server-auth-oauth_proxy.mdx +0 -429
- fastmcp-2.13.3/docs/python-sdk/fastmcp-server-auth-oidc_proxy.mdx +0 -82
- fastmcp-2.13.3/docs/python-sdk/fastmcp-server-auth-providers-azure.mdx +0 -76
- fastmcp-2.13.3/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +0 -13
- fastmcp-2.13.3/docs/python-sdk/fastmcp-server-context.mdx +0 -412
- fastmcp-2.13.3/docs/python-sdk/fastmcp-server-dependencies.mdx +0 -49
- fastmcp-2.13.3/docs/python-sdk/fastmcp-server-elicitation.mdx +0 -87
- fastmcp-2.13.3/docs/python-sdk/fastmcp-server-http.mdx +0 -103
- fastmcp-2.13.3/docs/python-sdk/fastmcp-server-low_level.mdx +0 -53
- fastmcp-2.13.3/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +0 -112
- fastmcp-2.13.3/docs/python-sdk/fastmcp-server-openapi.mdx +0 -91
- fastmcp-2.13.3/docs/python-sdk/fastmcp-server-proxy.mdx +0 -339
- fastmcp-2.13.3/docs/python-sdk/fastmcp-server-server.mdx +0 -876
- fastmcp-2.13.3/docs/python-sdk/fastmcp-settings.mdx +0 -84
- fastmcp-2.13.3/docs/python-sdk/fastmcp-tools-tool.mdx +0 -117
- fastmcp-2.13.3/docs/python-sdk/fastmcp-tools-tool_transform.mdx +0 -290
- fastmcp-2.13.3/docs/python-sdk/fastmcp-utilities-openapi.mdx +0 -180
- fastmcp-2.13.3/docs/python-sdk/fastmcp-utilities-tests.mdx +0 -106
- fastmcp-2.13.3/docs/python-sdk/fastmcp-utilities-types.mdx +0 -169
- fastmcp-2.13.3/docs/python-sdk/fastmcp-utilities-ui.mdx +0 -139
- fastmcp-2.13.3/docs/servers/auth/oauth-proxy.mdx +0 -591
- fastmcp-2.13.3/docs/servers/composition.mdx +0 -381
- fastmcp-2.13.3/docs/servers/context.mdx +0 -529
- fastmcp-2.13.3/docs/servers/elicitation.mdx +0 -319
- fastmcp-2.13.3/docs/servers/middleware.mdx +0 -790
- fastmcp-2.13.3/docs/servers/proxy.mdx +0 -352
- fastmcp-2.13.3/docs/servers/sampling.mdx +0 -270
- fastmcp-2.13.3/docs/servers/server.mdx +0 -439
- fastmcp-2.13.3/docs/servers/tools.mdx +0 -940
- fastmcp-2.13.3/docs/snippets/version-badge.mdx +0 -12
- fastmcp-2.13.3/examples/memory.py +0 -348
- fastmcp-2.13.3/examples/sampling.py +0 -52
- fastmcp-2.13.3/examples/sampling_fallback.py +0 -38
- fastmcp-2.13.3/examples/screenshot.py +0 -29
- fastmcp-2.13.3/examples/smart_home/src/smart_home/lights/server.py +0 -304
- fastmcp-2.13.3/pyproject.toml +0 -181
- fastmcp-2.13.3/src/fastmcp/__init__.py +0 -56
- fastmcp-2.13.3/src/fastmcp/cli/__init__.py +0 -6
- fastmcp-2.13.3/src/fastmcp/cli/cli.py +0 -878
- fastmcp-2.13.3/src/fastmcp/cli/install/shared.py +0 -142
- fastmcp-2.13.3/src/fastmcp/client/auth/oauth.py +0 -325
- fastmcp-2.13.3/src/fastmcp/client/client.py +0 -1015
- fastmcp-2.13.3/src/fastmcp/client/elicitation.py +0 -74
- fastmcp-2.13.3/src/fastmcp/client/messages.py +0 -126
- fastmcp-2.13.3/src/fastmcp/client/roots.py +0 -75
- fastmcp-2.13.3/src/fastmcp/client/sampling.py +0 -56
- fastmcp-2.13.3/src/fastmcp/client/transports.py +0 -1119
- fastmcp-2.13.3/src/fastmcp/contrib/component_manager/component_service.py +0 -225
- fastmcp-2.13.3/src/fastmcp/experimental/sampling/handlers/base.py +0 -21
- fastmcp-2.13.3/src/fastmcp/experimental/sampling/handlers/openai.py +0 -170
- fastmcp-2.13.3/src/fastmcp/experimental/server/openapi/components.py +0 -352
- fastmcp-2.13.3/src/fastmcp/experimental/server/openapi/routing.py +0 -130
- fastmcp-2.13.3/src/fastmcp/experimental/server/openapi/server.py +0 -451
- fastmcp-2.13.3/src/fastmcp/experimental/utilities/openapi/README.md +0 -239
- fastmcp-2.13.3/src/fastmcp/experimental/utilities/openapi/formatters.py +0 -389
- fastmcp-2.13.3/src/fastmcp/experimental/utilities/openapi/json_schema_converter.py +0 -344
- fastmcp-2.13.3/src/fastmcp/prompts/prompt.py +0 -381
- fastmcp-2.13.3/src/fastmcp/resources/resource.py +0 -223
- fastmcp-2.13.3/src/fastmcp/resources/template.py +0 -403
- fastmcp-2.13.3/src/fastmcp/server/auth/__init__.py +0 -34
- fastmcp-2.13.3/src/fastmcp/server/auth/auth.py +0 -399
- fastmcp-2.13.3/src/fastmcp/server/auth/oauth_proxy.py +0 -2239
- fastmcp-2.13.3/src/fastmcp/server/auth/oidc_proxy.py +0 -412
- fastmcp-2.13.3/src/fastmcp/server/auth/providers/bearer.py +0 -25
- fastmcp-2.13.3/src/fastmcp/server/auth/providers/in_memory.py +0 -364
- fastmcp-2.13.3/src/fastmcp/server/auth/providers/oci.py +0 -233
- fastmcp-2.13.3/src/fastmcp/server/context.py +0 -803
- fastmcp-2.13.3/src/fastmcp/server/dependencies.py +0 -163
- fastmcp-2.13.3/src/fastmcp/server/elicitation.py +0 -220
- fastmcp-2.13.3/src/fastmcp/server/http.py +0 -360
- fastmcp-2.13.3/src/fastmcp/server/low_level.py +0 -156
- fastmcp-2.13.3/src/fastmcp/server/middleware/middleware.py +0 -208
- fastmcp-2.13.3/src/fastmcp/server/openapi.py +0 -1087
- fastmcp-2.13.3/src/fastmcp/server/proxy.py +0 -694
- fastmcp-2.13.3/src/fastmcp/server/sampling/handler.py +0 -19
- fastmcp-2.13.3/src/fastmcp/server/server.py +0 -2898
- fastmcp-2.13.3/src/fastmcp/settings.py +0 -414
- fastmcp-2.13.3/src/fastmcp/tools/tool.py +0 -605
- fastmcp-2.13.3/src/fastmcp/tools/tool_transform.py +0 -954
- fastmcp-2.13.3/src/fastmcp/utilities/components.py +0 -181
- fastmcp-2.13.3/src/fastmcp/utilities/json_schema_type.py +0 -648
- fastmcp-2.13.3/src/fastmcp/utilities/mcp_config.py +0 -57
- fastmcp-2.13.3/src/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -447
- fastmcp-2.13.3/src/fastmcp/utilities/openapi.py +0 -1568
- fastmcp-2.13.3/src/fastmcp/utilities/tests.py +0 -280
- fastmcp-2.13.3/src/fastmcp/utilities/types.py +0 -488
- fastmcp-2.13.3/tests/client/auth/test_oauth_client.py +0 -126
- fastmcp-2.13.3/tests/client/test_client.py +0 -1173
- fastmcp-2.13.3/tests/client/test_elicitation.py +0 -731
- fastmcp-2.13.3/tests/client/test_openapi_experimental.py +0 -194
- fastmcp-2.13.3/tests/client/test_openapi_legacy.py +0 -190
- fastmcp-2.13.3/tests/client/test_sampling.py +0 -163
- fastmcp-2.13.3/tests/client/test_sse.py +0 -190
- fastmcp-2.13.3/tests/client/test_streamable_http.py +0 -254
- fastmcp-2.13.3/tests/client/transports/test_transports.py +0 -37
- fastmcp-2.13.3/tests/conftest.py +0 -76
- fastmcp-2.13.3/tests/deprecated/test_bearer_auth_provider.py +0 -13
- fastmcp-2.13.3/tests/deprecated/test_dependencies.py +0 -30
- fastmcp-2.13.3/tests/deprecated/test_deprecated.py +0 -111
- fastmcp-2.13.3/tests/deprecated/test_mount_import_arg_order.py +0 -275
- fastmcp-2.13.3/tests/deprecated/test_mount_separators.py +0 -113
- fastmcp-2.13.3/tests/deprecated/test_output_schema_false.py +0 -139
- fastmcp-2.13.3/tests/deprecated/test_proxy_client.py +0 -107
- fastmcp-2.13.3/tests/deprecated/test_resource_prefixes.py +0 -105
- fastmcp-2.13.3/tests/deprecated/test_route_type_ignore.py +0 -116
- fastmcp-2.13.3/tests/deprecated/test_settings.py +0 -361
- fastmcp-2.13.3/tests/experimental/openapi_parser/README.md +0 -5
- fastmcp-2.13.3/tests/experimental/openapi_parser/conftest.py +0 -11
- fastmcp-2.13.3/tests/experimental/openapi_parser/server/openapi/test_comprehensive.py +0 -695
- fastmcp-2.13.3/tests/experimental/openapi_parser/server/openapi/test_deepobject_style.py +0 -333
- fastmcp-2.13.3/tests/experimental/openapi_parser/server/openapi/test_end_to_end_compatibility.py +0 -325
- fastmcp-2.13.3/tests/experimental/openapi_parser/server/openapi/test_openapi_features.py +0 -401
- fastmcp-2.13.3/tests/experimental/openapi_parser/server/openapi/test_openapi_performance.py +0 -143
- fastmcp-2.13.3/tests/experimental/openapi_parser/server/openapi/test_parameter_collisions.py +0 -212
- fastmcp-2.13.3/tests/experimental/openapi_parser/server/openapi/test_performance_comparison.py +0 -285
- fastmcp-2.13.3/tests/experimental/openapi_parser/server/openapi/test_server.py +0 -337
- fastmcp-2.13.3/tests/experimental/openapi_parser/utilities/openapi/test_allof_requestbody.py +0 -227
- fastmcp-2.13.3/tests/experimental/openapi_parser/utilities/openapi/test_direct_array_schemas.py +0 -323
- fastmcp-2.13.3/tests/experimental/openapi_parser/utilities/openapi/test_director.py +0 -462
- fastmcp-2.13.3/tests/experimental/openapi_parser/utilities/openapi/test_legacy_compatibility.py +0 -333
- fastmcp-2.13.3/tests/experimental/openapi_parser/utilities/openapi/test_models.py +0 -476
- fastmcp-2.13.3/tests/experimental/openapi_parser/utilities/openapi/test_nullable_fields.py +0 -375
- fastmcp-2.13.3/tests/experimental/openapi_parser/utilities/openapi/test_parser.py +0 -460
- fastmcp-2.13.3/tests/experimental/openapi_parser/utilities/openapi/test_schemas.py +0 -635
- fastmcp-2.13.3/tests/experimental/openapi_parser/utilities/openapi/test_transitive_references.py +0 -842
- fastmcp-2.13.3/tests/experimental/sampling/test_openai_handler.py +0 -100
- fastmcp-2.13.3/tests/integration_tests/conftest.py +0 -28
- fastmcp-2.13.3/tests/integration_tests/test_github_mcp_remote.py +0 -123
- fastmcp-2.13.3/tests/prompts/test_prompt_manager.py +0 -436
- fastmcp-2.13.3/tests/resources/test_resource_template.py +0 -956
- fastmcp-2.13.3/tests/server/auth/providers/test_azure.py +0 -881
- fastmcp-2.13.3/tests/server/auth/test_jwt_provider.py +0 -1101
- fastmcp-2.13.3/tests/server/auth/test_oauth_mounting.py +0 -267
- fastmcp-2.13.3/tests/server/auth/test_oauth_proxy.py +0 -1411
- fastmcp-2.13.3/tests/server/auth/test_oauth_proxy_redirect_validation.py +0 -201
- fastmcp-2.13.3/tests/server/auth/test_oauth_proxy_storage.py +0 -207
- fastmcp-2.13.3/tests/server/http/test_http_middleware.py +0 -213
- fastmcp-2.13.3/tests/server/middleware/test_caching.py +0 -523
- fastmcp-2.13.3/tests/server/middleware/test_initialization_middleware.py +0 -251
- fastmcp-2.13.3/tests/server/middleware/test_logging.py +0 -670
- fastmcp-2.13.3/tests/server/middleware/test_tool_injection.py +0 -498
- fastmcp-2.13.3/tests/server/openapi/conftest.py +0 -135
- fastmcp-2.13.3/tests/server/openapi/test_advanced_behavior.py +0 -315
- fastmcp-2.13.3/tests/server/openapi/test_basic_functionality.py +0 -369
- fastmcp-2.13.3/tests/server/openapi/test_configuration.py +0 -933
- fastmcp-2.13.3/tests/server/openapi/test_deepobject_style.py +0 -281
- fastmcp-2.13.3/tests/server/openapi/test_description_propagation.py +0 -796
- fastmcp-2.13.3/tests/server/openapi/test_explode_integration.py +0 -320
- fastmcp-2.13.3/tests/server/openapi/test_openapi_compatibility.py +0 -661
- fastmcp-2.13.3/tests/server/openapi/test_openapi_path_parameters.py +0 -624
- fastmcp-2.13.3/tests/server/openapi/test_optional_parameters.py +0 -100
- fastmcp-2.13.3/tests/server/openapi/test_parameter_collisions.py +0 -258
- fastmcp-2.13.3/tests/server/openapi/test_route_map_fn.py +0 -452
- fastmcp-2.13.3/tests/server/proxy/test_proxy_client.py +0 -419
- fastmcp-2.13.3/tests/server/proxy/test_proxy_server.py +0 -771
- fastmcp-2.13.3/tests/server/proxy/test_stateful_proxy_client.py +0 -148
- fastmcp-2.13.3/tests/server/test_auth_integration.py +0 -1240
- fastmcp-2.13.3/tests/server/test_context.py +0 -236
- fastmcp-2.13.3/tests/server/test_experimental_openapi_feature_flag.py +0 -98
- fastmcp-2.13.3/tests/server/test_import_server.py +0 -646
- fastmcp-2.13.3/tests/server/test_logging.py +0 -177
- fastmcp-2.13.3/tests/server/test_mount.py +0 -1241
- fastmcp-2.13.3/tests/server/test_resource_prefix_formats.py +0 -65
- fastmcp-2.13.3/tests/server/test_server.py +0 -1686
- fastmcp-2.13.3/tests/server/test_server_interactions.py +0 -2775
- fastmcp-2.13.3/tests/server/test_server_lifespan.py +0 -68
- fastmcp-2.13.3/tests/server/test_tool_annotations.py +0 -221
- fastmcp-2.13.3/tests/test_examples.py +0 -70
- fastmcp-2.13.3/tests/tools/__init__.py +0 -0
- fastmcp-2.13.3/tests/tools/test_tool.py +0 -1708
- fastmcp-2.13.3/tests/tools/test_tool_manager.py +0 -1053
- fastmcp-2.13.3/tests/utilities/openapi/__init__.py +0 -1
- fastmcp-2.13.3/tests/utilities/openapi/conftest.py +0 -1
- fastmcp-2.13.3/tests/utilities/openapi/test_nullable_fields.py +0 -243
- fastmcp-2.13.3/tests/utilities/openapi/test_openapi.py +0 -1285
- fastmcp-2.13.3/tests/utilities/openapi/test_openapi_advanced.py +0 -665
- fastmcp-2.13.3/tests/utilities/openapi/test_openapi_fastapi.py +0 -540
- fastmcp-2.13.3/tests/utilities/openapi/test_openapi_output_schemas.py +0 -276
- fastmcp-2.13.3/tests/utilities/test_json_schema_type.py +0 -1586
- fastmcp-2.13.3/tests/utilities/test_types.py +0 -716
- fastmcp-2.13.3/uv.lock +0 -2103
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.ccignore +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.cursor/rules/core-mcp-objects.mdc +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.cursor/worktrees.json +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.github/copilot-instructions.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.github/dependabot.yml +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.github/pull_request_template.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.github/release.yml +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.github/workflows/auto-close-duplicates.yml +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.github/workflows/auto-close-needs-mre.yml +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.github/workflows/martian-issue-triage.yml +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.github/workflows/marvin-dedupe-issues.yml +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.github/workflows/marvin-label-triage.yml +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.github/workflows/marvin.yml +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.github/workflows/publish.yml +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.github/workflows/run-static.yml +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.github/workflows/update-config-schema.yml +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/.github/workflows/update-sdk-docs.yml +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/CLAUDE.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/CODE_OF_CONDUCT.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/LICENSE +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/SECURITY.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/.ccignore +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/.cursor/rules/mintlify.mdc +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/brand/blue-logo.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/brand/f-watercolor-waves-dark.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/brand/f-watercolor-waves.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/brand/favicon.svg +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/brand/thumbnail-background.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/brand/wordmark-padded.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/brand/wordmark-watercolor-rainbow-dark.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/brand/wordmark-watercolor-rainbow.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/brand/wordmark-watercolor-waves-dark.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/brand/wordmark-watercolor-waves.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/brand/wordmark-white-padded.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/brand/wordmark-white.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/brand/wordmark.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/images/fastmcp_cloud/connect.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/images/fastmcp_cloud/create_project.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/images/fastmcp_cloud/deployment.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/images/fastmcp_cloud/quickstart.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/images/oauth-proxy-consent-screen.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/images/tutorial-rest-api-result.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/schemas/mcp_server_config/latest.json +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/schemas/mcp_server_config/v1.json +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/assets/updates/release-2-7.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/clients/auth/bearer.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/clients/auth/oauth.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/clients/client.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/clients/elicitation.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/clients/logging.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/clients/messages.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/clients/progress.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/clients/prompts.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/clients/resources.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/clients/roots.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/clients/tools.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/clients/transports.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/community/README.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/community/showcase.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/css/banner.css +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/css/python-sdk.css +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/css/style.css +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/deployment/fastmcp-cloud.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/deployment/running-server.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/deployment/server-configuration.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/development/contributing.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/development/releases.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/development/tests.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/getting-started/installation.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/getting-started/quickstart.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/getting-started/welcome.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/anthropic.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/auth0.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/authkit.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/aws-cognito.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/azure.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/chatgpt.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/claude-code.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/claude-desktop.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/cursor-install-mcp.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/cursor.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/descope.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/discord.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/eunomia-authorization.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/gemini-cli.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/gemini.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/github.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/google.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/images/authkit/enable_dcr.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/images/oci/ociaddapplication.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/images/oci/ocieditdomainsettings.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/images/oci/ocieditdomainsettingsbutton.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/images/oci/ocioauthconfiguration.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/images/permit/abac_condition_example.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/images/permit/abac_policy_example.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/images/permit/policy_mapping.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/images/permit/role_assignement.png +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/mcp-json-configuration.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/openai.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/permit.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/scalekit.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/integrations/workos.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/patterns/cli.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/patterns/contrib.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/patterns/decorating-methods.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/patterns/testing.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/patterns/tool-transformation.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/public/schemas/fastmcp.json/latest.json +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/public/schemas/fastmcp.json/v1.json +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-cli-__init__.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-cli-install-__init__.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-cli-install-claude_code.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-cli-install-claude_desktop.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-cli-install-cursor.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-cli-install-gemini_cli.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-cli-install-mcp_json.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-cli-install-shared.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-cli-run.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-client-__init__.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-client-auth-__init__.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-client-auth-bearer.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-client-logging.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-client-oauth_callback.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-client-progress.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-client-roots.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-client-sampling.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-exceptions.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-mcp_config.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-prompts-__init__.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-resources-__init__.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-resources-resource_manager.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-resources-types.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-__init__.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-auth-__init__.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-auth-jwt_issuer.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-auth-middleware.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-auth-providers-__init__.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-auth-providers-auth0.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-auth-providers-aws.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-auth-providers-debug.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-auth-providers-descope.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-auth-providers-github.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-auth-providers-google.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-auth-providers-introspection.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-auth-providers-jwt.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-auth-providers-oci.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-auth-providers-scalekit.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-auth-providers-supabase.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-auth-providers-workos.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-auth-redirect_validation.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-middleware-__init__.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-middleware-caching.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-middleware-error_handling.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-middleware-logging.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-middleware-rate_limiting.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-middleware-timing.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-server-middleware-tool_injection.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-tools-__init__.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-tools-tool_manager.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-__init__.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-auth.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-cli.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-components.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-exceptions.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-http.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-inspect.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-json_schema.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-json_schema_type.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-logging.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-mcp_server_config-__init__.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-__init__.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-__init__.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-base.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-uv.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-mcp_server_config.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-__init__.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-base.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-filesystem.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/servers/auth/authentication.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/servers/auth/full-oauth-server.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/servers/auth/oidc-proxy.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/servers/auth/remote-oauth.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/servers/auth/token-verification.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/servers/icons.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/servers/logging.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/servers/progress.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/servers/prompts.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/servers/resources.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/servers/storage-backends.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/snippets/local-focus.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/snippets/youtube-embed.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/tutorials/create-mcp-server.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/tutorials/mcp.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/tutorials/rest-api.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/docs/updates.mdx +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/atproto_mcp/README.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/atproto_mcp/demo.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/atproto_mcp/fastmcp.json +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/atproto_mcp/pyproject.toml +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/atproto_mcp/src/atproto_mcp/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/atproto_mcp/src/atproto_mcp/__main__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_client.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_posts.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_profile.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_read.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_social.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/atproto_mcp/src/atproto_mcp/py.typed +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/atproto_mcp/src/atproto_mcp/server.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/atproto_mcp/src/atproto_mcp/settings.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/atproto_mcp/src/atproto_mcp/types.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/authkit_dcr/README.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/authkit_dcr/client.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/authkit_dcr/server.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/aws_oauth/README.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/aws_oauth/client.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/aws_oauth/requirements.txt +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/aws_oauth/server.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/azure_oauth/README.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/azure_oauth/client.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/azure_oauth/server.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/discord_oauth/README.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/discord_oauth/client.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/discord_oauth/server.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/github_oauth/README.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/github_oauth/client.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/github_oauth/server.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/google_oauth/README.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/google_oauth/client.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/google_oauth/server.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/scalekit_oauth/README.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/scalekit_oauth/client.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/scalekit_oauth/server.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/workos_oauth/README.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/workos_oauth/client.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/auth/workos_oauth/server.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/complex_inputs.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/config_server.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/desktop.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/echo.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/fastmcp_config/env_interpolation_example.json +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/fastmcp_config/fastmcp.json +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/fastmcp_config/full_example.fastmcp.json +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/fastmcp_config/server.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/fastmcp_config/simple.fastmcp.json +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/fastmcp_config_demo/README.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/fastmcp_config_demo/fastmcp.json +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/fastmcp_config_demo/server.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/get_file.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/in_memory_proxy_example.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/memory.fastmcp.json +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/mount_example.fastmcp.json +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/mount_example.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/screenshot.fastmcp.json +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/serializer.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/simple_echo.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/smart_home/README.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/smart_home/hub.fastmcp.json +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/smart_home/lights.fastmcp.json +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/smart_home/pyproject.toml +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/smart_home/src/smart_home/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/smart_home/src/smart_home/__main__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/smart_home/src/smart_home/hub.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/smart_home/src/smart_home/py.typed +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/smart_home/src/smart_home/settings.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/tags_example.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/testing_demo/README.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/testing_demo/pyproject.toml +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/testing_demo/server.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/testing_demo/tests/test_server.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/testing_demo/uv.lock +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/text_me.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/examples/tool_result_echo.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/justfile +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/logo.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/scripts/auto_close_duplicates.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/scripts/auto_close_needs_mre.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/cli/install/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/cli/install/claude_code.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/cli/install/claude_desktop.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/cli/install/cursor.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/cli/install/gemini_cli.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/cli/install/mcp_json.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/cli/run.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/client/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/client/auth/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/client/auth/bearer.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/client/logging.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/client/oauth_callback.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/client/progress.py +0 -0
- {fastmcp-2.13.3/src/fastmcp/experimental/sampling → fastmcp-2.14.1/src/fastmcp/client/sampling/handlers}/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/contrib/README.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/contrib/component_manager/README.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/contrib/component_manager/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/contrib/component_manager/example.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/exceptions.py +0 -0
- {fastmcp-2.13.3/src/fastmcp/experimental/sampling/handlers → fastmcp-2.14.1/src/fastmcp/experimental/sampling}/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/mcp_config.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/prompts/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/prompts/prompt_manager.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/py.typed +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/resources/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/resources/resource_manager.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/resources/types.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/auth/handlers/authorize.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/auth/jwt_issuer.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/auth/middleware.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/auth/providers/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/auth/providers/auth0.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/auth/providers/aws.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/auth/providers/azure.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/auth/providers/debug.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/auth/providers/descope.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/auth/providers/discord.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/auth/providers/github.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/auth/providers/google.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/auth/providers/introspection.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/auth/providers/jwt.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/auth/providers/scalekit.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/auth/providers/supabase.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/auth/providers/workos.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/auth/redirect_validation.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/middleware/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/middleware/caching.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/middleware/error_handling.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/middleware/logging.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/middleware/rate_limiting.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/middleware/timing.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/server/middleware/tool_injection.py +0 -0
- {fastmcp-2.13.3/src/fastmcp/experimental → fastmcp-2.14.1/src/fastmcp}/server/openapi/README.md +0 -0
- {fastmcp-2.13.3/src/fastmcp/experimental → fastmcp-2.14.1/src/fastmcp}/server/openapi/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/tools/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/tools/tool_manager.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/utilities/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/utilities/auth.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/utilities/cli.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/utilities/exceptions.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/utilities/http.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/utilities/inspect.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/utilities/json_schema.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/utilities/logging.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {fastmcp-2.13.3/src/fastmcp/experimental → fastmcp-2.14.1/src/fastmcp}/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.13.3/src/fastmcp/experimental → fastmcp-2.14.1/src/fastmcp}/utilities/openapi/director.py +0 -0
- {fastmcp-2.13.3/src/fastmcp/experimental → fastmcp-2.14.1/src/fastmcp}/utilities/openapi/models.py +0 -0
- {fastmcp-2.13.3/src/fastmcp/experimental → fastmcp-2.14.1/src/fastmcp}/utilities/openapi/parser.py +0 -0
- {fastmcp-2.13.3/src/fastmcp/experimental → fastmcp-2.14.1/src/fastmcp}/utilities/openapi/schemas.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/src/fastmcp/utilities/ui.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/cli/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/cli/test_cli.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/cli/test_config.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/cli/test_cursor.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/cli/test_install.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/cli/test_mcp_server_config_integration.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/cli/test_mcp_server_config_schema.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/cli/test_project_prepare.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/cli/test_run.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/cli/test_run_config.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/cli/test_server_args.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/cli/test_shared.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/cli/test_with_argv.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/client/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/client/auth/__init__.py +0 -0
- {fastmcp-2.13.3/tests/client/transports → fastmcp-2.14.1/tests/client/sampling}/__init__.py +0 -0
- {fastmcp-2.13.3/tests/experimental → fastmcp-2.14.1/tests/client/sampling/handlers}/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/client/test_logs.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/client/test_notifications.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/client/test_oauth_callback_xss.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/client/test_progress.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/client/test_roots.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/client/test_stdio.py +0 -0
- {fastmcp-2.13.3/tests/experimental/openapi_parser → fastmcp-2.14.1/tests/client/transports}/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/client/transports/test_uv_transport.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/contrib/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/contrib/test_bulk_tool_caller.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/contrib/test_component_manager.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/contrib/test_mcp_mixin.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/deprecated/__init__.py +0 -0
- /fastmcp-2.13.3/tests/server/test_tool_exclude_args.py → /fastmcp-2.14.1/tests/deprecated/test_exclude_args.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/experimental/README.md +0 -0
- {fastmcp-2.13.3/tests/experimental/openapi_parser/server → fastmcp-2.14.1/tests/experimental}/__init__.py +0 -0
- {fastmcp-2.13.3/tests/experimental/openapi_parser/utilities → fastmcp-2.14.1/tests/integration_tests}/__init__.py +0 -0
- {fastmcp-2.13.3/tests/integration_tests → fastmcp-2.14.1/tests/integration_tests/auth}/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/integration_tests/auth/test_github_provider_integration.py +0 -0
- {fastmcp-2.13.3/tests/integration_tests/auth → fastmcp-2.14.1/tests/prompts}/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/prompts/test_prompt.py +0 -0
- {fastmcp-2.13.3/tests/prompts → fastmcp-2.14.1/tests/resources}/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/resources/test_file_resources.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/resources/test_function_resources.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/resources/test_resource_manager.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/resources/test_resource_template_meta.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/resources/test_resources.py +0 -0
- {fastmcp-2.13.3/tests/resources → fastmcp-2.14.1/tests/server}/__init__.py +0 -0
- {fastmcp-2.13.3/tests/server → fastmcp-2.14.1/tests/server/auth}/__init__.py +0 -0
- {fastmcp-2.13.3/tests/server/auth → fastmcp-2.14.1/tests/server/auth/providers}/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/providers/test_auth0.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/providers/test_aws.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/providers/test_descope.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/providers/test_discord.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/providers/test_github.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/providers/test_google.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/providers/test_introspection.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/providers/test_scalekit.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/providers/test_supabase.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/providers/test_workos.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/test_auth_provider.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/test_debug_verifier.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/test_enhanced_error_responses.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/test_jwt_issuer.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/test_oauth_consent_flow.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/test_oidc_proxy.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/test_redirect_validation.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/test_remote_auth_provider.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/auth/test_static_token_verifier.py +0 -0
- {fastmcp-2.13.3/tests/server/auth/providers → fastmcp-2.14.1/tests/server/http}/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/http/test_bearer_auth_backend.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/http/test_custom_routes.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/http/test_http_auth_middleware.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/http/test_http_dependencies.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/http/test_stale_access_token.py +0 -0
- {fastmcp-2.13.3/tests/server/http → fastmcp-2.14.1/tests/server/middleware}/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/middleware/test_error_handling.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/middleware/test_middleware.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/middleware/test_rate_limiting.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/middleware/test_timing.py +0 -0
- {fastmcp-2.13.3/tests/experimental/openapi_parser → fastmcp-2.14.1/tests}/server/openapi/__init__.py +0 -0
- {fastmcp-2.13.3/tests/server/middleware → fastmcp-2.14.1/tests/server/proxy}/__init__.py +0 -0
- {fastmcp-2.13.3/tests/server/openapi → fastmcp-2.14.1/tests/server/sampling}/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/test_app_state.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/test_file_server.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/test_icons.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/test_input_validation.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/test_log_level.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/test_run_server.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/test_streamable_http_no_redirect.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/server/test_tool_transformation.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/test_mcp_config.py +0 -0
- {fastmcp-2.13.3/tests/server/proxy → fastmcp-2.14.1/tests/tools}/__init__.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/tools/test_tool_future_annotations.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/tools/test_tool_transform.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/utilities/__init__.py +0 -0
- {fastmcp-2.13.3/tests/experimental/openapi_parser → fastmcp-2.14.1/tests}/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.13.3/tests/experimental/openapi_parser → fastmcp-2.14.1/tests}/utilities/openapi/conftest.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/utilities/test_cli.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/utilities/test_components.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/utilities/test_inspect.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/utilities/test_json_schema.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/utilities/test_logging.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/utilities/test_tests.py +0 -0
- {fastmcp-2.13.3 → fastmcp-2.14.1}/tests/utilities/test_typeadapter.py +0 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
name: Marvin Test Failure Analysis
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_run:
|
|
5
|
+
workflows: ["Tests", "Run static analysis"]
|
|
6
|
+
types:
|
|
7
|
+
- completed
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: marvin-test-failure-${{ github.event.workflow_run.head_branch }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
martian-test-failure:
|
|
15
|
+
# Only run if the test workflow failed
|
|
16
|
+
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
permissions:
|
|
19
|
+
contents: read
|
|
20
|
+
pull-requests: write
|
|
21
|
+
issues: read
|
|
22
|
+
id-token: write
|
|
23
|
+
actions: read # Required for Claude to read CI results
|
|
24
|
+
steps:
|
|
25
|
+
- name: Checkout repository
|
|
26
|
+
uses: actions/checkout@v6
|
|
27
|
+
with:
|
|
28
|
+
fetch-depth: 1
|
|
29
|
+
|
|
30
|
+
- name: Generate Marvin App token
|
|
31
|
+
id: marvin-token
|
|
32
|
+
uses: actions/create-github-app-token@v2
|
|
33
|
+
with:
|
|
34
|
+
app-id: ${{ secrets.MARVIN_APP_ID }}
|
|
35
|
+
private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
|
|
36
|
+
|
|
37
|
+
- name: Set up Python 3.10
|
|
38
|
+
uses: actions/setup-python@v6
|
|
39
|
+
with:
|
|
40
|
+
python-version: "3.10"
|
|
41
|
+
|
|
42
|
+
# Install UV package manager
|
|
43
|
+
- name: Install UV
|
|
44
|
+
uses: astral-sh/setup-uv@v7
|
|
45
|
+
|
|
46
|
+
# Install dependencies
|
|
47
|
+
- name: Install dependencies
|
|
48
|
+
run: uv sync --all-packages --group dev
|
|
49
|
+
|
|
50
|
+
- name: Set analysis prompt
|
|
51
|
+
id: analysis-prompt
|
|
52
|
+
run: |
|
|
53
|
+
cat >> $GITHUB_OUTPUT << 'EOF'
|
|
54
|
+
PROMPT<<PROMPT_END
|
|
55
|
+
You're a test failure analysis assistant for FastMCP, a Python framework for building Model Context Protocol servers and clients.
|
|
56
|
+
|
|
57
|
+
# Your Task
|
|
58
|
+
A GitHub Actions workflow has failed. Your job is to:
|
|
59
|
+
1. Analyze the test failure(s) to understand what went wrong
|
|
60
|
+
2. Identify the root cause of the failure(s)
|
|
61
|
+
3. Suggest a clear, actionable solution to fix the failure(s)
|
|
62
|
+
|
|
63
|
+
# Getting Started
|
|
64
|
+
1. Call the generate_agents_md tool to get a high-level summary of the project
|
|
65
|
+
2. Get the pull request associated with this workflow run from the GitHub repository: ${{ github.repository }}
|
|
66
|
+
- The workflow run ID is: ${{ github.event.workflow_run.id }}
|
|
67
|
+
- The workflow run was triggered by: ${{ github.event.workflow_run.event }}
|
|
68
|
+
- Use GitHub MCP tools to get PR details and workflow run information
|
|
69
|
+
3. Use the GitHub MCP tools to fetch job logs and failure information:
|
|
70
|
+
- Use get_workflow_run to get details about the failed workflow
|
|
71
|
+
- Use list_workflow_jobs to see which jobs failed
|
|
72
|
+
- Use get_job_logs with failed_only=true to get logs for failed jobs
|
|
73
|
+
- Use summarize_run_log_failures to get an AI summary of what failed
|
|
74
|
+
4. Analyze the failures to understand the root cause
|
|
75
|
+
5. Search the codebase for relevant files, tests, and implementations
|
|
76
|
+
|
|
77
|
+
# Your Response
|
|
78
|
+
Post a comment on the pull request with your analysis. Your comment should include:
|
|
79
|
+
|
|
80
|
+
## Test Failure Analysis
|
|
81
|
+
|
|
82
|
+
**Summary**: A brief 1-2 sentence summary of what failed.
|
|
83
|
+
|
|
84
|
+
**Root Cause**: A clear explanation of why the tests failed, based on your analysis of the logs and code.
|
|
85
|
+
|
|
86
|
+
**Suggested Solution**: Specific, actionable steps to fix the failure(s). Include:
|
|
87
|
+
- Which files need to be modified
|
|
88
|
+
- What changes are needed
|
|
89
|
+
- Why these changes will fix the issue
|
|
90
|
+
|
|
91
|
+
<details>
|
|
92
|
+
<summary>Detailed Analysis</summary>
|
|
93
|
+
|
|
94
|
+
Include here:
|
|
95
|
+
- Relevant log excerpts showing the failure
|
|
96
|
+
- Code snippets that are causing the issue
|
|
97
|
+
- Any related issues or PRs that might be relevant
|
|
98
|
+
</details>
|
|
99
|
+
|
|
100
|
+
<details>
|
|
101
|
+
<summary>Related Files</summary>
|
|
102
|
+
|
|
103
|
+
List files that are relevant to the failure with brief explanations of their relevance.
|
|
104
|
+
</details>
|
|
105
|
+
|
|
106
|
+
# Important Guidelines
|
|
107
|
+
- Be concise and actionable - developers want to quickly understand and fix the issue. Provide
|
|
108
|
+
additional context, references, etc in collapsible details blocks to ensure that the comment you're adding
|
|
109
|
+
is short and easy to read but additional information is a click away.
|
|
110
|
+
- Focus on facts from the logs and code, not speculation
|
|
111
|
+
- If you can't determine the root cause, say so clearly
|
|
112
|
+
- If your only suggestion is a bad suggestion (disable the test, change the timeout, etc), indicate that you've run out of ideas and
|
|
113
|
+
that they probably don't want to do that.
|
|
114
|
+
- Provide specific file names, line numbers, and code references when possible
|
|
115
|
+
- You can run make commands (e.g., `make lint`, `make typecheck`, `make sync`) to build, test, or lint the code
|
|
116
|
+
- You can also run git commands (e.g., `git status`, `git log`, `git diff`) to inspect the repository
|
|
117
|
+
- You can use WebSearch and WebFetch to research errors, stack traces, or related issues
|
|
118
|
+
- For bash commands, you are limited to make and git commands only
|
|
119
|
+
|
|
120
|
+
# CRITICAL: ANGRY USERS
|
|
121
|
+
**IMPORTANT**: If the user is angry with you, the triage bot, don't respond. Just exit immediately without further action.
|
|
122
|
+
If at any point in the conversation the user has asked you to stop replying to the thread, just exit immediately.
|
|
123
|
+
|
|
124
|
+
If you are posting the same suggestion as you have previously made, do not post the suggestion again.
|
|
125
|
+
|
|
126
|
+
# IMPORTANT: EDIT YOUR COMMENT
|
|
127
|
+
Do not post a new comment every time you triage a failing workflow. If a previous comment has been posted by you (marvin)
|
|
128
|
+
in a previous triage, edit that comment do not add a new comment for each failure. Be sure to include a note that you've edited
|
|
129
|
+
your comment to reflect the latest analysis. Don't worry about keeping the old content around, there's comment history for
|
|
130
|
+
that.
|
|
131
|
+
|
|
132
|
+
# Problems Encountered
|
|
133
|
+
If you encounter any problems during your analysis (e.g., unable to fetch logs, tools not working), document them clearly so the team knows what limitations you faced.
|
|
134
|
+
PROMPT_END
|
|
135
|
+
EOF
|
|
136
|
+
|
|
137
|
+
- name: Setup GitHub MCP Server
|
|
138
|
+
run: |
|
|
139
|
+
mkdir -p /tmp/mcp-config
|
|
140
|
+
cat > /tmp/mcp-config/mcp-servers.json << 'EOF'
|
|
141
|
+
{
|
|
142
|
+
"mcpServers": {
|
|
143
|
+
"repository-summary": {
|
|
144
|
+
"type": "http",
|
|
145
|
+
"url": "https://agents-md-generator.fastmcp.app/mcp"
|
|
146
|
+
},
|
|
147
|
+
"code-search": {
|
|
148
|
+
"type": "http",
|
|
149
|
+
"url": "https://public-code-search.fastmcp.app/mcp"
|
|
150
|
+
},
|
|
151
|
+
"github-research": {
|
|
152
|
+
"type": "stdio",
|
|
153
|
+
"command": "uvx",
|
|
154
|
+
"args": [
|
|
155
|
+
"github-research-mcp"
|
|
156
|
+
],
|
|
157
|
+
"env": {
|
|
158
|
+
"DISABLE_SUMMARIES": "true",
|
|
159
|
+
"GITHUB_PERSONAL_ACCESS_TOKEN": "${{ secrets.GITHUB_TOKEN }}"
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
EOF
|
|
165
|
+
|
|
166
|
+
- name: Run Claude Code
|
|
167
|
+
id: claude
|
|
168
|
+
uses: anthropics/claude-code-action@v1
|
|
169
|
+
with:
|
|
170
|
+
github_token: ${{ steps.marvin-token.outputs.token }}
|
|
171
|
+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY_FOR_CI }}
|
|
172
|
+
bot_name: "Marvin Context Protocol"
|
|
173
|
+
|
|
174
|
+
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
|
175
|
+
|
|
176
|
+
additional_permissions: |
|
|
177
|
+
actions: read
|
|
178
|
+
|
|
179
|
+
prompt: ${{ steps.analysis-prompt.outputs.PROMPT }}
|
|
180
|
+
claude_args: |
|
|
181
|
+
--allowed-tools mcp__repository-summary,mcp__code-search,mcp__github-research,WebSearch,WebFetch,Bash(make:*,git:*)
|
|
182
|
+
--mcp-config /tmp/mcp-config/mcp-servers.json
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
name: Tests
|
|
2
|
+
|
|
3
|
+
env:
|
|
4
|
+
# enable colored output
|
|
5
|
+
PY_COLORS: 1
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
push:
|
|
9
|
+
branches: ["main"]
|
|
10
|
+
paths:
|
|
11
|
+
- "src/**"
|
|
12
|
+
- "tests/**"
|
|
13
|
+
- "uv.lock"
|
|
14
|
+
- "pyproject.toml"
|
|
15
|
+
- ".github/workflows/**"
|
|
16
|
+
|
|
17
|
+
# run on all pull requests because these checks are required and will block merges otherwise
|
|
18
|
+
pull_request:
|
|
19
|
+
|
|
20
|
+
workflow_dispatch:
|
|
21
|
+
|
|
22
|
+
permissions:
|
|
23
|
+
contents: read
|
|
24
|
+
|
|
25
|
+
jobs:
|
|
26
|
+
run_tests:
|
|
27
|
+
name: "Run tests: Python ${{ matrix.python-version }} on ${{ matrix.os }}"
|
|
28
|
+
runs-on: ${{ matrix.os }}
|
|
29
|
+
strategy:
|
|
30
|
+
matrix:
|
|
31
|
+
os: [ubuntu-latest, windows-latest]
|
|
32
|
+
python-version: ["3.10"]
|
|
33
|
+
include:
|
|
34
|
+
- os: ubuntu-latest
|
|
35
|
+
python-version: "3.13"
|
|
36
|
+
fail-fast: false
|
|
37
|
+
timeout-minutes: 10
|
|
38
|
+
|
|
39
|
+
steps:
|
|
40
|
+
- uses: actions/checkout@v6
|
|
41
|
+
|
|
42
|
+
- name: Install uv
|
|
43
|
+
uses: astral-sh/setup-uv@v7
|
|
44
|
+
with:
|
|
45
|
+
enable-cache: true
|
|
46
|
+
cache-dependency-glob: "uv.lock"
|
|
47
|
+
python-version: ${{ matrix.python-version }}
|
|
48
|
+
|
|
49
|
+
- name: Install FastMCP
|
|
50
|
+
# run with upgrade to always test against the latest compatible versions
|
|
51
|
+
run: uv sync --upgrade
|
|
52
|
+
|
|
53
|
+
- name: Run tests (excluding integration and client_process)
|
|
54
|
+
run: |
|
|
55
|
+
if [ "${{ matrix.os }}" == "windows-latest" ]; then
|
|
56
|
+
uv run pytest --inline-snapshot=disable tests -m "not integration and not client_process"
|
|
57
|
+
else
|
|
58
|
+
uv run pytest --inline-snapshot=disable tests -m "not integration and not client_process" --numprocesses auto --maxprocesses 4 --dist worksteal
|
|
59
|
+
fi
|
|
60
|
+
shell: bash
|
|
61
|
+
|
|
62
|
+
- name: Run client process tests separately
|
|
63
|
+
run: uv run pytest --inline-snapshot=disable tests -m "client_process" -x
|
|
64
|
+
|
|
65
|
+
run_tests_lowest_direct:
|
|
66
|
+
name: "Run tests with lowest-direct dependencies"
|
|
67
|
+
runs-on: ubuntu-latest
|
|
68
|
+
timeout-minutes: 10
|
|
69
|
+
|
|
70
|
+
steps:
|
|
71
|
+
- uses: actions/checkout@v6
|
|
72
|
+
|
|
73
|
+
- name: Install uv
|
|
74
|
+
uses: astral-sh/setup-uv@v7
|
|
75
|
+
with:
|
|
76
|
+
enable-cache: true
|
|
77
|
+
cache-dependency-glob: "uv.lock"
|
|
78
|
+
python-version: "3.10"
|
|
79
|
+
|
|
80
|
+
- name: Install FastMCP with lowest-direct resolution
|
|
81
|
+
# run with lowest-direct to test against the minimum allowed dependency versions
|
|
82
|
+
run: uv sync --resolution lowest-direct
|
|
83
|
+
|
|
84
|
+
- name: Run tests (excluding integration and client_process)
|
|
85
|
+
run: uv run --resolution lowest-direct pytest --inline-snapshot=disable tests -m "not integration and not client_process" --numprocesses auto --maxprocesses 4 --dist worksteal
|
|
86
|
+
|
|
87
|
+
- name: Run client process tests separately
|
|
88
|
+
run: uv run --resolution lowest-direct pytest --inline-snapshot=disable tests -m "client_process" -x
|
|
89
|
+
|
|
90
|
+
run_integration_tests:
|
|
91
|
+
name: "Run integration tests"
|
|
92
|
+
runs-on: ubuntu-latest
|
|
93
|
+
timeout-minutes: 10
|
|
94
|
+
|
|
95
|
+
steps:
|
|
96
|
+
- uses: actions/checkout@v6
|
|
97
|
+
|
|
98
|
+
- name: Install uv
|
|
99
|
+
uses: astral-sh/setup-uv@v7
|
|
100
|
+
with:
|
|
101
|
+
enable-cache: true
|
|
102
|
+
cache-dependency-glob: "uv.lock"
|
|
103
|
+
python-version: "3.10"
|
|
104
|
+
|
|
105
|
+
- name: Install FastMCP
|
|
106
|
+
# run with upgrade to always test against the latest compatible versions
|
|
107
|
+
run: uv sync --upgrade
|
|
108
|
+
|
|
109
|
+
- name: Run integration tests
|
|
110
|
+
# use longer per-test timeout for remote API calls (default is 5s)
|
|
111
|
+
run: uv run pytest tests -m "integration" --timeout=30 --numprocesses auto --maxprocesses 2 --dist worksteal
|
|
112
|
+
env:
|
|
113
|
+
FASTMCP_GITHUB_TOKEN: ${{ secrets.FASTMCP_GITHUB_TOKEN }}
|
|
114
|
+
FASTMCP_TEST_AUTH_GITHUB_CLIENT_ID: ${{ secrets.FASTMCP_TEST_AUTH_GITHUB_CLIENT_ID }}
|
|
115
|
+
FASTMCP_TEST_AUTH_GITHUB_CLIENT_SECRET: ${{ secrets.FASTMCP_TEST_AUTH_GITHUB_CLIENT_SECRET }}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Python-generated files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
build/
|
|
6
|
+
dist/
|
|
7
|
+
wheels/
|
|
8
|
+
*.egg-info/
|
|
9
|
+
*.egg
|
|
10
|
+
MANIFEST
|
|
11
|
+
.pytest_cache/
|
|
12
|
+
.coverage
|
|
13
|
+
htmlcov/
|
|
14
|
+
.tox/
|
|
15
|
+
nosetests.xml
|
|
16
|
+
coverage.xml
|
|
17
|
+
*.cover
|
|
18
|
+
|
|
19
|
+
# Virtual environments
|
|
20
|
+
.venv
|
|
21
|
+
venv/
|
|
22
|
+
env/
|
|
23
|
+
ENV/
|
|
24
|
+
.env
|
|
25
|
+
|
|
26
|
+
# System files
|
|
27
|
+
.DS_Store
|
|
28
|
+
|
|
29
|
+
# Version file
|
|
30
|
+
src/fastmcp/_version.py
|
|
31
|
+
|
|
32
|
+
# Editors and IDEs
|
|
33
|
+
.cursorrules
|
|
34
|
+
.vscode/
|
|
35
|
+
.idea/
|
|
36
|
+
*.swp
|
|
37
|
+
*.swo
|
|
38
|
+
*~
|
|
39
|
+
.project
|
|
40
|
+
.pydevproject
|
|
41
|
+
.settings/
|
|
42
|
+
|
|
43
|
+
# Jupyter Notebook
|
|
44
|
+
.ipynb_checkpoints
|
|
45
|
+
|
|
46
|
+
# Type checking
|
|
47
|
+
.mypy_cache/
|
|
48
|
+
.dmypy.json
|
|
49
|
+
dmypy.json
|
|
50
|
+
.pyre/
|
|
51
|
+
.pytype/
|
|
52
|
+
|
|
53
|
+
# Local development
|
|
54
|
+
.python-version
|
|
55
|
+
.envrc
|
|
56
|
+
.envrc.private
|
|
57
|
+
.direnv/
|
|
58
|
+
|
|
59
|
+
# Logs and databases
|
|
60
|
+
*.log
|
|
61
|
+
*.sqlite
|
|
62
|
+
*.db
|
|
63
|
+
*.ddb
|
|
64
|
+
|
|
65
|
+
# Claude worktree management
|
|
66
|
+
.claude-wt/worktrees
|
|
67
|
+
|
|
68
|
+
# Agents
|
|
69
|
+
/PLAN.md
|
|
70
|
+
/TODO.md
|
|
71
|
+
/STATUS.md
|
|
72
|
+
|
|
73
|
+
# Common FastMCP test files
|
|
74
|
+
/test.py
|
|
75
|
+
/server.py
|
|
76
|
+
/client.py
|
|
77
|
+
/test.json
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
fail_fast: false
|
|
2
|
+
|
|
3
|
+
repos:
|
|
4
|
+
- repo: https://github.com/abravalheri/validate-pyproject
|
|
5
|
+
rev: v0.24.1
|
|
6
|
+
hooks:
|
|
7
|
+
- id: validate-pyproject
|
|
8
|
+
|
|
9
|
+
- repo: https://github.com/pre-commit/mirrors-prettier
|
|
10
|
+
rev: v3.1.0
|
|
11
|
+
hooks:
|
|
12
|
+
- id: prettier
|
|
13
|
+
types_or: [yaml, json5]
|
|
14
|
+
|
|
15
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
16
|
+
# Ruff version.
|
|
17
|
+
rev: v0.12.1
|
|
18
|
+
hooks:
|
|
19
|
+
# Run the linter.
|
|
20
|
+
- id: ruff-check
|
|
21
|
+
args: [--fix, --exit-non-zero-on-fix]
|
|
22
|
+
# Run the formatter.
|
|
23
|
+
- id: ruff-format
|
|
24
|
+
|
|
25
|
+
- repo: local
|
|
26
|
+
hooks:
|
|
27
|
+
- id: ty
|
|
28
|
+
name: ty check
|
|
29
|
+
entry: uv run --isolated ty check
|
|
30
|
+
language: system
|
|
31
|
+
types: [python]
|
|
32
|
+
files: ^src/|^tests/
|
|
33
|
+
pass_filenames: false
|
|
34
|
+
require_serial: true
|
|
35
|
+
|
|
36
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
37
|
+
rev: v6.0.0
|
|
38
|
+
hooks:
|
|
39
|
+
- id: no-commit-to-branch
|
|
40
|
+
name: prevent commits to main
|
|
41
|
+
args: [--branch, main]
|
|
42
|
+
|
|
43
|
+
- repo: https://github.com/codespell-project/codespell
|
|
44
|
+
rev: v2.4.1
|
|
45
|
+
hooks:
|
|
46
|
+
- id: codespell # See pyproject.toml for args
|
|
47
|
+
additional_dependencies:
|
|
48
|
+
- tomli
|
fastmcp-2.14.1/AGENTS.md
ADDED
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
# FastMCP Development Guidelines
|
|
2
|
+
|
|
3
|
+
> **Audience**: LLM-driven engineering agents and human developers
|
|
4
|
+
|
|
5
|
+
FastMCP is a comprehensive Python framework (Python ≥3.10) for building Model Context Protocol (MCP) servers and clients. This is the actively maintained v2.0 providing a complete toolkit for the MCP ecosystem.
|
|
6
|
+
|
|
7
|
+
## Required Development Workflow
|
|
8
|
+
|
|
9
|
+
**CRITICAL**: Always run these commands in sequence before committing:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
uv sync # Install dependencies
|
|
13
|
+
uv run prek run --all-files # Ruff + Prettier + ty
|
|
14
|
+
uv run pytest # Run full test suite
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
**All three must pass** - this is enforced by CI. Alternative: `just build && just typecheck && just test`
|
|
18
|
+
|
|
19
|
+
**Tests must pass and lint/typing must be clean before committing.**
|
|
20
|
+
|
|
21
|
+
## Repository Structure
|
|
22
|
+
|
|
23
|
+
| Path | Purpose |
|
|
24
|
+
| ------------------ | ----------------------------------------------------------------------------------- |
|
|
25
|
+
| `src/fastmcp/` | Library source code (Python ≥ 3.10) |
|
|
26
|
+
| `├─server/` | Server implementation, `FastMCP`, auth, networking |
|
|
27
|
+
| `│ ├─auth/` | Authentication providers (Google, GitHub, Azure, AWS, WorkOS, Auth0, JWT, and more) |
|
|
28
|
+
| `│ └─middleware/` | Error handling, logging, rate limiting |
|
|
29
|
+
| `├─client/` | High-level client SDK + transports |
|
|
30
|
+
| `│ └─auth/` | Client authentication (Bearer, OAuth) |
|
|
31
|
+
| `├─tools/` | Tool implementations + `ToolManager` |
|
|
32
|
+
| `├─resources/` | Resources, templates + `ResourceManager` |
|
|
33
|
+
| `├─prompts/` | Prompt templates + `PromptManager` |
|
|
34
|
+
| `├─cli/` | FastMCP CLI commands (`run`, `dev`, `install`) |
|
|
35
|
+
| `├─contrib/` | Community contributions (bulk caller, mixins) |
|
|
36
|
+
| `├─experimental/` | Experimental features (sampling handlers) |
|
|
37
|
+
| `└─utilities/` | Shared utilities (logging, JSON schema, HTTP) |
|
|
38
|
+
| `tests/` | Comprehensive pytest suite with markers |
|
|
39
|
+
| `docs/` | Mintlify documentation (published to gofastmcp.com) |
|
|
40
|
+
| `examples/` | Runnable demo servers (echo, smart_home, atproto) |
|
|
41
|
+
|
|
42
|
+
## Core MCP Objects
|
|
43
|
+
|
|
44
|
+
When modifying MCP functionality, changes typically need to be applied across all object types:
|
|
45
|
+
|
|
46
|
+
- **Tools** (`src/tools/` + `ToolManager`)
|
|
47
|
+
- **Resources** (`src/resources/` + `ResourceManager`)
|
|
48
|
+
- **Resource Templates** (`src/resources/` + `ResourceManager`)
|
|
49
|
+
- **Prompts** (`src/prompts/` + `PromptManager`)
|
|
50
|
+
|
|
51
|
+
## Writing Style
|
|
52
|
+
|
|
53
|
+
- Be brief and to the point. Do not regurgitate information that can easily be gleaned from the code, except to guide the reader to where the code is located.
|
|
54
|
+
- **NEVER** use "This isn't..." or "not just..." constructions. State what something IS directly. Avoid defensive writing patterns like:
|
|
55
|
+
- "This isn't X, it's Y" or "Not just X, but Y" → Just say "This is Y"
|
|
56
|
+
- "Not just about X" → State the actual purpose
|
|
57
|
+
- "We're not doing X, we're doing Y" → Just explain what you're doing
|
|
58
|
+
- Any variation of explaining what something isn't before what it is
|
|
59
|
+
|
|
60
|
+
## Testing Best Practices
|
|
61
|
+
|
|
62
|
+
### Testing Standards
|
|
63
|
+
|
|
64
|
+
- Every test: atomic, self-contained, single functionality
|
|
65
|
+
- Use parameterization for multiple examples of same functionality
|
|
66
|
+
- Use separate tests for different functionality pieces
|
|
67
|
+
- **ALWAYS** Put imports at the top of the file, not in the test body
|
|
68
|
+
- **NEVER** add `@pytest.mark.asyncio` to tests - `asyncio_mode = "auto"` is set globally
|
|
69
|
+
- **ALWAYS** run pytest after significant changes
|
|
70
|
+
|
|
71
|
+
### Inline Snapshots
|
|
72
|
+
|
|
73
|
+
FastMCP uses `inline-snapshot` for testing complex data structures. On first run with empty `snapshot()`, pytest will auto-populate the expected value when running `pytest --inline-snapshot=create`. To update snapshots after intentional changes, run `pytest --inline-snapshot=fix`. This is particularly useful for testing JSON schemas and API responses.
|
|
74
|
+
|
|
75
|
+
### Always Use In-Memory Transport
|
|
76
|
+
|
|
77
|
+
Pass FastMCP servers directly to clients for testing:
|
|
78
|
+
|
|
79
|
+
```python
|
|
80
|
+
mcp = FastMCP("TestServer")
|
|
81
|
+
|
|
82
|
+
@mcp.tool
|
|
83
|
+
def greet(name: str) -> str:
|
|
84
|
+
return f"Hello, {name}!"
|
|
85
|
+
|
|
86
|
+
# Direct connection - no network complexity
|
|
87
|
+
async with Client(mcp) as client:
|
|
88
|
+
result = await client.call_tool("greet", {"name": "World"})
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Only use HTTP transport when explicitly testing network features:
|
|
92
|
+
|
|
93
|
+
```python
|
|
94
|
+
# Network testing only
|
|
95
|
+
async with Client(transport=StreamableHttpTransport(server_url)) as client:
|
|
96
|
+
result = await client.ping()
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Development Rules
|
|
100
|
+
|
|
101
|
+
### Git & CI
|
|
102
|
+
|
|
103
|
+
- Prek hooks are required (run automatically on commits)
|
|
104
|
+
- Never amend commits to fix prek failures
|
|
105
|
+
- Apply PR labels: bugs/breaking/enhancements/features
|
|
106
|
+
- Improvements = enhancements (not features) unless specified
|
|
107
|
+
- **NEVER** force-push on collaborative repos
|
|
108
|
+
- **ALWAYS** run prek before PRs
|
|
109
|
+
- **NEVER** create a release, comment on an issue, or open a PR unless specifically instructed to do so.
|
|
110
|
+
|
|
111
|
+
### Commit Messages and Agent Attribution
|
|
112
|
+
|
|
113
|
+
- **Agents NOT acting on behalf of @jlowin MUST identify themselves** (e.g., "🤖 Generated with Claude Code" in commits/PRs)
|
|
114
|
+
- Keep commit messages brief - ideally just headlines, not detailed messages
|
|
115
|
+
- Focus on what changed, not how or why
|
|
116
|
+
- Always read issue comments for follow-up information (treat maintainers as authoritative)
|
|
117
|
+
|
|
118
|
+
### PR Messages - Required Structure
|
|
119
|
+
|
|
120
|
+
- 1-2 paragraphs: problem/tension + solution (PRs are documentation!)
|
|
121
|
+
- Focused code example showing key capability
|
|
122
|
+
- **Avoid:** bullet summaries, exhaustive change lists, verbose closes/fixes, marketing language
|
|
123
|
+
- **Do:** Be opinionated about why change matters, show before/after scenarios
|
|
124
|
+
- Minor fixes: keep body short and concise
|
|
125
|
+
- No "test plan" sections or testing summaries
|
|
126
|
+
|
|
127
|
+
### Code Standards
|
|
128
|
+
|
|
129
|
+
- Python ≥ 3.10 with full type annotations
|
|
130
|
+
- Follow existing patterns and maintain consistency
|
|
131
|
+
- **Prioritize readable, understandable code** - clarity over cleverness
|
|
132
|
+
- Avoid obfuscated or confusing patterns even if they're shorter
|
|
133
|
+
- Use `# type: ignore[attr-defined]` in tests for MCP results instead of type assertions
|
|
134
|
+
- Each feature needs corresponding tests
|
|
135
|
+
|
|
136
|
+
### Documentation
|
|
137
|
+
|
|
138
|
+
- Uses Mintlify framework
|
|
139
|
+
- Files must be in docs.json to be included
|
|
140
|
+
- Never modify `docs/python-sdk/**` (auto-generated)
|
|
141
|
+
- **Core Principle:** A feature doesn't exist unless it is documented!
|
|
142
|
+
|
|
143
|
+
### Documentation Guidelines
|
|
144
|
+
|
|
145
|
+
- **Code Examples:** Explain before showing code, make blocks fully runnable (include imports)
|
|
146
|
+
- **Structure:** Headers form navigation guide, logical H2/H3 hierarchy
|
|
147
|
+
- **Content:** User-focused sections, motivate features (why) before mechanics (how)
|
|
148
|
+
- **Style:** Prose over code comments for important information
|
|
149
|
+
|
|
150
|
+
## Code Review Guidelines
|
|
151
|
+
|
|
152
|
+
### Philosophy
|
|
153
|
+
|
|
154
|
+
Code review is about maintaining a healthy codebase while helping contributors succeed. The burden of proof is on the PR to demonstrate it adds value in the intended way. Your job is to help it get there through actionable feedback.
|
|
155
|
+
|
|
156
|
+
**Critical**: A perfectly written PR that adds unwanted functionality must still be rejected. The code must advance the codebase in the intended direction, not just be well-written. When rejecting, provide clear guidance on how to align with project goals.
|
|
157
|
+
|
|
158
|
+
Be friendly and welcoming while maintaining high standards. Call out what works well - this reinforces good patterns. When code needs improvement, be specific about why and how to fix it. Remember that PRs serve as documentation for future developers.
|
|
159
|
+
|
|
160
|
+
### Focus On
|
|
161
|
+
|
|
162
|
+
- **Does this advance the codebase in the intended direction?** (Even perfect code for unwanted features should be rejected)
|
|
163
|
+
- **API design and naming clarity** - Identify confusing patterns (e.g., parameter values that contradict defaults) or non-idiomatic code (mutable defaults, etc.). Contributed code will need to be maintained indefinitely, and by someone other than the author (unless the author is a maintainer).
|
|
164
|
+
- **Suggest specific improvements**, not generic "add more tests" comments
|
|
165
|
+
- **Think about API ergonomics and learning curve** from a user perspective
|
|
166
|
+
|
|
167
|
+
### For Agent Reviewers
|
|
168
|
+
|
|
169
|
+
- **Read the full context**: Always examine related files, tests, and documentation before reviewing
|
|
170
|
+
- **Check against established patterns**: Look for consistency with existing codebase conventions
|
|
171
|
+
- **Verify functionality claims**: Don't just read code - understand what it actually does
|
|
172
|
+
- **Consider edge cases**: Think through error conditions and boundary scenarios
|
|
173
|
+
|
|
174
|
+
### Avoid
|
|
175
|
+
|
|
176
|
+
- Generic feedback without specifics
|
|
177
|
+
- Hypothetical problems unlikely to occur
|
|
178
|
+
- Nitpicking organizational choices without strong reason
|
|
179
|
+
- Summarizing what the PR already describes
|
|
180
|
+
- Star ratings or excessive emojis
|
|
181
|
+
- Bikeshedding style preferences when functionality is correct
|
|
182
|
+
- Requesting changes without suggesting solutions
|
|
183
|
+
- Focusing on personal coding style over project conventions
|
|
184
|
+
|
|
185
|
+
### Tone
|
|
186
|
+
|
|
187
|
+
- Acknowledge good decisions ("This API design is clean")
|
|
188
|
+
- Be direct but respectful
|
|
189
|
+
- Explain impact ("This will confuse users because...")
|
|
190
|
+
- Remember: Someone else maintains this code forever
|
|
191
|
+
|
|
192
|
+
### Decision Framework
|
|
193
|
+
|
|
194
|
+
Before approving, ask yourself:
|
|
195
|
+
|
|
196
|
+
1. Does this PR achieve its stated purpose?
|
|
197
|
+
2. Is that purpose aligned with where the codebase should go?
|
|
198
|
+
3. Would I be comfortable maintaining this code?
|
|
199
|
+
4. Have I actually understood what it does, not just what it claims?
|
|
200
|
+
5. Does this change introduce technical debt?
|
|
201
|
+
|
|
202
|
+
If something needs work, your review should help it get there through specific, actionable feedback. If it's solving the wrong problem, say so clearly.
|
|
203
|
+
|
|
204
|
+
### Review Comment Examples
|
|
205
|
+
|
|
206
|
+
**Good Review Comments:**
|
|
207
|
+
|
|
208
|
+
❌ "Add more tests"
|
|
209
|
+
✅ "The `handle_timeout` method needs tests for the edge case where timeout=0"
|
|
210
|
+
|
|
211
|
+
❌ "This API is confusing"
|
|
212
|
+
✅ "The parameter name `data` is ambiguous - consider `message_content` to match the MCP specification"
|
|
213
|
+
|
|
214
|
+
❌ "This could be better"
|
|
215
|
+
✅ "This approach works but creates a circular dependency. Consider moving the validation to `utils/validators.py`"
|
|
216
|
+
|
|
217
|
+
### Review Checklist
|
|
218
|
+
|
|
219
|
+
Before approving, verify:
|
|
220
|
+
|
|
221
|
+
- [ ] All required development workflow steps completed (uv sync, prek, pytest)
|
|
222
|
+
- [ ] Changes align with repository patterns and conventions
|
|
223
|
+
- [ ] API changes are documented and backwards-compatible where possible
|
|
224
|
+
- [ ] Error handling follows project patterns (specific exception types)
|
|
225
|
+
- [ ] Tests cover new functionality and edge cases
|
|
226
|
+
|
|
227
|
+
## Key Tools & Commands
|
|
228
|
+
|
|
229
|
+
### Environment Setup
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
git clone <repo>
|
|
233
|
+
cd fastmcp
|
|
234
|
+
uv sync # Installs all deps including dev tools
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Validation Commands (Run Frequently)
|
|
238
|
+
|
|
239
|
+
- **Linting**: `uv run ruff check` (or with `--fix`)
|
|
240
|
+
- **Type Checking**: `uv run ty check`
|
|
241
|
+
- **All Checks**: `uv run prek run --all-files`
|
|
242
|
+
|
|
243
|
+
### Testing
|
|
244
|
+
|
|
245
|
+
- **Standard**: `uv run pytest`
|
|
246
|
+
- **Integration**: `uv run pytest -m "integration"`
|
|
247
|
+
- **Excluding markers**: `uv run pytest -m "not integration and not client_process"`
|
|
248
|
+
|
|
249
|
+
### CLI Usage
|
|
250
|
+
|
|
251
|
+
- **Run server**: `uv run fastmcp run server.py`
|
|
252
|
+
- **Inspect server**: `uv run fastmcp inspect server.py`
|
|
253
|
+
|
|
254
|
+
## Critical Patterns
|
|
255
|
+
|
|
256
|
+
### Error Handling
|
|
257
|
+
|
|
258
|
+
- Never use bare `except` - be specific with exception types
|
|
259
|
+
- Use `# type: ignore[attr-defined]` in tests for MCP results
|
|
260
|
+
|
|
261
|
+
### Build Issues (Common Solutions)
|
|
262
|
+
|
|
263
|
+
1. **Dependencies**: Always `uv sync` first
|
|
264
|
+
2. **Prek fails**: Run `uv run prek run --all-files` to see failures
|
|
265
|
+
3. **Type errors**: Use `uv run ty check` directly, check `pyproject.toml` config
|
|
266
|
+
4. **Test timeouts**: Default 5s - optimize or mark as integration tests
|