fastmcp 2.12.1__tar.gz → 2.12.2__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.12.1 → fastmcp-2.12.2}/PKG-INFO +1 -1
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/changelog.mdx +149 -35
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/docs.json +7 -13
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-auth-oauth_proxy.mdx +16 -15
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/updates.mdx +52 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +1 -1
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/cli/test_mcp_server_config_integration.py +7 -7
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/cli/test_mcp_server_config_schema.py +24 -1
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.ccignore +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.cursor/rules/core-mcp-objects.mdc +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.github/copilot-instructions.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.github/dependabot.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.github/pull_request_template.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.github/release.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.github/workflows/auto-close-duplicates.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.github/workflows/marvin-dedupe-issues.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.github/workflows/marvin-label-triage.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.github/workflows/marvin.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.github/workflows/publish.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.github/workflows/run-static.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.github/workflows/run-tests.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.github/workflows/update-config-schema.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.github/workflows/update-sdk-docs.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.gitignore +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/.pre-commit-config.yaml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/AGENTS.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/CLAUDE.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/CODE_OF_CONDUCT.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/LICENSE +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/README_OPENAPI.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/Windows_Notes.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/.ccignore +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/.cursor/rules/mintlify.mdc +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/assets/brand/blue-logo.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/assets/brand/card-background.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/assets/brand/favicon.svg +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/assets/brand/logo-wordmark-dark.svg +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/assets/brand/logo-wordmark.svg +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/assets/images/fastmcp_cloud/connect.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/assets/images/fastmcp_cloud/create_project.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/assets/images/fastmcp_cloud/deployment.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/assets/images/fastmcp_cloud/quickstart.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/assets/images/tutorial-rest-api-result.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/assets/schemas/mcp_server_config/latest.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/assets/schemas/mcp_server_config/v1.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/assets/updates/release-2-7.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/clients/auth/bearer.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/clients/auth/oauth.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/clients/client.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/clients/elicitation.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/clients/logging.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/clients/messages.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/clients/progress.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/clients/prompts.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/clients/resources.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/clients/roots.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/clients/sampling.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/clients/tools.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/clients/transports.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/community/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/community/showcase.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/css/banner.css +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/css/python-sdk.css +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/css/style.css +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/css/version-badge.css +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/deployment/fastmcp-cloud.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/deployment/running-server.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/deployment/self-hosted.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/deployment/server-configuration.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/development/contributing.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/development/releases.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/development/tests.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/getting-started/installation.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/getting-started/quickstart.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/getting-started/welcome.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/anthropic.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/asgi.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/authkit.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/azure.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/chatgpt.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/claude-code.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/claude-desktop.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/cursor-install-mcp.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/cursor.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/eunomia-authorization.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/fastapi.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/gemini.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/github.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/google.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/images/authkit/enable_dcr.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/images/permit/abac_condition_example.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/images/permit/abac_policy_example.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/images/permit/policy_mapping.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/images/permit/role_assignement.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/mcp-json-configuration.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/openai.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/openapi.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/integrations/permit.mdx +0 -0
- /fastmcp-2.12.1/docs/integrations/workos-oauth.mdx → /fastmcp-2.12.2/docs/integrations/workos.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/patterns/cli.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/patterns/contrib.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/patterns/decorating-methods.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/patterns/tool-transformation.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/public/schemas/fastmcp.json/latest.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/public/schemas/fastmcp.json/v1.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-cli-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-cli-claude.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-cli-cli.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-cli-install-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-cli-install-claude_code.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-cli-install-claude_desktop.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-cli-install-cursor.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-cli-install-mcp_json.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-cli-install-shared.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-cli-run.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-client-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-client-auth-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-client-auth-bearer.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-client-auth-oauth.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-client-client.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-client-elicitation.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-client-logging.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-client-messages.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-client-oauth_callback.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-client-progress.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-client-roots.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-client-sampling.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-client-transports.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-exceptions.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-mcp_config.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-prompts-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-prompts-prompt.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-resources-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-resources-resource.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-resources-resource_manager.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-resources-template.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-resources-types.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-auth-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-auth-auth.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-auth-providers-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-auth-providers-azure.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-auth-providers-github.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-auth-providers-google.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-auth-providers-jwt.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-auth-providers-workos.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-auth-redirect_validation.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-context.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-dependencies.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-elicitation.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-http.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-low_level.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-middleware-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-middleware-error_handling.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-middleware-logging.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-middleware-rate_limiting.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-middleware-timing.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-openapi.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-proxy.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-server-server.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-settings.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-tools-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-tools-tool.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-tools-tool_manager.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-tools-tool_transform.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-auth.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-cli.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-components.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-exceptions.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-http.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-inspect.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-json_schema.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-json_schema_type.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-logging.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-base.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-uv.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-mcp_server_config.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-base.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-filesystem.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-openapi.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-tests.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/python-sdk/fastmcp-utilities-types.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/servers/auth/authentication.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/servers/auth/full-oauth-server.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/servers/auth/oauth-proxy.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/servers/auth/remote-oauth.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/servers/auth/token-verification.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/servers/composition.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/servers/context.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/servers/elicitation.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/servers/logging.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/servers/middleware.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/servers/progress.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/servers/prompts.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/servers/proxy.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/servers/resources.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/servers/sampling.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/servers/server.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/servers/tools.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/snippets/local-focus.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/snippets/version-badge.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/snippets/youtube-embed.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/tutorials/create-mcp-server.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/tutorials/mcp.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/docs/tutorials/rest-api.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/atproto_mcp/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/atproto_mcp/demo.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/atproto_mcp/fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/atproto_mcp/pyproject.toml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/atproto_mcp/src/atproto_mcp/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/atproto_mcp/src/atproto_mcp/__main__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_posts.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_profile.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_read.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_social.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/atproto_mcp/src/atproto_mcp/py.typed +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/atproto_mcp/src/atproto_mcp/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/atproto_mcp/src/atproto_mcp/settings.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/atproto_mcp/src/atproto_mcp/types.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/auth/azure_oauth/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/auth/azure_oauth/client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/auth/azure_oauth/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/auth/github_oauth/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/auth/github_oauth/client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/auth/github_oauth/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/auth/google_oauth/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/auth/google_oauth/client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/auth/google_oauth/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/auth/workos_oauth/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/auth/workos_oauth/client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/auth/workos_oauth/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/complex_inputs.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/config_server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/desktop.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/echo.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/fastmcp_config/env_interpolation_example.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/fastmcp_config/fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/fastmcp_config/full_example.fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/fastmcp_config/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/fastmcp_config/simple.fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/fastmcp_config_demo/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/fastmcp_config_demo/fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/fastmcp_config_demo/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/get_file.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/in_memory_proxy_example.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/memory.fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/memory.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/mount_example.fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/mount_example.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/sampling.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/sampling_fallback.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/screenshot.fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/screenshot.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/serializer.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/simple_echo.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/smart_home/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/smart_home/hub.fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/smart_home/lights.fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/smart_home/pyproject.toml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/smart_home/src/smart_home/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/smart_home/src/smart_home/__main__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/smart_home/src/smart_home/hub.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/smart_home/src/smart_home/lights/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/smart_home/src/smart_home/py.typed +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/smart_home/src/smart_home/settings.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/smart_home/uv.lock +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/tags_example.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/examples/text_me.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/justfile +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/pyproject.toml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/scripts/auto_close_duplicates.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/cli/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/cli/claude.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/cli/cli.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/cli/install/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/cli/install/claude_code.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/cli/install/claude_desktop.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/cli/install/cursor.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/cli/install/mcp_json.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/cli/install/shared.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/cli/run.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/client/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/client/auth/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/client/auth/bearer.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/client/auth/oauth.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/client/client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/client/elicitation.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/client/logging.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/client/messages.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/client/oauth_callback.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/client/progress.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/client/roots.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/client/sampling.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/client/transports.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/contrib/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/contrib/component_manager/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/contrib/component_manager/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/contrib/component_manager/component_service.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/contrib/component_manager/example.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/exceptions.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/experimental/sampling/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/experimental/sampling/handlers/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/experimental/sampling/handlers/base.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/experimental/sampling/handlers/openai.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/experimental/server/openapi/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/experimental/server/openapi/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/experimental/server/openapi/components.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/experimental/server/openapi/routing.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/experimental/server/openapi/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/experimental/utilities/openapi/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/experimental/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/experimental/utilities/openapi/director.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/experimental/utilities/openapi/formatters.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/experimental/utilities/openapi/json_schema_converter.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/experimental/utilities/openapi/models.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/experimental/utilities/openapi/parser.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/experimental/utilities/openapi/schemas.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/mcp_config.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/prompts/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/prompts/prompt.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/prompts/prompt_manager.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/py.typed +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/resources/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/resources/resource.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/resources/resource_manager.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/resources/template.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/resources/types.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/auth/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/auth/auth.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/auth/oauth_proxy.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/auth/providers/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/auth/providers/azure.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/auth/providers/bearer.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/auth/providers/github.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/auth/providers/google.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/auth/providers/in_memory.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/auth/providers/jwt.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/auth/providers/workos.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/auth/redirect_validation.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/context.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/dependencies.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/elicitation.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/http.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/low_level.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/middleware/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/middleware/error_handling.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/middleware/logging.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/middleware/middleware.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/middleware/rate_limiting.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/middleware/timing.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/openapi.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/proxy.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/sampling/handler.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/server/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/settings.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/tools/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/tools/tool.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/tools/tool_manager.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/tools/tool_transform.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/auth.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/cli.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/components.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/exceptions.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/http.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/inspect.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/json_schema.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/json_schema_type.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/logging.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/mcp_config.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/openapi.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/tests.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/types.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/cli/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/cli/test_cli.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/cli/test_config.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/cli/test_cursor.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/cli/test_install.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/cli/test_project_prepare.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/cli/test_run.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/cli/test_run_config.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/cli/test_run_with_uv.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/cli/test_server_args.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/cli/test_shared.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/cli/test_with_argv.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/client/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/client/auth/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/client/auth/test_oauth_client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/client/auth/test_oauth_token_expiry.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/client/test_client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/client/test_elicitation.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/client/test_logs.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/client/test_notifications.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/client/test_openapi_experimental.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/client/test_openapi_legacy.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/client/test_progress.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/client/test_roots.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/client/test_sampling.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/client/test_sse.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/client/test_stdio.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/client/test_streamable_http.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/client/transports/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/client/transports/test_uv_transport.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/conftest.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/contrib/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/contrib/test_bulk_tool_caller.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/contrib/test_component_manager.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/contrib/test_mcp_mixin.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/deprecated/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/deprecated/test_bearer_auth_provider.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/deprecated/test_dependencies.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/deprecated/test_deprecated.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/deprecated/test_mount_import_arg_order.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/deprecated/test_mount_separators.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/deprecated/test_output_schema_false.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/deprecated/test_proxy_client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/deprecated/test_resource_prefixes.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/deprecated/test_route_type_ignore.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/deprecated/test_settings.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/conftest.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/server/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/server/openapi/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/server/openapi/test_comprehensive.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/server/openapi/test_deepobject_style.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/server/openapi/test_end_to_end_compatibility.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/server/openapi/test_openapi_features.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/server/openapi/test_openapi_performance.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/server/openapi/test_parameter_collisions.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/server/openapi/test_performance_comparison.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/server/openapi/test_server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/utilities/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/utilities/openapi/conftest.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/utilities/openapi/test_allof_requestbody.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/utilities/openapi/test_director.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/utilities/openapi/test_legacy_compatibility.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/utilities/openapi/test_models.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/utilities/openapi/test_nullable_fields.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/utilities/openapi/test_parser.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/utilities/openapi/test_schemas.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/openapi_parser/utilities/openapi/test_transitive_references.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/experimental/sampling/test_openai_handler.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/integration_tests/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/integration_tests/auth/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/integration_tests/auth/test_github_provider_integration.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/integration_tests/conftest.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/integration_tests/test_github_mcp_remote.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/prompts/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/prompts/test_prompt.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/prompts/test_prompt_manager.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/resources/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/resources/test_file_resources.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/resources/test_function_resources.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/resources/test_resource_manager.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/resources/test_resource_template.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/resources/test_resource_template_meta.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/resources/test_resources.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/auth/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/auth/providers/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/auth/providers/test_azure.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/auth/providers/test_github.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/auth/providers/test_google.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/auth/providers/test_workos.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/auth/test_auth_provider.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/auth/test_jwt_provider.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/auth/test_oauth_proxy.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/auth/test_oauth_proxy_redirect_validation.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/auth/test_redirect_validation.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/auth/test_remote_auth_provider.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/auth/test_static_token_verifier.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/http/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/http/test_bearer_auth_backend.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/http/test_custom_routes.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/http/test_http_auth_middleware.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/http/test_http_dependencies.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/http/test_http_middleware.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/middleware/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/middleware/test_error_handling.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/middleware/test_logging.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/middleware/test_middleware.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/middleware/test_rate_limiting.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/middleware/test_timing.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/openapi/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/openapi/conftest.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/openapi/test_advanced_behavior.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/openapi/test_basic_functionality.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/openapi/test_configuration.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/openapi/test_deepobject_style.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/openapi/test_description_propagation.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/openapi/test_explode_integration.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/openapi/test_openapi_compatibility.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/openapi/test_openapi_path_parameters.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/openapi/test_optional_parameters.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/openapi/test_parameter_collisions.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/openapi/test_route_map_fn.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/proxy/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/proxy/test_proxy_client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/proxy/test_proxy_server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/proxy/test_stateful_proxy_client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/test_app_state.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/test_auth_integration.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/test_context.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/test_experimental_openapi_feature_flag.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/test_file_server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/test_import_server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/test_logging.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/test_mount.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/test_resource_prefix_formats.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/test_run_server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/test_server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/test_server_interactions.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/test_streamable_http_no_redirect.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/test_tool_annotations.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/test_tool_exclude_args.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/server/test_tool_transformation.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/test_examples.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/test_mcp_config.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/tools/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/tools/test_tool.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/tools/test_tool_future_annotations.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/tools/test_tool_manager.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/tools/test_tool_transform.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/utilities/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/utilities/openapi/conftest.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/utilities/openapi/test_nullable_fields.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/utilities/openapi/test_openapi.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/utilities/openapi/test_openapi_advanced.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/utilities/openapi/test_openapi_fastapi.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/utilities/openapi/test_openapi_output_schemas.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/utilities/test_cli.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/utilities/test_components.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/utilities/test_inspect.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/utilities/test_json_schema.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/utilities/test_json_schema_type.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/utilities/test_logging.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/utilities/test_tests.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/utilities/test_typeadapter.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/tests/utilities/test_types.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.2}/uv.lock +0 -0
|
@@ -4,55 +4,169 @@ icon: "list-check"
|
|
|
4
4
|
rss: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
<Update label="v2.12.
|
|
7
|
+
<Update label="v2.12.1" description="2025-09-06">
|
|
8
8
|
|
|
9
|
-
**[v2.12.
|
|
9
|
+
**[v2.12.1: OAuth to Joy](https://github.com/jlowin/fastmcp/releases/tag/v2.12.1)**
|
|
10
10
|
|
|
11
|
-
This release introduces
|
|
11
|
+
FastMCP 2.12.1 strengthens the OAuth proxy implementation based on extensive community testing and feedback. This release improves client storage reliability, adds PKCE forwarding for enhanced security, introduces configurable token endpoint authentication methods, and expands scope handling—all addressing real-world integration challenges discovered since 2.12.0. The enhanced test suite with mock providers ensures these improvements are robust and maintainable.
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## Breaking Changes
|
|
14
|
+
- **OAuth Proxy**: Users of built-in IDP integrations should note that `resource_server_url` has been renamed to `base_url` for clarity and consistency
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
## What's Changed
|
|
17
|
+
### Enhancements 🔧
|
|
18
|
+
* Make openai dependency optional by [@jlowin](https://github.com/jlowin) in [#1701](https://github.com/jlowin/fastmcp/pull/1701)
|
|
19
|
+
* Remove orphaned OAuth proxy code by [@jlowin](https://github.com/jlowin) in [#1722](https://github.com/jlowin/fastmcp/pull/1722)
|
|
20
|
+
* Expose valid scopes from OAuthProxy metadata by [@dmikusa](https://github.com/dmikusa) in [#1717](https://github.com/jlowin/fastmcp/pull/1717)
|
|
21
|
+
* OAuth proxy PKCE forwarding by [@jlowin](https://github.com/jlowin) in [#1733](https://github.com/jlowin/fastmcp/pull/1733)
|
|
22
|
+
* Add token_endpoint_auth_method parameter to OAuthProxy by [@jlowin](https://github.com/jlowin) in [#1736](https://github.com/jlowin/fastmcp/pull/1736)
|
|
23
|
+
* Clean up and enhance OAuth proxy tests with mock provider by [@jlowin](https://github.com/jlowin) in [#1738](https://github.com/jlowin/fastmcp/pull/1738)
|
|
24
|
+
### Fixes 🐞
|
|
25
|
+
* refactor: replace auth provider registry with ImportString by [@jlowin](https://github.com/jlowin) in [#1710](https://github.com/jlowin/fastmcp/pull/1710)
|
|
26
|
+
* Fix OAuth resource URL handling and WWW-Authenticate header by [@jlowin](https://github.com/jlowin) in [#1706](https://github.com/jlowin/fastmcp/pull/1706)
|
|
27
|
+
* Fix OAuth proxy client storage and add retry logic by [@jlowin](https://github.com/jlowin) in [#1732](https://github.com/jlowin/fastmcp/pull/1732)
|
|
28
|
+
### Docs 📚
|
|
29
|
+
* Fix documentation: use StreamableHttpTransport for headers in testing by [@jlowin](https://github.com/jlowin) in [#1702](https://github.com/jlowin/fastmcp/pull/1702)
|
|
30
|
+
* docs: add performance warnings for mounted servers and proxies by [@strawgate](https://github.com/strawgate) in [#1669](https://github.com/jlowin/fastmcp/pull/1669)
|
|
31
|
+
* Update documentation around scopes for google by [@jlowin](https://github.com/jlowin) in [#1703](https://github.com/jlowin/fastmcp/pull/1703)
|
|
32
|
+
* Add deployment information to quickstart by [@seanpwlms](https://github.com/seanpwlms) in [#1433](https://github.com/jlowin/fastmcp/pull/1433)
|
|
33
|
+
* Update quickstart by [@jlowin](https://github.com/jlowin) in [#1728](https://github.com/jlowin/fastmcp/pull/1728)
|
|
34
|
+
* Add development docs for FastMCP by [@jlowin](https://github.com/jlowin) in [#1719](https://github.com/jlowin/fastmcp/pull/1719)
|
|
35
|
+
### Other Changes 🦾
|
|
36
|
+
* Set generics without bounds to default=Any by [@strawgate](https://github.com/strawgate) in [#1648](https://github.com/jlowin/fastmcp/pull/1648)
|
|
16
37
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
- WorkOS
|
|
21
|
-
- Azure
|
|
38
|
+
## New Contributors
|
|
39
|
+
* [@dmikusa](https://github.com/dmikusa) made their first contribution in [#1717](https://github.com/jlowin/fastmcp/pull/1717)
|
|
40
|
+
* [@seanpwlms](https://github.com/seanpwlms) made their first contribution in [#1433](https://github.com/jlowin/fastmcp/pull/1433)
|
|
22
41
|
|
|
23
|
-
|
|
42
|
+
**Full Changelog**: [v2.12.0...v2.12.1](https://github.com/jlowin/fastmcp/compare/v2.12.0...v2.12.1)
|
|
24
43
|
|
|
25
|
-
|
|
44
|
+
</Update>
|
|
26
45
|
|
|
27
|
-
|
|
46
|
+
<Update label="v2.12.0" description="2025-08-31">
|
|
28
47
|
|
|
29
|
-
**
|
|
30
|
-
- Dependencies and requirements
|
|
31
|
-
- Transport settings
|
|
32
|
-
- Server entrypoints
|
|
33
|
-
- Metadata and descriptions
|
|
34
|
-
- Environment variables
|
|
48
|
+
**[v2.12.0: Auth to the Races](https://github.com/jlowin/fastmcp/releases/tag/v2.12.0)**
|
|
35
49
|
|
|
36
|
-
|
|
50
|
+
FastMCP 2.12 represents one of our most significant releases to date, both in scope and community involvement. After extensive testing and iteration with the community, we're shipping major improvements to authentication, configuration, and MCP feature adoption.
|
|
37
51
|
|
|
38
|
-
|
|
52
|
+
🔐 **OAuth Proxy for Broader Provider Support** addresses a fundamental challenge: while MCP requires Dynamic Client Registration (DCR), many popular OAuth providers don't support it. The new OAuth proxy bridges this gap, enabling FastMCP servers to authenticate with providers like GitHub, Google, WorkOS, and Azure through minimal configuration. These native integrations ship today, with more providers planned based on community needs.
|
|
39
53
|
|
|
40
|
-
|
|
54
|
+
📋 **Declarative JSON Configuration** introduces a standardized, portable way to describe and deploy MCP servers. The `fastmcp.json` configuration file becomes the single source of truth for dependencies, transport settings, entrypoints, and server metadata. This foundation sets the stage for future capabilities like transformations and remote sources, moving toward a world where MCP servers are as portable and shareable as container images.
|
|
41
55
|
|
|
42
|
-
|
|
43
|
-
- Maintains compatibility with all clients
|
|
44
|
-
- Encourages feature adoption without breaking existing integrations
|
|
45
|
-
- Provides a smooth upgrade path as client capabilities evolve
|
|
56
|
+
🧠 **Sampling API Fallback** tackles the chicken-and-egg problem limiting adoption of advanced MCP features. Sampling—where servers request LLM completions from clients—is powerful but underutilized due to limited client support. FastMCP now lets server authors define fallback handlers that generate sampling completions server-side when clients don't support the feature, encouraging adoption while maintaining compatibility.
|
|
46
57
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
58
|
+
This release took longer than usual to ship, and for good reason: the community's aggressive testing and feedback on the authentication system helped us reach a level of stability we're confident in. There's certainly more work ahead, but these foundations position FastMCP to handle increasingly complex use cases while remaining approachable for developers.
|
|
59
|
+
|
|
60
|
+
Thank you to our new contributors and everyone who tested preview builds. Your feedback directly shaped these features.
|
|
61
|
+
|
|
62
|
+
## What's Changed
|
|
63
|
+
### New Features 🎉
|
|
64
|
+
* Add OAuth proxy that allows authentication with social IDPs without DCR support by [@jlowin](https://github.com/jlowin) in [#1434](https://github.com/jlowin/fastmcp/pull/1434)
|
|
65
|
+
* feat: introduce declarative JSON configuration system by [@jlowin](https://github.com/jlowin) in [#1517](https://github.com/jlowin/fastmcp/pull/1517)
|
|
66
|
+
* ✨ Fallback to a Completions API when Sampling is not available by [@strawgate](https://github.com/strawgate) in [#1145](https://github.com/jlowin/fastmcp/pull/1145)
|
|
67
|
+
* Implement typed source system for FastMCP declarative configuration by [@jlowin](https://github.com/jlowin) in [#1607](https://github.com/jlowin/fastmcp/pull/1607)
|
|
68
|
+
### Enhancements 🔧
|
|
69
|
+
* Support importing custom_route endpoints when mounting servers by [@jlowin](https://github.com/jlowin) in [#1470](https://github.com/jlowin/fastmcp/pull/1470)
|
|
70
|
+
* Remove unnecessary asserts by [@jlowin](https://github.com/jlowin) in [#1484](https://github.com/jlowin/fastmcp/pull/1484)
|
|
71
|
+
* Add Claude issue triage by [@jlowin](https://github.com/jlowin) in [#1510](https://github.com/jlowin/fastmcp/pull/1510)
|
|
72
|
+
* Inline dedupe prompt by [@jlowin](https://github.com/jlowin) in [#1512](https://github.com/jlowin/fastmcp/pull/1512)
|
|
73
|
+
* Improve stdio and mcp_config clean-up by [@strawgate](https://github.com/strawgate) in [#1444](https://github.com/jlowin/fastmcp/pull/1444)
|
|
74
|
+
* involve kwargs to pass parameters on creating RichHandler for logging customization. by [@itaru2622](https://github.com/itaru2622) in [#1504](https://github.com/jlowin/fastmcp/pull/1504)
|
|
75
|
+
* Move SDK docs generation to post-merge workflow by [@jlowin](https://github.com/jlowin) in [#1513](https://github.com/jlowin/fastmcp/pull/1513)
|
|
76
|
+
* Improve label triage guidance by [@jlowin](https://github.com/jlowin) in [#1516](https://github.com/jlowin/fastmcp/pull/1516)
|
|
77
|
+
* Add code review guidelines for agents by [@jlowin](https://github.com/jlowin) in [#1520](https://github.com/jlowin/fastmcp/pull/1520)
|
|
78
|
+
* Remove trailing slash in unit tests by [@jlowin](https://github.com/jlowin) in [#1535](https://github.com/jlowin/fastmcp/pull/1535)
|
|
79
|
+
* Update OAuth callback UI branding by [@jlowin](https://github.com/jlowin) in [#1536](https://github.com/jlowin/fastmcp/pull/1536)
|
|
80
|
+
* Fix Marvin workflow to support development tools by [@jlowin](https://github.com/jlowin) in [#1537](https://github.com/jlowin/fastmcp/pull/1537)
|
|
81
|
+
* Add mounted_components_raise_on_load_error setting for debugging by [@jlowin](https://github.com/jlowin) in [#1534](https://github.com/jlowin/fastmcp/pull/1534)
|
|
82
|
+
* feat: Add --workspace flag to fastmcp install cursor by [@jlowin](https://github.com/jlowin) in [#1522](https://github.com/jlowin/fastmcp/pull/1522)
|
|
83
|
+
* switch from `pyright` to `ty` by [@zzstoatzz](https://github.com/zzstoatzz) in [#1545](https://github.com/jlowin/fastmcp/pull/1545)
|
|
84
|
+
* feat: trigger Marvin workflow on PR body content by [@jlowin](https://github.com/jlowin) in [#1549](https://github.com/jlowin/fastmcp/pull/1549)
|
|
85
|
+
* Add WorkOS and Azure OAuth providers by [@jlowin](https://github.com/jlowin) in [#1550](https://github.com/jlowin/fastmcp/pull/1550)
|
|
86
|
+
* Adjust timeout for slow MCP Server shutdown test by [@strawgate](https://github.com/strawgate) in [#1561](https://github.com/jlowin/fastmcp/pull/1561)
|
|
87
|
+
* Update banner by [@jlowin](https://github.com/jlowin) in [#1567](https://github.com/jlowin/fastmcp/pull/1567)
|
|
88
|
+
* Added import of AuthProxy to auth __init__ by [@KaliszS](https://github.com/KaliszS) in [#1568](https://github.com/jlowin/fastmcp/pull/1568)
|
|
89
|
+
* Add configurable redirect URI validation for OAuth providers by [@jlowin](https://github.com/jlowin) in [#1582](https://github.com/jlowin/fastmcp/pull/1582)
|
|
90
|
+
* Remove invalid-argument-type ignore and fix type errors by [@jlowin](https://github.com/jlowin) in [#1588](https://github.com/jlowin/fastmcp/pull/1588)
|
|
91
|
+
* Remove generate-schema from public CLI by [@jlowin](https://github.com/jlowin) in [#1591](https://github.com/jlowin/fastmcp/pull/1591)
|
|
92
|
+
* Skip flaky windows test / mulit-client garbage collection by [@jlowin](https://github.com/jlowin) in [#1592](https://github.com/jlowin/fastmcp/pull/1592)
|
|
93
|
+
* Add setting to disable logging configuration by [@isra17](https://github.com/isra17) in [#1575](https://github.com/jlowin/fastmcp/pull/1575)
|
|
94
|
+
* Improve debug logging for nested Servers / Clients by [@strawgate](https://github.com/strawgate) in [#1604](https://github.com/jlowin/fastmcp/pull/1604)
|
|
95
|
+
* Add GitHub pull request template by [@strawgate](https://github.com/strawgate) in [#1581](https://github.com/jlowin/fastmcp/pull/1581)
|
|
96
|
+
* chore: Automate docs and schema updates via PRs by [@jlowin](https://github.com/jlowin) in [#1611](https://github.com/jlowin/fastmcp/pull/1611)
|
|
97
|
+
* Experiment with haiku for limited workflows by [@jlowin](https://github.com/jlowin) in [#1613](https://github.com/jlowin/fastmcp/pull/1613)
|
|
98
|
+
* feat: Improve GitHub workflow automation for schema and SDK docs by [@jlowin](https://github.com/jlowin) in [#1615](https://github.com/jlowin/fastmcp/pull/1615)
|
|
99
|
+
* Consolidate server loading logic into FileSystemSource by [@jlowin](https://github.com/jlowin) in [#1614](https://github.com/jlowin/fastmcp/pull/1614)
|
|
100
|
+
* Prevent Haiku Marvin from commenting when there are no duplicates by [@jlowin](https://github.com/jlowin) in [#1622](https://github.com/jlowin/fastmcp/pull/1622)
|
|
101
|
+
* chore: Add clarifying note to automated PR bodies by [@jlowin](https://github.com/jlowin) in [#1623](https://github.com/jlowin/fastmcp/pull/1623)
|
|
102
|
+
* feat: introduce inline snapshots by [@strawgate](https://github.com/strawgate) in [#1605](https://github.com/jlowin/fastmcp/pull/1605)
|
|
103
|
+
* Improve fastmcp.json environment configuration and project-based deployments by [@jlowin](https://github.com/jlowin) in [#1631](https://github.com/jlowin/fastmcp/pull/1631)
|
|
104
|
+
* fix: allow passing query params in OAuthProxy upstream authorization url by [@danb27](https://github.com/danb27) in [#1630](https://github.com/jlowin/fastmcp/pull/1630)
|
|
105
|
+
* Support multiple --with-editable flags in CLI commands by [@jlowin](https://github.com/jlowin) in [#1634](https://github.com/jlowin/fastmcp/pull/1634)
|
|
106
|
+
* feat: support comma separated oauth scopes by [@jlowin](https://github.com/jlowin) in [#1642](https://github.com/jlowin/fastmcp/pull/1642)
|
|
107
|
+
* Add allowed_client_redirect_uris to OAuth provider subclasses by [@jlowin](https://github.com/jlowin) in [#1662](https://github.com/jlowin/fastmcp/pull/1662)
|
|
108
|
+
* Consolidate CLI config parsing and prevent infinite loops by [@jlowin](https://github.com/jlowin) in [#1660](https://github.com/jlowin/fastmcp/pull/1660)
|
|
109
|
+
* Internal refactor: mcp server config by [@jlowin](https://github.com/jlowin) in [#1672](https://github.com/jlowin/fastmcp/pull/1672)
|
|
110
|
+
* Refactor Environment to support multiple runtime types by [@jlowin](https://github.com/jlowin) in [#1673](https://github.com/jlowin/fastmcp/pull/1673)
|
|
111
|
+
* Add type field to Environment base class by [@jlowin](https://github.com/jlowin) in [#1676](https://github.com/jlowin/fastmcp/pull/1676)
|
|
112
|
+
### Fixes 🐞
|
|
113
|
+
* Fix breaking change: restore output_schema=False compatibility by [@jlowin](https://github.com/jlowin) in [#1482](https://github.com/jlowin/fastmcp/pull/1482)
|
|
114
|
+
* Fix #1506: Update tool filtering documentation from _meta to meta by [@maybenotconnor](https://github.com/maybenotconnor) in [#1511](https://github.com/jlowin/fastmcp/pull/1511)
|
|
115
|
+
* Fix pytest warnings by [@jlowin](https://github.com/jlowin) in [#1559](https://github.com/jlowin/fastmcp/pull/1559)
|
|
116
|
+
* nest schemas under assets by [@jlowin](https://github.com/jlowin) in [#1593](https://github.com/jlowin/fastmcp/pull/1593)
|
|
117
|
+
* Skip flaky windows test by [@jlowin](https://github.com/jlowin) in [#1596](https://github.com/jlowin/fastmcp/pull/1596)
|
|
118
|
+
* ACTUALLY move schemas to fastmcp.json by [@jlowin](https://github.com/jlowin) in [#1597](https://github.com/jlowin/fastmcp/pull/1597)
|
|
119
|
+
* Fix and centralize CLI path resolution by [@jlowin](https://github.com/jlowin) in [#1590](https://github.com/jlowin/fastmcp/pull/1590)
|
|
120
|
+
* Remove client info modifications by [@jlowin](https://github.com/jlowin) in [#1620](https://github.com/jlowin/fastmcp/pull/1620)
|
|
121
|
+
* Fix $defs being discarded in input schema of transformed tool by [@pldesch-chift](https://github.com/pldesch-chift) in [#1578](https://github.com/jlowin/fastmcp/pull/1578)
|
|
122
|
+
* Fix enum elicitation to use inline schemas for MCP compatibility by [@jlowin](https://github.com/jlowin) in [#1632](https://github.com/jlowin/fastmcp/pull/1632)
|
|
123
|
+
* Reuse session for `StdioTransport` in `Client.new` by [@strawgate](https://github.com/strawgate) in [#1635](https://github.com/jlowin/fastmcp/pull/1635)
|
|
124
|
+
* Feat: Configurable LoggingMiddleware payload serialization by [@vl-kp](https://github.com/vl-kp) in [#1636](https://github.com/jlowin/fastmcp/pull/1636)
|
|
125
|
+
* Fix OAuth redirect URI validation for DCR compatibility by [@jlowin](https://github.com/jlowin) in [#1661](https://github.com/jlowin/fastmcp/pull/1661)
|
|
126
|
+
* Add default scope handling in OAuth proxy by [@romanusyk](https://github.com/romanusyk) in [#1667](https://github.com/jlowin/fastmcp/pull/1667)
|
|
127
|
+
* Fix OAuth token expiry handling by [@jlowin](https://github.com/jlowin) in [#1671](https://github.com/jlowin/fastmcp/pull/1671)
|
|
128
|
+
* Add resource_server_url parameter to OAuth proxy providers by [@jlowin](https://github.com/jlowin) in [#1682](https://github.com/jlowin/fastmcp/pull/1682)
|
|
129
|
+
### Breaking Changes 🛫
|
|
130
|
+
* Enhance inspect command with structured output and format options by [@jlowin](https://github.com/jlowin) in [#1481](https://github.com/jlowin/fastmcp/pull/1481)
|
|
131
|
+
### Docs 📚
|
|
132
|
+
* Update changelog by [@jlowin](https://github.com/jlowin) in [#1453](https://github.com/jlowin/fastmcp/pull/1453)
|
|
133
|
+
* Update banner by [@jlowin](https://github.com/jlowin) in [#1472](https://github.com/jlowin/fastmcp/pull/1472)
|
|
134
|
+
* Update logo files by [@jlowin](https://github.com/jlowin) in [#1473](https://github.com/jlowin/fastmcp/pull/1473)
|
|
135
|
+
* Update deployment docs by [@jlowin](https://github.com/jlowin) in [#1486](https://github.com/jlowin/fastmcp/pull/1486)
|
|
136
|
+
* Update FastMCP Cloud screenshot by [@jlowin](https://github.com/jlowin) in [#1487](https://github.com/jlowin/fastmcp/pull/1487)
|
|
137
|
+
* Update authentication note in docs by [@jlowin](https://github.com/jlowin) in [#1488](https://github.com/jlowin/fastmcp/pull/1488)
|
|
138
|
+
* chore: Update installation.mdx version snippet by [@thomas-te](https://github.com/thomas-te) in [#1496](https://github.com/jlowin/fastmcp/pull/1496)
|
|
139
|
+
* Update fastmcp cloud server requirements by [@jlowin](https://github.com/jlowin) in [#1497](https://github.com/jlowin/fastmcp/pull/1497)
|
|
140
|
+
* Fix oauth pyright type checking by [@strawgate](https://github.com/strawgate) in [#1498](https://github.com/jlowin/fastmcp/pull/1498)
|
|
141
|
+
* docs: Fix type annotation in return value documentation by [@MaikelVeen](https://github.com/MaikelVeen) in [#1499](https://github.com/jlowin/fastmcp/pull/1499)
|
|
142
|
+
* Fix PromptMessage usage in docs example by [@jlowin](https://github.com/jlowin) in [#1515](https://github.com/jlowin/fastmcp/pull/1515)
|
|
143
|
+
* Create CODE_OF_CONDUCT.md by [@jlowin](https://github.com/jlowin) in [#1523](https://github.com/jlowin/fastmcp/pull/1523)
|
|
144
|
+
* Fixed wrong import path in new docs page by [@KaliszS](https://github.com/KaliszS) in [#1538](https://github.com/jlowin/fastmcp/pull/1538)
|
|
145
|
+
* Document symmetric key JWT verification support by [@jlowin](https://github.com/jlowin) in [#1586](https://github.com/jlowin/fastmcp/pull/1586)
|
|
146
|
+
* Update fastmcp.json schema path by [@jlowin](https://github.com/jlowin) in [#1595](https://github.com/jlowin/fastmcp/pull/1595)
|
|
147
|
+
### Dependencies 📦
|
|
148
|
+
* Bump actions/create-github-app-token from 1 to 2 by [@dependabot](https://github.com/dependabot)[bot] in [#1436](https://github.com/jlowin/fastmcp/pull/1436)
|
|
149
|
+
* Bump astral-sh/setup-uv from 4 to 6 by [@dependabot](https://github.com/dependabot)[bot] in [#1532](https://github.com/jlowin/fastmcp/pull/1532)
|
|
150
|
+
* Bump actions/checkout from 4 to 5 by [@dependabot](https://github.com/dependabot)[bot] in [#1533](https://github.com/jlowin/fastmcp/pull/1533)
|
|
151
|
+
### Other Changes 🦾
|
|
152
|
+
* Add dedupe workflow by [@jlowin](https://github.com/jlowin) in [#1454](https://github.com/jlowin/fastmcp/pull/1454)
|
|
153
|
+
* Update AGENTS.md by [@jlowin](https://github.com/jlowin) in [#1471](https://github.com/jlowin/fastmcp/pull/1471)
|
|
154
|
+
* Give Marvin the power of the Internet by [@strawgate](https://github.com/strawgate) in [#1475](https://github.com/jlowin/fastmcp/pull/1475)
|
|
155
|
+
* Update `just` error message for static checks by [@jlowin](https://github.com/jlowin) in [#1483](https://github.com/jlowin/fastmcp/pull/1483)
|
|
156
|
+
* Remove labeler by [@jlowin](https://github.com/jlowin) in [#1509](https://github.com/jlowin/fastmcp/pull/1509)
|
|
157
|
+
* update aproto server to handle rich links by [@zzstoatzz](https://github.com/zzstoatzz) in [#1556](https://github.com/jlowin/fastmcp/pull/1556)
|
|
158
|
+
* fix: enable triage bot for fork PRs using pull_request_target by [@jlowin](https://github.com/jlowin) in [#1557](https://github.com/jlowin/fastmcp/pull/1557)
|
|
159
|
+
|
|
160
|
+
## New Contributors
|
|
161
|
+
* [@thomas-te](https://github.com/thomas-te) made their first contribution in [#1496](https://github.com/jlowin/fastmcp/pull/1496)
|
|
162
|
+
* [@maybenotconnor](https://github.com/maybenotconnor) made their first contribution in [#1511](https://github.com/jlowin/fastmcp/pull/1511)
|
|
163
|
+
* [@MaikelVeen](https://github.com/MaikelVeen) made their first contribution in [#1499](https://github.com/jlowin/fastmcp/pull/1499)
|
|
164
|
+
* [@KaliszS](https://github.com/KaliszS) made their first contribution in [#1538](https://github.com/jlowin/fastmcp/pull/1538)
|
|
165
|
+
* [@isra17](https://github.com/isra17) made their first contribution in [#1575](https://github.com/jlowin/fastmcp/pull/1575)
|
|
166
|
+
* [@marvin-context-protocol](https://github.com/marvin-context-protocol)[bot] made their first contribution in [#1616](https://github.com/jlowin/fastmcp/pull/1616)
|
|
167
|
+
* [@pldesch-chift](https://github.com/pldesch-chift) made their first contribution in [#1578](https://github.com/jlowin/fastmcp/pull/1578)
|
|
168
|
+
* [@vl-kp](https://github.com/vl-kp) made their first contribution in [#1636](https://github.com/jlowin/fastmcp/pull/1636)
|
|
169
|
+
* [@romanusyk](https://github.com/romanusyk) made their first contribution in [#1667](https://github.com/jlowin/fastmcp/pull/1667)
|
|
56
170
|
|
|
57
171
|
**Full Changelog**: [v2.11.3...v2.12.0](https://github.com/jlowin/fastmcp/compare/v2.11.3...v2.12.0)
|
|
58
172
|
|
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
"default": "system",
|
|
5
5
|
"strict": false
|
|
6
6
|
},
|
|
7
|
+
"interaction": {
|
|
8
|
+
"drilldown": false
|
|
9
|
+
},
|
|
7
10
|
"background": {
|
|
8
11
|
"color": {
|
|
9
12
|
"dark": "#222831",
|
|
@@ -115,10 +118,7 @@
|
|
|
115
118
|
{
|
|
116
119
|
"group": "Essentials",
|
|
117
120
|
"icon": "cube",
|
|
118
|
-
"pages": [
|
|
119
|
-
"clients/client",
|
|
120
|
-
"clients/transports"
|
|
121
|
-
]
|
|
121
|
+
"pages": ["clients/client", "clients/transports"]
|
|
122
122
|
},
|
|
123
123
|
{
|
|
124
124
|
"group": "Core Operations",
|
|
@@ -144,10 +144,7 @@
|
|
|
144
144
|
{
|
|
145
145
|
"group": "Authentication",
|
|
146
146
|
"icon": "user-shield",
|
|
147
|
-
"pages": [
|
|
148
|
-
"clients/auth/oauth",
|
|
149
|
-
"clients/auth/bearer"
|
|
150
|
-
]
|
|
147
|
+
"pages": ["clients/auth/oauth", "clients/auth/bearer"]
|
|
151
148
|
}
|
|
152
149
|
]
|
|
153
150
|
},
|
|
@@ -162,7 +159,7 @@
|
|
|
162
159
|
"integrations/azure",
|
|
163
160
|
"integrations/github",
|
|
164
161
|
"integrations/google",
|
|
165
|
-
"integrations/workos
|
|
162
|
+
"integrations/workos"
|
|
166
163
|
]
|
|
167
164
|
},
|
|
168
165
|
{
|
|
@@ -225,10 +222,7 @@
|
|
|
225
222
|
"tab": "Documentation"
|
|
226
223
|
},
|
|
227
224
|
{
|
|
228
|
-
"pages": [
|
|
229
|
-
"updates",
|
|
230
|
-
"changelog"
|
|
231
|
-
],
|
|
225
|
+
"pages": ["updates", "changelog"],
|
|
232
226
|
"tab": "What's New"
|
|
233
227
|
},
|
|
234
228
|
{
|
|
@@ -26,7 +26,7 @@ production use with enterprise identity providers.
|
|
|
26
26
|
|
|
27
27
|
## Classes
|
|
28
28
|
|
|
29
|
-
### `ProxyDCRClient` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#
|
|
29
|
+
### `ProxyDCRClient` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#L58" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
Client for DCR proxy with configurable redirect URI validation.
|
|
@@ -56,7 +56,7 @@ arise from accepting arbitrary redirect URIs.
|
|
|
56
56
|
|
|
57
57
|
**Methods:**
|
|
58
58
|
|
|
59
|
-
#### `validate_redirect_uri` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#
|
|
59
|
+
#### `validate_redirect_uri` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#L97" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
60
60
|
|
|
61
61
|
```python
|
|
62
62
|
validate_redirect_uri(self, redirect_uri: AnyUrl | None) -> AnyUrl
|
|
@@ -70,7 +70,7 @@ This is essential for cached token scenarios where the client may
|
|
|
70
70
|
reconnect with a different port.
|
|
71
71
|
|
|
72
72
|
|
|
73
|
-
### `OAuthProxy` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#
|
|
73
|
+
### `OAuthProxy` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#L123" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
74
74
|
|
|
75
75
|
|
|
76
76
|
OAuth provider that presents a DCR-compliant interface while proxying to non-DCR IDPs.
|
|
@@ -181,7 +181,7 @@ Handles provider-specific requirements:
|
|
|
181
181
|
|
|
182
182
|
**Methods:**
|
|
183
183
|
|
|
184
|
-
#### `get_client` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#
|
|
184
|
+
#### `get_client` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#L368" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
185
185
|
|
|
186
186
|
```python
|
|
187
187
|
get_client(self, client_id: str) -> OAuthClientInformationFull | None
|
|
@@ -193,7 +193,7 @@ provided to the DCR client during registration, not the upstream client ID.
|
|
|
193
193
|
For unregistered clients, returns None (which will raise an error in the SDK).
|
|
194
194
|
|
|
195
195
|
|
|
196
|
-
#### `register_client` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#
|
|
196
|
+
#### `register_client` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#L378" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
197
197
|
|
|
198
198
|
```python
|
|
199
199
|
register_client(self, client_info: OAuthClientInformationFull) -> None
|
|
@@ -207,7 +207,7 @@ redirect URI will likely be localhost or unknown to the proxied IDP. The
|
|
|
207
207
|
proxied IDP only knows about this server's fixed redirect URI.
|
|
208
208
|
|
|
209
209
|
|
|
210
|
-
#### `authorize` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#
|
|
210
|
+
#### `authorize` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#L421" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
211
211
|
|
|
212
212
|
```python
|
|
213
213
|
authorize(self, client: OAuthClientInformationFull, params: AuthorizationParams) -> str
|
|
@@ -217,11 +217,12 @@ Start OAuth transaction and redirect to upstream IdP.
|
|
|
217
217
|
|
|
218
218
|
This implements the DCR-compliant proxy pattern:
|
|
219
219
|
1. Store transaction with client details and PKCE challenge
|
|
220
|
-
2.
|
|
221
|
-
3.
|
|
220
|
+
2. Generate proxy's own PKCE parameters if forwarding is enabled
|
|
221
|
+
3. Use transaction ID as state for IdP
|
|
222
|
+
4. Redirect to IdP with our fixed callback URL and proxy's PKCE
|
|
222
223
|
|
|
223
224
|
|
|
224
|
-
#### `load_authorization_code` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#
|
|
225
|
+
#### `load_authorization_code` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#L504" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
225
226
|
|
|
226
227
|
```python
|
|
227
228
|
load_authorization_code(self, client: OAuthClientInformationFull, authorization_code: str) -> AuthorizationCode | None
|
|
@@ -233,7 +234,7 @@ Look up our client code and return authorization code object
|
|
|
233
234
|
with PKCE challenge for validation.
|
|
234
235
|
|
|
235
236
|
|
|
236
|
-
#### `exchange_authorization_code` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#
|
|
237
|
+
#### `exchange_authorization_code` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#L546" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
237
238
|
|
|
238
239
|
```python
|
|
239
240
|
exchange_authorization_code(self, client: OAuthClientInformationFull, authorization_code: AuthorizationCode) -> OAuthToken
|
|
@@ -245,7 +246,7 @@ For the DCR-compliant proxy flow, we return the IdP tokens that were obtained
|
|
|
245
246
|
during the IdP callback exchange. PKCE validation is handled by the MCP framework.
|
|
246
247
|
|
|
247
248
|
|
|
248
|
-
#### `load_refresh_token` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#
|
|
249
|
+
#### `load_refresh_token` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#L613" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
249
250
|
|
|
250
251
|
```python
|
|
251
252
|
load_refresh_token(self, client: OAuthClientInformationFull, refresh_token: str) -> RefreshToken | None
|
|
@@ -254,7 +255,7 @@ load_refresh_token(self, client: OAuthClientInformationFull, refresh_token: str)
|
|
|
254
255
|
Load refresh token from local storage.
|
|
255
256
|
|
|
256
257
|
|
|
257
|
-
#### `exchange_refresh_token` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#
|
|
258
|
+
#### `exchange_refresh_token` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#L621" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
258
259
|
|
|
259
260
|
```python
|
|
260
261
|
exchange_refresh_token(self, client: OAuthClientInformationFull, refresh_token: RefreshToken, scopes: list[str]) -> OAuthToken
|
|
@@ -263,7 +264,7 @@ exchange_refresh_token(self, client: OAuthClientInformationFull, refresh_token:
|
|
|
263
264
|
Exchange refresh token for new access token using authlib.
|
|
264
265
|
|
|
265
266
|
|
|
266
|
-
#### `load_access_token` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#
|
|
267
|
+
#### `load_access_token` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#L697" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
267
268
|
|
|
268
269
|
```python
|
|
269
270
|
load_access_token(self, token: str) -> AccessToken | None
|
|
@@ -275,7 +276,7 @@ Delegates to the JWT verifier which handles signature validation,
|
|
|
275
276
|
expiration checking, and claims validation using the upstream JWKS.
|
|
276
277
|
|
|
277
278
|
|
|
278
|
-
#### `revoke_token` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#
|
|
279
|
+
#### `revoke_token` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#L714" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
279
280
|
|
|
280
281
|
```python
|
|
281
282
|
revoke_token(self, token: AccessToken | RefreshToken) -> None
|
|
@@ -287,7 +288,7 @@ Removes tokens from local storage and attempts to revoke them with
|
|
|
287
288
|
the upstream server if a revocation endpoint is configured.
|
|
288
289
|
|
|
289
290
|
|
|
290
|
-
#### `get_routes` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#
|
|
291
|
+
#### `get_routes` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/oauth_proxy.py#L758" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
291
292
|
|
|
292
293
|
```python
|
|
293
294
|
get_routes(self, mcp_path: str | None = None, mcp_endpoint: Any | None = None) -> list[Route]
|
|
@@ -5,6 +5,58 @@ icon: "sparkles"
|
|
|
5
5
|
tag: NEW
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
<Update label="FastMCP 2.12" description="December 31, 2024" tags={["Releases"]}>
|
|
9
|
+
<Card
|
|
10
|
+
title="FastMCP 2.12: Auth to the Races"
|
|
11
|
+
href="https://github.com/jlowin/fastmcp/releases/tag/v2.12.0"
|
|
12
|
+
cta="Read the release notes"
|
|
13
|
+
>
|
|
14
|
+
FastMCP 2.12 represents one of our most significant releases to date. After extensive testing and iteration with the community, we're shipping major improvements to authentication, configuration, and MCP feature adoption.
|
|
15
|
+
|
|
16
|
+
🔐 **OAuth Proxy** bridges the gap for providers that don't support Dynamic Client Registration, enabling authentication with GitHub, Google, WorkOS, and Azure through minimal configuration.
|
|
17
|
+
|
|
18
|
+
📋 **Declarative JSON Configuration** introduces `fastmcp.json` as the single source of truth for server settings, making MCP servers as portable and shareable as container images.
|
|
19
|
+
|
|
20
|
+
🧠 **Sampling API Fallback** tackles adoption challenges by letting servers generate completions server-side when clients don't support the feature, encouraging innovation while maintaining compatibility.
|
|
21
|
+
</Card>
|
|
22
|
+
</Update>
|
|
23
|
+
|
|
24
|
+
<Update label="FastMCP 2.11" description="December 13, 2024" tags={["Releases"]}>
|
|
25
|
+
<Card
|
|
26
|
+
title="FastMCP 2.11: Auth to a Good Start"
|
|
27
|
+
href="https://github.com/jlowin/fastmcp/releases/tag/v2.11.0"
|
|
28
|
+
cta="Read the release notes"
|
|
29
|
+
>
|
|
30
|
+
FastMCP 2.11 brings enterprise-ready authentication and dramatic performance improvements.
|
|
31
|
+
|
|
32
|
+
🔒 **Comprehensive OAuth 2.1 Support** with WorkOS AuthKit integration, Dynamic Client Registration, and support for separate resource and authorization servers.
|
|
33
|
+
|
|
34
|
+
⚡ **Experimental OpenAPI Parser** delivers dramatic performance gains through single-pass schema processing and optimized memory usage (enable with environment variable).
|
|
35
|
+
|
|
36
|
+
💾 **Enhanced State Management** provides persistent state across tool calls with a simple dictionary interface, improving context handling and type annotations.
|
|
37
|
+
|
|
38
|
+
This release emphasizes speed and simplicity while setting the foundation for future enterprise features.
|
|
39
|
+
</Card>
|
|
40
|
+
</Update>
|
|
41
|
+
|
|
42
|
+
<Update label="FastMCP 2.10" description="November 21, 2024" tags={["Releases"]}>
|
|
43
|
+
<Card
|
|
44
|
+
title="FastMCP 2.10: Great Spec-tations"
|
|
45
|
+
href="https://github.com/jlowin/fastmcp/releases/tag/v2.10.0"
|
|
46
|
+
cta="Read the release notes"
|
|
47
|
+
>
|
|
48
|
+
FastMCP 2.10 achieves full compliance with the 6/18/2025 MCP specification update, introducing powerful new communication patterns.
|
|
49
|
+
|
|
50
|
+
💬 **Elicitation Support** enables dynamic server-client communication and "human-in-the-loop" workflows, allowing servers to request additional information during execution.
|
|
51
|
+
|
|
52
|
+
📊 **Output Schemas** provide structured outputs for tools, making results more predictable and easier to parse programmatically.
|
|
53
|
+
|
|
54
|
+
🛠️ **Enhanced HTTP Routing** with OpenAPI extensions support and configurable algorithms for more flexible API integration.
|
|
55
|
+
|
|
56
|
+
This release includes a breaking change to `client.call_tool()` return signatures but significantly expands the interaction capabilities of MCP servers.
|
|
57
|
+
</Card>
|
|
58
|
+
</Update>
|
|
59
|
+
|
|
8
60
|
<Update label="FastMCP 2.9" description="June 23, 2025" tags={["Releases", "Blog Posts"]}>
|
|
9
61
|
<Card
|
|
10
62
|
title="FastMCP 2.9: MCP-Native Middleware" href="https://www.jlowin.dev/blog/fastmcp-2-9-middleware"
|
{fastmcp-2.12.1 → fastmcp-2.12.2}/src/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py
RENAMED
|
@@ -36,7 +36,7 @@ EnvironmentType: TypeAlias = UVEnvironment
|
|
|
36
36
|
class Deployment(BaseModel):
|
|
37
37
|
"""Configuration for server deployment and runtime settings."""
|
|
38
38
|
|
|
39
|
-
transport: Literal["stdio", "http", "sse"] | None = Field(
|
|
39
|
+
transport: Literal["stdio", "http", "sse", "streamable-http"] | None = Field(
|
|
40
40
|
default=None,
|
|
41
41
|
description="Transport protocol to use",
|
|
42
42
|
)
|
|
@@ -248,13 +248,13 @@ class TestConfigValidation:
|
|
|
248
248
|
deployment={"transport": "invalid_transport"}, # type: ignore[arg-type]
|
|
249
249
|
)
|
|
250
250
|
|
|
251
|
-
def
|
|
252
|
-
"""Test that streamable-http transport is
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
251
|
+
def test_streamable_http_transport_accepted(self):
|
|
252
|
+
"""Test that streamable-http transport is accepted as a valid value."""
|
|
253
|
+
config = MCPServerConfig(
|
|
254
|
+
source={"path": "server.py"},
|
|
255
|
+
deployment={"transport": "streamable-http"}, # type: ignore[arg-type]
|
|
256
|
+
)
|
|
257
|
+
assert config.deployment.transport == "streamable-http"
|
|
258
258
|
|
|
259
259
|
def test_invalid_log_level_rejected(self):
|
|
260
260
|
"""Test that invalid log level values are rejected."""
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"""Test that the generated JSON schema has the correct structure."""
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import pytest
|
|
4
|
+
|
|
5
|
+
from fastmcp.utilities.mcp_server_config.v1.mcp_server_config import (
|
|
6
|
+
Deployment,
|
|
7
|
+
generate_schema,
|
|
8
|
+
)
|
|
4
9
|
|
|
5
10
|
|
|
6
11
|
def test_schema_has_correct_id():
|
|
@@ -97,6 +102,7 @@ def test_schema_transport_enum():
|
|
|
97
102
|
assert "stdio" in valid_transports
|
|
98
103
|
assert "http" in valid_transports
|
|
99
104
|
assert "sse" in valid_transports
|
|
105
|
+
assert "streamable-http" in valid_transports
|
|
100
106
|
break
|
|
101
107
|
elif "properties" in deploy_schema:
|
|
102
108
|
transport_schema = deploy_schema["properties"].get("transport", {})
|
|
@@ -107,6 +113,7 @@ def test_schema_transport_enum():
|
|
|
107
113
|
assert "stdio" in valid_transports
|
|
108
114
|
assert "http" in valid_transports
|
|
109
115
|
assert "sse" in valid_transports
|
|
116
|
+
assert "streamable-http" in valid_transports
|
|
110
117
|
break
|
|
111
118
|
|
|
112
119
|
|
|
@@ -147,3 +154,19 @@ def test_schema_log_level_enum():
|
|
|
147
154
|
assert "ERROR" in valid_levels
|
|
148
155
|
assert "CRITICAL" in valid_levels
|
|
149
156
|
break
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
@pytest.mark.parametrize(
|
|
160
|
+
"transport",
|
|
161
|
+
[
|
|
162
|
+
"streamable-http",
|
|
163
|
+
"http",
|
|
164
|
+
"stdio",
|
|
165
|
+
"sse",
|
|
166
|
+
None,
|
|
167
|
+
],
|
|
168
|
+
)
|
|
169
|
+
def test_transport_values_accepted(transport):
|
|
170
|
+
"""Test that all valid transport values are accepted."""
|
|
171
|
+
deployment = Deployment(transport=transport)
|
|
172
|
+
assert deployment.transport == transport
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|