fastmcp 2.11.0__tar.gz → 2.11.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.11.0 → fastmcp-2.11.1}/PKG-INFO +1 -1
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/changelog.mdx +105 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/clients/auth/bearer.mdx +0 -1
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/docs.json +8 -7
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/authkit.mdx +7 -7
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/chatgpt.mdx +1 -1
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/claude-code.mdx +0 -1
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/eunomia-authorization.mdx +0 -1
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/mcp-json-configuration.mdx +1 -1
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/openai.mdx +0 -1
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/permit.mdx +1 -2
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/patterns/decorating-methods.mdx +2 -2
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-cli.mdx +2 -2
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-run.mdx +14 -8
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-auth-oauth.mdx +40 -51
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-transports.mdx +31 -25
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-prompts-prompt.mdx +7 -7
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-resources-resource.mdx +14 -14
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-resources-template.mdx +18 -18
- fastmcp-2.11.1/docs/python-sdk/fastmcp-server-auth-auth.mdx +124 -0
- fastmcp-2.11.1/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +13 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +10 -10
- fastmcp-2.11.1/docs/python-sdk/fastmcp-server-auth-providers-jwt.mdx +149 -0
- fastmcp-2.11.1/docs/python-sdk/fastmcp-server-auth-providers-workos.mdx +58 -0
- fastmcp-2.11.1/docs/python-sdk/fastmcp-server-auth-registry.mdx +43 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-context.mdx +46 -36
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-dependencies.mdx +1 -1
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-http.mdx +14 -14
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +15 -17
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-proxy.mdx +44 -35
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-server.mdx +53 -49
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-tools-tool.mdx +11 -11
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-tools-tool_transform.mdx +16 -12
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-components.mdx +24 -10
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +4 -4
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-openapi.mdx +10 -9
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-tests.mdx +34 -3
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-types.mdx +10 -10
- fastmcp-2.11.1/docs/servers/auth/authentication.mdx +193 -0
- fastmcp-2.11.1/docs/servers/auth/full-oauth-server.mdx +229 -0
- fastmcp-2.11.1/docs/servers/auth/remote-oauth.mdx +189 -0
- fastmcp-2.11.1/docs/servers/auth/token-verification.mdx +200 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/auth/__init__.py +2 -1
- fastmcp-2.11.1/src/fastmcp/server/auth/auth.py +278 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/auth/providers/jwt.py +1 -1
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/auth/providers/workos.py +27 -46
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/http.py +32 -73
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/utilities/components.py +6 -1
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/utilities/openapi.py +3 -7
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/utilities/types.py +6 -1
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/test_mount.py +14 -5
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/utilities/test_typeadapter.py +29 -0
- fastmcp-2.11.0/docs/python-sdk/fastmcp-server-auth-auth.mdx +0 -30
- fastmcp-2.11.0/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +0 -152
- fastmcp-2.11.0/docs/servers/auth/authentication.mdx +0 -167
- fastmcp-2.11.0/docs/servers/auth/full-oauth-server.mdx +0 -128
- fastmcp-2.11.0/docs/servers/auth/remote-authentication.mdx +0 -146
- fastmcp-2.11.0/docs/servers/auth/token-verification.mdx +0 -210
- fastmcp-2.11.0/src/fastmcp/server/auth/auth.py +0 -197
- fastmcp-2.11.0/tests/server/http/test_auth_setup.py +0 -189
- {fastmcp-2.11.0 → fastmcp-2.11.1}/.ccignore +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/.cursor/rules/core-mcp-objects.mdc +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/.github/dependabot.yml +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/.github/labeler.yml +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/.github/release.yml +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/.github/workflows/labeler.yml +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/.github/workflows/publish.yml +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/.github/workflows/run-static.yml +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/.github/workflows/run-tests.yml +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/.gitignore +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/.pre-commit-config.yaml +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/AGENTS.md +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/CLAUDE.md +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/LICENSE +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/README.md +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/README_OPENAPI.md +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/Windows_Notes.md +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/.ccignore +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/.cursor/rules/mintlify.mdc +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/assets/favicon.svg +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/assets/images/tutorial-rest-api-result.png +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/assets/updates/release-2-7.png +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/clients/auth/oauth.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/clients/client.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/clients/elicitation.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/clients/logging.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/clients/messages.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/clients/progress.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/clients/prompts.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/clients/resources.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/clients/roots.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/clients/sampling.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/clients/tools.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/clients/transports.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/community/README.md +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/community/showcase.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/css/banner.css +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/css/python-sdk.css +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/css/style.css +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/css/version-badge.css +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/deployment/running-server.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/getting-started/installation.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/getting-started/quickstart.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/getting-started/welcome.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/anthropic.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/claude-desktop.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/cursor-install-mcp.png +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/cursor.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/fastapi.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/gemini.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/images/authkit/enable_dcr.png +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/images/permit/abac_condition_example.png +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/images/permit/abac_policy_example.png +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/images/permit/policy_mapping.png +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/images/permit/role_assignement.png +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/openapi.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/integrations/starlette.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/patterns/cli.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/patterns/contrib.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/patterns/http-requests.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/patterns/testing.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/patterns/tool-transformation.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-__init__.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-claude.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-install-__init__.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-install-claude_code.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-install-claude_desktop.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-install-cursor.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-install-mcp_json.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-install-shared.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-__init__.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-auth-__init__.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-auth-bearer.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-client.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-elicitation.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-logging.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-messages.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-oauth_callback.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-progress.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-roots.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-sampling.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-exceptions.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-mcp_config.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-prompts-__init__.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-resources-__init__.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-resources-resource_manager.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-resources-types.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-__init__.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-auth-__init__.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-auth-providers-__init__.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-auth-providers-bearer_env.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-elicitation.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-low_level.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-middleware-__init__.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-middleware-error_handling.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-middleware-logging.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-middleware-rate_limiting.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-middleware-timing.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-openapi.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-settings.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-tools-__init__.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-tools-tool_manager.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-__init__.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-cli.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-exceptions.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-http.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-inspect.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-json_schema.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-json_schema_type.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-logging.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/servers/composition.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/servers/context.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/servers/elicitation.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/servers/logging.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/servers/middleware.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/servers/progress.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/servers/prompts.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/servers/proxy.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/servers/resources.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/servers/sampling.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/servers/server.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/servers/tools.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/snippets/local-focus.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/snippets/version-badge.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/snippets/youtube-embed.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/tutorials/create-mcp-server.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/tutorials/mcp.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/tutorials/rest-api.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/docs/updates.mdx +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/atproto_mcp/README.md +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/atproto_mcp/demo.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/atproto_mcp/pyproject.toml +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/__main__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_client.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_posts.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_profile.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_read.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_social.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/py.typed +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/server.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/settings.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/types.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/complex_inputs.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/config_server.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/desktop.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/echo.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/get_file.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/in_memory_proxy_example.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/memory.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/mount_example.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/sampling.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/screenshot.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/serializer.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/simple_echo.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/smart_home/README.md +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/smart_home/pyproject.toml +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/smart_home/src/smart_home/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/smart_home/src/smart_home/__main__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/smart_home/src/smart_home/hub.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/smart_home/src/smart_home/lights/server.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/smart_home/src/smart_home/py.typed +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/smart_home/src/smart_home/settings.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/smart_home/uv.lock +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/tags_example.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/examples/text_me.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/justfile +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/pyproject.toml +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/cli/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/cli/claude.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/cli/cli.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/cli/install/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/cli/install/claude_code.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/cli/install/claude_desktop.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/cli/install/cursor.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/cli/install/mcp_json.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/cli/install/shared.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/cli/run.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/client/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/client/auth/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/client/auth/bearer.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/client/auth/oauth.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/client/client.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/client/elicitation.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/client/logging.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/client/messages.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/client/oauth_callback.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/client/progress.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/client/roots.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/client/sampling.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/client/transports.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/contrib/README.md +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/contrib/component_manager/README.md +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/contrib/component_manager/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/contrib/component_manager/component_service.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/contrib/component_manager/example.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/exceptions.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/experimental/server/openapi/README.md +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/experimental/server/openapi/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/experimental/server/openapi/components.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/experimental/server/openapi/routing.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/experimental/server/openapi/server.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/experimental/utilities/openapi/README.md +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/experimental/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/experimental/utilities/openapi/director.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/experimental/utilities/openapi/formatters.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/experimental/utilities/openapi/json_schema_converter.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/experimental/utilities/openapi/models.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/experimental/utilities/openapi/parser.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/experimental/utilities/openapi/schemas.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/mcp_config.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/prompts/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/prompts/prompt.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/prompts/prompt_manager.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/py.typed +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/resources/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/resources/resource.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/resources/resource_manager.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/resources/template.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/resources/types.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/auth/providers/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/auth/providers/bearer.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/auth/providers/in_memory.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/auth/registry.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/context.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/dependencies.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/elicitation.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/low_level.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/middleware/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/middleware/error_handling.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/middleware/logging.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/middleware/middleware.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/middleware/rate_limiting.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/middleware/timing.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/openapi.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/proxy.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/server/server.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/settings.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/tools/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/tools/tool.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/tools/tool_manager.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/tools/tool_transform.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/utilities/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/utilities/cli.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/utilities/exceptions.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/utilities/http.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/utilities/inspect.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/utilities/json_schema.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/utilities/json_schema_type.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/utilities/logging.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/utilities/mcp_config.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/src/fastmcp/utilities/tests.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/cli/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/cli/test_cli.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/cli/test_cursor.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/cli/test_install.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/cli/test_run.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/cli/test_run_with_uv.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/cli/test_shared.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/client/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/client/auth/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/client/auth/test_oauth_client.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/client/test_client.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/client/test_elicitation.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/client/test_logs.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/client/test_notifications.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/client/test_openapi_experimental.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/client/test_openapi_legacy.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/client/test_progress.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/client/test_roots.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/client/test_sampling.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/client/test_sse.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/client/test_stdio.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/client/test_streamable_http.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/client/transports/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/client/transports/test_uv_transport.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/conftest.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/contrib/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/contrib/test_bulk_tool_caller.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/contrib/test_component_manager.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/contrib/test_mcp_mixin.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/deprecated/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/deprecated/test_bearer_auth_provider.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/deprecated/test_deprecated.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/deprecated/test_mount_import_arg_order.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/deprecated/test_mount_separators.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/deprecated/test_proxy_client.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/deprecated/test_resource_prefixes.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/deprecated/test_route_type_ignore.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/deprecated/test_settings.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/server/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/server/openapi/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/server/openapi/test_comprehensive.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/server/openapi/test_deepobject_style.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/server/openapi/test_end_to_end_compatibility.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/server/openapi/test_openapi_features.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/server/openapi/test_parameter_collisions.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/server/openapi/test_performance_comparison.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/server/openapi/test_server.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/server/test_openapi_performance.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/utilities/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/utilities/openapi/conftest.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/utilities/openapi/test_director.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/utilities/openapi/test_legacy_compatibility.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/utilities/openapi/test_models.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/utilities/openapi/test_nullable_fields.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/utilities/openapi/test_parser.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/experimental/utilities/openapi/test_schemas.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/integration_tests/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/integration_tests/conftest.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/integration_tests/test_github_mcp_remote.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/prompts/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/prompts/test_prompt.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/prompts/test_prompt_manager.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/resources/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/resources/test_file_resources.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/resources/test_function_resources.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/resources/test_resource_manager.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/resources/test_resource_template.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/resources/test_resource_template_meta.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/resources/test_resources.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/auth/test_jwt_provider.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/auth/test_static_token_verifier.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/auth/test_workos.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/http/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/http/test_bearer_auth_backend.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/http/test_custom_routes.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/http/test_http_auth_middleware.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/http/test_http_dependencies.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/http/test_http_middleware.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/middleware/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/middleware/test_error_handling.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/middleware/test_logging.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/middleware/test_middleware.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/middleware/test_rate_limiting.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/middleware/test_timing.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/openapi/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/openapi/conftest.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/openapi/test_advanced_behavior.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/openapi/test_basic_functionality.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/openapi/test_configuration.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/openapi/test_deepobject_style.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/openapi/test_description_propagation.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/openapi/test_explode_integration.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/openapi/test_openapi_compatibility.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/openapi/test_openapi_path_parameters.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/openapi/test_optional_parameters.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/openapi/test_parameter_collisions.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/openapi/test_route_map_fn.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/proxy/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/proxy/test_proxy_client.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/proxy/test_proxy_server.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/proxy/test_stateful_proxy_client.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/test_app_state.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/test_auth_integration.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/test_context.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/test_experimental_openapi_feature_flag.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/test_file_server.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/test_import_server.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/test_logging.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/test_resource_prefix_formats.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/test_run_server.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/test_server.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/test_server_interactions.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/test_tool_annotations.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/test_tool_exclude_args.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/server/test_tool_transformation.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/test_examples.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/test_mcp_config.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/tools/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/tools/test_tool.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/tools/test_tool_future_annotations.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/tools/test_tool_manager.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/tools/test_tool_transform.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/utilities/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/utilities/openapi/conftest.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/utilities/openapi/test_nullable_fields.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/utilities/openapi/test_openapi.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/utilities/openapi/test_openapi_advanced.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/utilities/openapi/test_openapi_fastapi.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/utilities/openapi/test_openapi_output_schemas.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/utilities/test_inspect.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/utilities/test_json_schema.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/utilities/test_json_schema_type.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/utilities/test_logging.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/utilities/test_tests.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/tests/utilities/test_types.py +0 -0
- {fastmcp-2.11.0 → fastmcp-2.11.1}/uv.lock +0 -0
|
@@ -2,6 +2,111 @@
|
|
|
2
2
|
icon: "list-check"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
+
<Update label="v2.11.0" description="2025-08-01">
|
|
6
|
+
|
|
7
|
+
## [v2.11.0: Auth to a Good Start](https://github.com/jlowin/fastmcp/releases/tag/v2.11.0)
|
|
8
|
+
|
|
9
|
+
FastMCP 2.11 doubles down on what developers need most: speed and simplicity. This massive release delivers significant performance improvements and a dramatically better developer experience.
|
|
10
|
+
|
|
11
|
+
🔐 **Enterprise-Ready Authentication** brings comprehensive OAuth 2.1 support with WorkOS's AuthKit integration. The new AuthProvider interface leverages MCP's support for separate resource and authorization servers, handling API keys and remote authentication with Dynamic Client Registration. AuthKit integration means you can plug into existing enterprise identity systems without rebuilding your auth stack, setting the stage for plug-and-play auth that doesn't require users to become security experts overnight.
|
|
12
|
+
|
|
13
|
+
⚡ The **Experimental OpenAPI Parser** delivers dramatic performance improvements through single-pass schema processing and optimized memory usage. OpenAPI integrations are now significantly faster, with cleaner, more maintainable code. _(Note: the experimental parser is disabled by default, set `FASTMCPEXPERIMENTALENABLENEWOPENAPIPARSER=1` to enable it. A message will be shown to all users on the legacy parser encouraging them to try the new one before it becomes the default.)_
|
|
14
|
+
|
|
15
|
+
🧠 **Context State Management** finally gives you persistent state across tool calls with a simple dict interface, while enhanced meta support lets you expose rich component metadata to clients. Combined with improved type annotations, string-based argument descriptions, and UV transport support, this release makes FastMCP feel more intuitive than ever.
|
|
16
|
+
|
|
17
|
+
This release represents a TON of community contributions and sets the foundation for even more ambitious features ahead.
|
|
18
|
+
|
|
19
|
+
## What's Changed
|
|
20
|
+
### New Features 🎉
|
|
21
|
+
* Introduce experimental OpenAPI parser with improved performance and maintainability by [@jlowin](https://github.com/jlowin) in [#1209](https://github.com/jlowin/fastmcp/pull/1209)
|
|
22
|
+
* Add state dict to Context (#1118) by [@mukulmurthy](https://github.com/mukulmurthy) in [#1160](https://github.com/jlowin/fastmcp/pull/1160)
|
|
23
|
+
* Expose FastMCP tags to clients via component `meta` dict by [@jlowin](https://github.com/jlowin) in [#1281](https://github.com/jlowin/fastmcp/pull/1281)
|
|
24
|
+
* Add _fastmcp meta namespace by [@jlowin](https://github.com/jlowin) in [#1290](https://github.com/jlowin/fastmcp/pull/1290)
|
|
25
|
+
* Add TokenVerifier protocol support alongside existing OAuthProvider authentication by [@jlowin](https://github.com/jlowin) in [#1297](https://github.com/jlowin/fastmcp/pull/1297)
|
|
26
|
+
* Add comprehensive OAuth 2.1 authentication system with WorkOS integration by [@jlowin](https://github.com/jlowin) in [#1327](https://github.com/jlowin/fastmcp/pull/1327)
|
|
27
|
+
### Enhancements 🔧
|
|
28
|
+
* [🐶] Transform MCP Server Tools by [@strawgate](https://github.com/strawgate) in [#1132](https://github.com/jlowin/fastmcp/pull/1132)
|
|
29
|
+
* Add --python, --project, and --with-requirements options to CLI commands by [@jlowin](https://github.com/jlowin) in [#1190](https://github.com/jlowin/fastmcp/pull/1190)
|
|
30
|
+
* Support `fastmcp run mcp.json` by [@strawgate](https://github.com/strawgate) in [#1138](https://github.com/jlowin/fastmcp/pull/1138)
|
|
31
|
+
* Support from __future__ import annotations by [@jlowin](https://github.com/jlowin) in [#1199](https://github.com/jlowin/fastmcp/pull/1199)
|
|
32
|
+
* Optimize OpenAPI parser performance with single-pass schema processing by [@jlowin](https://github.com/jlowin) in [#1214](https://github.com/jlowin/fastmcp/pull/1214)
|
|
33
|
+
* Log tool name on transform validation error by [@strawgate](https://github.com/strawgate) in [#1238](https://github.com/jlowin/fastmcp/pull/1238)
|
|
34
|
+
* Refactor `get_http_request` and `context.session_id` by [@hopeful0](https://github.com/hopeful0) in [#1242](https://github.com/jlowin/fastmcp/pull/1242)
|
|
35
|
+
* Support creating tool argument descriptions from string annotations by [@jlowin](https://github.com/jlowin) in [#1255](https://github.com/jlowin/fastmcp/pull/1255)
|
|
36
|
+
* feat: Add Annotations support for resources and resource templates by [@chughtapan](https://github.com/chughtapan) in [#1260](https://github.com/jlowin/fastmcp/pull/1260)
|
|
37
|
+
* Add UV Transport by [@strawgate](https://github.com/strawgate) in [#1270](https://github.com/jlowin/fastmcp/pull/1270)
|
|
38
|
+
* Improve OpenAPI-to-JSONSchema conversion utilities by [@jlowin](https://github.com/jlowin) in [#1283](https://github.com/jlowin/fastmcp/pull/1283)
|
|
39
|
+
* Ensure proxy components forward meta dicts by [@jlowin](https://github.com/jlowin) in [#1282](https://github.com/jlowin/fastmcp/pull/1282)
|
|
40
|
+
* fix: server argument passing in CLI run command by [@chughtapan](https://github.com/chughtapan) in [#1293](https://github.com/jlowin/fastmcp/pull/1293)
|
|
41
|
+
* Add meta support to tool transformation utilities by [@jlowin](https://github.com/jlowin) in [#1295](https://github.com/jlowin/fastmcp/pull/1295)
|
|
42
|
+
* feat: Allow Resource Metadata URL as field in OAuthProvider by [@dacamposol](https://github.com/dacamposol) in [#1287](https://github.com/jlowin/fastmcp/pull/1287)
|
|
43
|
+
* Use a simple overwrite instead of a merge for meta by [@jlowin](https://github.com/jlowin) in [#1296](https://github.com/jlowin/fastmcp/pull/1296)
|
|
44
|
+
* Remove unused TimedCache by [@strawgate](https://github.com/strawgate) in [#1303](https://github.com/jlowin/fastmcp/pull/1303)
|
|
45
|
+
* refactor: standardize logging usage across OpenAPI utilities by [@chi2liu](https://github.com/chi2liu) in [#1322](https://github.com/jlowin/fastmcp/pull/1322)
|
|
46
|
+
* perf: optimize OpenAPI parsing by reducing dict copy operations by [@chi2liu](https://github.com/chi2liu) in [#1321](https://github.com/jlowin/fastmcp/pull/1321)
|
|
47
|
+
* Structured client-side logging by [@cjermain](https://github.com/cjermain) in [#1326](https://github.com/jlowin/fastmcp/pull/1326)
|
|
48
|
+
### Fixes 🐞
|
|
49
|
+
* fix: preserve def reference when referenced in allOf / oneOf / anyOf by [@algirdasci](https://github.com/algirdasci) in [#1208](https://github.com/jlowin/fastmcp/pull/1208)
|
|
50
|
+
* fix: add type hint to custom_route decorator by [@zzstoatzz](https://github.com/zzstoatzz) in [#1210](https://github.com/jlowin/fastmcp/pull/1210)
|
|
51
|
+
* chore: typo by [@richardkmichael](https://github.com/richardkmichael) in [#1216](https://github.com/jlowin/fastmcp/pull/1216)
|
|
52
|
+
* fix: handle non-string $ref values in experimental OpenAPI parser by [@jlowin](https://github.com/jlowin) in [#1217](https://github.com/jlowin/fastmcp/pull/1217)
|
|
53
|
+
* Skip repeated type conversion and validation in proxy client elicitation handler by [@chughtapan](https://github.com/chughtapan) in [#1222](https://github.com/jlowin/fastmcp/pull/1222)
|
|
54
|
+
* Ensure default fields are not marked nullable by [@jlowin](https://github.com/jlowin) in [#1224](https://github.com/jlowin/fastmcp/pull/1224)
|
|
55
|
+
* Fix stateful proxy client mixing in multi-proxies sessions by [@hopeful0](https://github.com/hopeful0) in [#1245](https://github.com/jlowin/fastmcp/pull/1245)
|
|
56
|
+
* Fix invalid async context manager usage in proxy documentation by [@zzstoatzz](https://github.com/zzstoatzz) in [#1246](https://github.com/jlowin/fastmcp/pull/1246)
|
|
57
|
+
* fix: experimental FastMCPOpenAPI server lost headers in request when __init__(client with headers) by [@itaru2622](https://github.com/itaru2622) in [#1254](https://github.com/jlowin/fastmcp/pull/1254)
|
|
58
|
+
* Fix typing, add tests for tool call middleware by [@jlowin](https://github.com/jlowin) in [#1269](https://github.com/jlowin/fastmcp/pull/1269)
|
|
59
|
+
* Fix: prune hidden parameter defs by [@muhammadkhalid-03](https://github.com/muhammadkhalid-03) in [#1257](https://github.com/jlowin/fastmcp/pull/1257)
|
|
60
|
+
* Fix nullable field handling in OpenAPI to JSON Schema conversion by [@jlowin](https://github.com/jlowin) in [#1279](https://github.com/jlowin/fastmcp/pull/1279)
|
|
61
|
+
* Ensure fastmcp run supports v1 servers by [@jlowin](https://github.com/jlowin) in [#1332](https://github.com/jlowin/fastmcp/pull/1332)
|
|
62
|
+
### Breaking Changes 🛫
|
|
63
|
+
* Change server flag to --name by [@jlowin](https://github.com/jlowin) in [#1248](https://github.com/jlowin/fastmcp/pull/1248)
|
|
64
|
+
### Docs 📚
|
|
65
|
+
* Remove unused import from FastAPI integration documentation by [@mariotaddeucci](https://github.com/mariotaddeucci) in [#1194](https://github.com/jlowin/fastmcp/pull/1194)
|
|
66
|
+
* Update fastapi docs by [@jlowin](https://github.com/jlowin) in [#1198](https://github.com/jlowin/fastmcp/pull/1198)
|
|
67
|
+
* Add docs for context state management by [@jlowin](https://github.com/jlowin) in [#1227](https://github.com/jlowin/fastmcp/pull/1227)
|
|
68
|
+
* Permit.io integration docs by [@orweis](https://github.com/orweis) in [#1226](https://github.com/jlowin/fastmcp/pull/1226)
|
|
69
|
+
* Update docs to reflect sync tools by [@jlowin](https://github.com/jlowin) in [#1234](https://github.com/jlowin/fastmcp/pull/1234)
|
|
70
|
+
* Update changelog.mdx by [@jlowin](https://github.com/jlowin) in [#1235](https://github.com/jlowin/fastmcp/pull/1235)
|
|
71
|
+
* Update SDK docs by [@jlowin](https://github.com/jlowin) in [#1236](https://github.com/jlowin/fastmcp/pull/1236)
|
|
72
|
+
* Update --name flag documentation for Cursor/Claude by [@adam-conway](https://github.com/adam-conway) in [#1239](https://github.com/jlowin/fastmcp/pull/1239)
|
|
73
|
+
* Add annotations docs by [@jlowin](https://github.com/jlowin) in [#1268](https://github.com/jlowin/fastmcp/pull/1268)
|
|
74
|
+
* Update openapi/fastapi URLs README.md by [@jbn](https://github.com/jbn) in [#1278](https://github.com/jlowin/fastmcp/pull/1278)
|
|
75
|
+
* Add 2.11 version badge for state management by [@jlowin](https://github.com/jlowin) in [#1289](https://github.com/jlowin/fastmcp/pull/1289)
|
|
76
|
+
* Add meta parameter support to tools, resources, templates, and prompts decorators by [@jlowin](https://github.com/jlowin) in [#1294](https://github.com/jlowin/fastmcp/pull/1294)
|
|
77
|
+
* docs: update get_state and set_state references by [@Maxi91f](https://github.com/Maxi91f) in [#1306](https://github.com/jlowin/fastmcp/pull/1306)
|
|
78
|
+
* Add unit tests and docs for denying tool calls with middleware by [@jlowin](https://github.com/jlowin) in [#1333](https://github.com/jlowin/fastmcp/pull/1333)
|
|
79
|
+
* Remove reference to stacked decorators by [@jlowin](https://github.com/jlowin) in [#1334](https://github.com/jlowin/fastmcp/pull/1334)
|
|
80
|
+
* Eunomia authorization server can run embedded within the MCP server by [@tommitt](https://github.com/tommitt) in [#1317](https://github.com/jlowin/fastmcp/pull/1317)
|
|
81
|
+
### Other Changes 🦾
|
|
82
|
+
* Update README.md by [@jlowin](https://github.com/jlowin) in [#1230](https://github.com/jlowin/fastmcp/pull/1230)
|
|
83
|
+
* Logcapture addition to test_server file by [@Sourav-Tripathy](https://github.com/Sourav-Tripathy) in [#1229](https://github.com/jlowin/fastmcp/pull/1229)
|
|
84
|
+
* Add tests for headers with both legacy and experimental openapi parser by [@jlowin](https://github.com/jlowin) in [#1259](https://github.com/jlowin/fastmcp/pull/1259)
|
|
85
|
+
* Small clean-up from MCP Tool Transform PR by [@strawgate](https://github.com/strawgate) in [#1267](https://github.com/jlowin/fastmcp/pull/1267)
|
|
86
|
+
* Add test for proxy tags visibility by [@jlowin](https://github.com/jlowin) in [#1302](https://github.com/jlowin/fastmcp/pull/1302)
|
|
87
|
+
* Add unit test for sampling with image messages by [@jlowin](https://github.com/jlowin) in [#1329](https://github.com/jlowin/fastmcp/pull/1329)
|
|
88
|
+
* Remove redundant resource_metadata_url assignment by [@jlowin](https://github.com/jlowin) in [#1328](https://github.com/jlowin/fastmcp/pull/1328)
|
|
89
|
+
* Update bug.yml by [@jlowin](https://github.com/jlowin) in [#1331](https://github.com/jlowin/fastmcp/pull/1331)
|
|
90
|
+
* Ensure validation errors are raised when masked by [@jlowin](https://github.com/jlowin) in [#1330](https://github.com/jlowin/fastmcp/pull/1330)
|
|
91
|
+
|
|
92
|
+
## New Contributors
|
|
93
|
+
* [@mariotaddeucci](https://github.com/mariotaddeucci) made their first contribution in [#1194](https://github.com/jlowin/fastmcp/pull/1194)
|
|
94
|
+
* [@algirdasci](https://github.com/algirdasci) made their first contribution in [#1208](https://github.com/jlowin/fastmcp/pull/1208)
|
|
95
|
+
* [@chughtapan](https://github.com/chughtapan) made their first contribution in [#1222](https://github.com/jlowin/fastmcp/pull/1222)
|
|
96
|
+
* [@mukulmurthy](https://github.com/mukulmurthy) made their first contribution in [#1160](https://github.com/jlowin/fastmcp/pull/1160)
|
|
97
|
+
* [@orweis](https://github.com/orweis) made their first contribution in [#1226](https://github.com/jlowin/fastmcp/pull/1226)
|
|
98
|
+
* [@Sourav-Tripathy](https://github.com/Sourav-Tripathy) made their first contribution in [#1229](https://github.com/jlowin/fastmcp/pull/1229)
|
|
99
|
+
* [@adam-conway](https://github.com/adam-conway) made their first contribution in [#1239](https://github.com/jlowin/fastmcp/pull/1239)
|
|
100
|
+
* [@muhammadkhalid-03](https://github.com/muhammadkhalid-03) made their first contribution in [#1257](https://github.com/jlowin/fastmcp/pull/1257)
|
|
101
|
+
* [@jbn](https://github.com/jbn) made their first contribution in [#1278](https://github.com/jlowin/fastmcp/pull/1278)
|
|
102
|
+
* [@dacamposol](https://github.com/dacamposol) made their first contribution in [#1287](https://github.com/jlowin/fastmcp/pull/1287)
|
|
103
|
+
* [@chi2liu](https://github.com/chi2liu) made their first contribution in [#1322](https://github.com/jlowin/fastmcp/pull/1322)
|
|
104
|
+
* [@cjermain](https://github.com/cjermain) made their first contribution in [#1326](https://github.com/jlowin/fastmcp/pull/1326)
|
|
105
|
+
|
|
106
|
+
**Full Changelog**: [v2.10.6...v2.11.0](https://github.com/jlowin/fastmcp/compare/v2.10.6...v2.11.0)
|
|
107
|
+
|
|
108
|
+
</Update>
|
|
109
|
+
|
|
5
110
|
<Update label="v2.10.6" description="2025-07-19">
|
|
6
111
|
|
|
7
112
|
## [v2.10.6: Hymn for the Weekend](https://github.com/jlowin/fastmcp/releases/tag/v2.10.6)
|
|
@@ -95,8 +95,8 @@
|
|
|
95
95
|
"icon": "shield-check",
|
|
96
96
|
"pages": [
|
|
97
97
|
"servers/auth/authentication",
|
|
98
|
+
"servers/auth/remote-oauth",
|
|
98
99
|
"servers/auth/token-verification",
|
|
99
|
-
"servers/auth/remote-authentication",
|
|
100
100
|
"servers/auth/full-oauth-server"
|
|
101
101
|
]
|
|
102
102
|
}
|
|
@@ -142,6 +142,7 @@
|
|
|
142
142
|
"group": "Integrations",
|
|
143
143
|
"pages": [
|
|
144
144
|
"integrations/anthropic",
|
|
145
|
+
"integrations/authkit",
|
|
145
146
|
"integrations/chatgpt",
|
|
146
147
|
"integrations/claude-code",
|
|
147
148
|
"integrations/claude-desktop",
|
|
@@ -153,8 +154,7 @@
|
|
|
153
154
|
"integrations/openai",
|
|
154
155
|
"integrations/openapi",
|
|
155
156
|
"integrations/permit",
|
|
156
|
-
"integrations/starlette"
|
|
157
|
-
"integrations/authkit"
|
|
157
|
+
"integrations/starlette"
|
|
158
158
|
]
|
|
159
159
|
},
|
|
160
160
|
{
|
|
@@ -275,10 +275,12 @@
|
|
|
275
275
|
"pages": [
|
|
276
276
|
"python-sdk/fastmcp-server-auth-providers-__init__",
|
|
277
277
|
"python-sdk/fastmcp-server-auth-providers-bearer",
|
|
278
|
-
"python-sdk/fastmcp-server-auth-providers-
|
|
279
|
-
"python-sdk/fastmcp-server-auth-providers-
|
|
278
|
+
"python-sdk/fastmcp-server-auth-providers-in_memory",
|
|
279
|
+
"python-sdk/fastmcp-server-auth-providers-jwt",
|
|
280
|
+
"python-sdk/fastmcp-server-auth-providers-workos"
|
|
280
281
|
]
|
|
281
|
-
}
|
|
282
|
+
},
|
|
283
|
+
"python-sdk/fastmcp-server-auth-registry"
|
|
282
284
|
]
|
|
283
285
|
},
|
|
284
286
|
"python-sdk/fastmcp-server-context",
|
|
@@ -315,7 +317,6 @@
|
|
|
315
317
|
"group": "fastmcp.utilities",
|
|
316
318
|
"pages": [
|
|
317
319
|
"python-sdk/fastmcp-utilities-__init__",
|
|
318
|
-
"python-sdk/fastmcp-utilities-cache",
|
|
319
320
|
"python-sdk/fastmcp-utilities-cli",
|
|
320
321
|
"python-sdk/fastmcp-utilities-components",
|
|
321
322
|
"python-sdk/fastmcp-utilities-exceptions",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
3
|
-
sidebarTitle:
|
|
4
|
-
description: Secure your FastMCP server with WorkOS
|
|
2
|
+
title: AuthKit 🤝 FastMCP
|
|
3
|
+
sidebarTitle: AuthKit
|
|
4
|
+
description: Secure your FastMCP server with AuthKit by WorkOS
|
|
5
5
|
icon: shield-check
|
|
6
6
|
tag: NEW
|
|
7
7
|
---
|
|
@@ -10,20 +10,20 @@ import { VersionBadge } from "/snippets/version-badge.mdx"
|
|
|
10
10
|
|
|
11
11
|
<VersionBadge version="2.11.0" />
|
|
12
12
|
|
|
13
|
-
This guide shows you how to secure your FastMCP server using
|
|
13
|
+
This guide shows you how to secure your FastMCP server using WorkOS's **AuthKit**, a complete authentication and user management solution. This integration uses the [**Remote OAuth**](/servers/auth/remote-oauth) pattern, where AuthKit handles user login and your FastMCP server validates the tokens.
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
## Configuration
|
|
17
17
|
### Prerequisites
|
|
18
18
|
|
|
19
19
|
Before you begin, you will need:
|
|
20
|
-
1. A **WorkOS Account** and a new **Project**.
|
|
21
|
-
2. An **AuthKit** instance configured within your WorkOS project.
|
|
20
|
+
1. A **[WorkOS Account](https://workos.com/)** and a new **Project**.
|
|
21
|
+
2. An **[AuthKit](https://www.authkit.com/)** instance configured within your WorkOS project.
|
|
22
22
|
3. Your FastMCP server's URL (can be localhost for development, e.g., `http://localhost:8000`).
|
|
23
23
|
|
|
24
24
|
### Step 1: AuthKit Configuration
|
|
25
25
|
|
|
26
|
-
In your WorkOS Dashboard,
|
|
26
|
+
In your WorkOS Dashboard, enable AuthKit and configure the following settings:
|
|
27
27
|
|
|
28
28
|
<Steps>
|
|
29
29
|
<Step title="Enable Dynamic Client Registration">
|
|
@@ -3,7 +3,7 @@ title: ChatGPT 🤝 FastMCP
|
|
|
3
3
|
sidebarTitle: ChatGPT
|
|
4
4
|
description: Connect FastMCP servers to ChatGPT Deep Research
|
|
5
5
|
icon: message-smile
|
|
6
|
-
|
|
6
|
+
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
ChatGPT supports MCP servers through remote HTTP connections, allowing you to extend ChatGPT's capabilities with custom tools and knowledge from your FastMCP servers.
|
|
@@ -3,7 +3,6 @@ title: Eunomia Authorization 🤝 FastMCP
|
|
|
3
3
|
sidebarTitle: Eunomia Auth
|
|
4
4
|
description: Add policy-based authorization to your FastMCP servers with Eunomia
|
|
5
5
|
icon: shield-check
|
|
6
|
-
tag: NEW
|
|
7
6
|
---
|
|
8
7
|
|
|
9
8
|
Add **policy-based authorization** to your FastMCP servers with one-line code addition with the **[Eunomia][eunomia-github] authorization middleware**.
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Permit.io Authorization 🤝 FastMCP
|
|
3
|
-
sidebarTitle: Permit.io
|
|
3
|
+
sidebarTitle: Permit.io
|
|
4
4
|
description: Add fine-grained authorization to your FastMCP servers with Permit.io
|
|
5
5
|
icon: shield-check
|
|
6
|
-
tag: NEW
|
|
7
6
|
---
|
|
8
7
|
|
|
9
8
|
Add **policy-based authorization** to your FastMCP servers with one-line code addition with the **[Permit.io][permit-github] authorization middleware**.
|
|
@@ -5,7 +5,7 @@ description: Properly use instance methods, class methods, and static methods wi
|
|
|
5
5
|
icon: at
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
FastMCP's decorator system is designed to work with functions, but you may see unexpected behavior if you try to decorate an instance or class method. This guide explains the correct approach for using methods with all FastMCP decorators (`@tool`, `@resource`, and
|
|
8
|
+
FastMCP's decorator system is designed to work with functions, but you may see unexpected behavior if you try to decorate an instance or class method. This guide explains the correct approach for using methods with all FastMCP decorators (`@tool`, `@resource`, and `@prompt`).
|
|
9
9
|
|
|
10
10
|
## Why Are Methods Hard?
|
|
11
11
|
|
|
@@ -222,4 +222,4 @@ The current behavior of FastMCP decorators with methods is:
|
|
|
222
222
|
For class and instance methods, you should register them after creating the instance or class to ensure proper method binding. This ensures that the methods are properly bound before being registered.
|
|
223
223
|
|
|
224
224
|
|
|
225
|
-
Understanding these patterns allows you to effectively organize your components into classes while maintaining proper method binding, giving you the benefits of object-oriented design without sacrificing the simplicity of FastMCP's decorator system.
|
|
225
|
+
Understanding these patterns allows you to effectively organize your components into classes while maintaining proper method binding, giving you the benefits of object-oriented design without sacrificing the simplicity of FastMCP's decorator system.
|
|
@@ -36,7 +36,7 @@ Run an MCP server with the MCP Inspector for development.
|
|
|
36
36
|
### `run` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/cli.py#L286" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
37
37
|
|
|
38
38
|
```python
|
|
39
|
-
run(server_spec: str) -> None
|
|
39
|
+
run(server_spec: str, *server_args: str) -> None
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
|
|
@@ -55,7 +55,7 @@ fastmcp run server.py -- --config config.json --debug
|
|
|
55
55
|
- `server_spec`: Python file, object specification (file\:obj), MCPConfig file, or URL
|
|
56
56
|
|
|
57
57
|
|
|
58
|
-
### `inspect` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/cli.py#
|
|
58
|
+
### `inspect` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/cli.py#L439" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
59
59
|
|
|
60
60
|
```python
|
|
61
61
|
inspect(server_spec: str) -> None
|
|
@@ -10,7 +10,7 @@ FastMCP run command implementation with enhanced type hints.
|
|
|
10
10
|
|
|
11
11
|
## Functions
|
|
12
12
|
|
|
13
|
-
### `is_url` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#
|
|
13
|
+
### `is_url` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#L24" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
14
14
|
|
|
15
15
|
```python
|
|
16
16
|
is_url(path: str) -> bool
|
|
@@ -20,7 +20,7 @@ is_url(path: str) -> bool
|
|
|
20
20
|
Check if a string is a URL.
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
### `parse_file_path` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#
|
|
23
|
+
### `parse_file_path` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#L30" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
24
24
|
|
|
25
25
|
```python
|
|
26
26
|
parse_file_path(server_spec: str) -> tuple[Path, str | None]
|
|
@@ -36,7 +36,7 @@ Parse a file path that may include a server object specification.
|
|
|
36
36
|
- Tuple of (file_path, server_object)
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
### `import_server` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#
|
|
39
|
+
### `import_server` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#L61" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
40
40
|
|
|
41
41
|
```python
|
|
42
42
|
import_server(file: Path, server_object: str | None = None) -> Any
|
|
@@ -53,7 +53,7 @@ Import a MCP server from a file.
|
|
|
53
53
|
- The server object
|
|
54
54
|
|
|
55
55
|
|
|
56
|
-
### `run_with_uv` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#
|
|
56
|
+
### `run_with_uv` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#L131" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
57
57
|
|
|
58
58
|
```python
|
|
59
59
|
run_with_uv(server_spec: str, python_version: str | None = None, with_packages: list[str] | None = None, with_requirements: Path | None = None, project: Path | None = None, transport: TransportType | None = None, host: str | None = None, port: int | None = None, path: str | None = None, log_level: LogLevelType | None = None, show_banner: bool = True) -> None
|
|
@@ -76,7 +76,7 @@ Run a MCP server using uv run subprocess.
|
|
|
76
76
|
- `show_banner`: Whether to show the server banner
|
|
77
77
|
|
|
78
78
|
|
|
79
|
-
### `create_client_server` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#
|
|
79
|
+
### `create_client_server` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#L209" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
80
80
|
|
|
81
81
|
```python
|
|
82
82
|
create_client_server(url: str) -> Any
|
|
@@ -92,7 +92,7 @@ Create a FastMCP server from a client URL.
|
|
|
92
92
|
- A FastMCP server instance
|
|
93
93
|
|
|
94
94
|
|
|
95
|
-
### `create_mcp_config_server` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#
|
|
95
|
+
### `create_mcp_config_server` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#L229" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
96
96
|
|
|
97
97
|
```python
|
|
98
98
|
create_mcp_config_server(mcp_config_path: Path) -> FastMCP[None]
|
|
@@ -102,7 +102,7 @@ create_mcp_config_server(mcp_config_path: Path) -> FastMCP[None]
|
|
|
102
102
|
Create a FastMCP server from a MCPConfig.
|
|
103
103
|
|
|
104
104
|
|
|
105
|
-
### `import_server_with_args` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#
|
|
105
|
+
### `import_server_with_args` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#L240" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
106
106
|
|
|
107
107
|
```python
|
|
108
108
|
import_server_with_args(file: Path, server_object: str | None = None, server_args: list[str] | None = None) -> Any
|
|
@@ -120,7 +120,7 @@ Import a server with optional command line arguments.
|
|
|
120
120
|
- The imported server object
|
|
121
121
|
|
|
122
122
|
|
|
123
|
-
### `run_command` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#
|
|
123
|
+
### `run_command` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#L264" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
124
124
|
|
|
125
125
|
```python
|
|
126
126
|
run_command(server_spec: str, transport: TransportType | None = None, host: str | None = None, port: int | None = None, path: str | None = None, log_level: LogLevelType | None = None, server_args: list[str] | None = None, show_banner: bool = True, use_direct_import: bool = False) -> None
|
|
@@ -140,3 +140,9 @@ Run a MCP server or connect to a remote one.
|
|
|
140
140
|
- `show_banner`: Whether to show the server banner
|
|
141
141
|
- `use_direct_import`: Whether to use direct import instead of subprocess
|
|
142
142
|
|
|
143
|
+
|
|
144
|
+
### `run_v1_server` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#L329" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
145
|
+
|
|
146
|
+
```python
|
|
147
|
+
run_v1_server(server: FastMCP1x, host: str | None = None, port: int | None = None, transport: TransportType | None = None) -> None
|
|
148
|
+
```
|
|
@@ -7,30 +7,13 @@ sidebarTitle: oauth
|
|
|
7
7
|
|
|
8
8
|
## Functions
|
|
9
9
|
|
|
10
|
-
### `default_cache_dir` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#
|
|
10
|
+
### `default_cache_dir` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#L34" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
11
11
|
|
|
12
12
|
```python
|
|
13
13
|
default_cache_dir() -> Path
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
-
### `
|
|
17
|
-
|
|
18
|
-
```python
|
|
19
|
-
discover_oauth_metadata(server_base_url: str, httpx_kwargs: dict[str, Any] | None = None) -> OAuthMetadata | None
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
Discover OAuth metadata from the server using RFC 8414 well-known endpoint.
|
|
24
|
-
|
|
25
|
-
**Args:**
|
|
26
|
-
- `server_base_url`: Base URL of the OAuth server (e.g., "https\://example.com")
|
|
27
|
-
- `httpx_kwargs`: Additional kwargs for httpx client
|
|
28
|
-
|
|
29
|
-
**Returns:**
|
|
30
|
-
- OAuth metadata if found, None otherwise
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
### `check_if_auth_required` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#L188" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
16
|
+
### `check_if_auth_required` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#L152" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
34
17
|
|
|
35
18
|
```python
|
|
36
19
|
check_if_auth_required(mcp_url: str, httpx_kwargs: dict[str, Any] | None = None) -> bool
|
|
@@ -43,32 +26,9 @@ Check if the MCP endpoint requires authentication by making a test request.
|
|
|
43
26
|
- True if auth appears to be required, False otherwise
|
|
44
27
|
|
|
45
28
|
|
|
46
|
-
### `OAuth` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#L218" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
47
|
-
|
|
48
|
-
```python
|
|
49
|
-
OAuth(mcp_url: str, scopes: str | list[str] | None = None, client_name: str = 'FastMCP Client', token_storage_cache_dir: Path | None = None, additional_client_metadata: dict[str, Any] | None = None) -> OAuthClientProvider
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
Create an OAuthClientProvider for an MCP server.
|
|
54
|
-
|
|
55
|
-
This is intended to be provided to the `auth` parameter of an
|
|
56
|
-
httpx.AsyncClient (or appropriate FastMCP client/transport instance)
|
|
57
|
-
|
|
58
|
-
**Args:**
|
|
59
|
-
- `mcp_url`: Full URL to the MCP endpoint (e.g. "http\://host/mcp/sse/")
|
|
60
|
-
- `scopes`: OAuth scopes to request. Can be a
|
|
61
|
-
- `client_name`: Name for this client during registration
|
|
62
|
-
- `token_storage_cache_dir`: Directory for FileTokenStorage
|
|
63
|
-
- `additional_client_metadata`: Extra fields for OAuthClientMetadata
|
|
64
|
-
|
|
65
|
-
**Returns:**
|
|
66
|
-
- OAuthClientProvider
|
|
67
|
-
|
|
68
|
-
|
|
69
29
|
## Classes
|
|
70
30
|
|
|
71
|
-
### `FileTokenStorage` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#
|
|
31
|
+
### `FileTokenStorage` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#L38" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
72
32
|
|
|
73
33
|
|
|
74
34
|
File-based token storage implementation for OAuth credentials and tokens.
|
|
@@ -79,7 +39,7 @@ Each instance is tied to a specific server URL for proper token isolation.
|
|
|
79
39
|
|
|
80
40
|
**Methods:**
|
|
81
41
|
|
|
82
|
-
#### `get_base_url` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#
|
|
42
|
+
#### `get_base_url` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#L53" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
83
43
|
|
|
84
44
|
```python
|
|
85
45
|
get_base_url(url: str) -> str
|
|
@@ -88,7 +48,7 @@ get_base_url(url: str) -> str
|
|
|
88
48
|
Extract the base URL (scheme + host) from a URL.
|
|
89
49
|
|
|
90
50
|
|
|
91
|
-
#### `get_cache_key` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#
|
|
51
|
+
#### `get_cache_key` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#L58" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
92
52
|
|
|
93
53
|
```python
|
|
94
54
|
get_cache_key(self) -> str
|
|
@@ -97,7 +57,7 @@ get_cache_key(self) -> str
|
|
|
97
57
|
Generate a safe filesystem key from the server's base URL.
|
|
98
58
|
|
|
99
59
|
|
|
100
|
-
#### `get_tokens` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#
|
|
60
|
+
#### `get_tokens` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#L73" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
101
61
|
|
|
102
62
|
```python
|
|
103
63
|
get_tokens(self) -> OAuthToken | None
|
|
@@ -106,7 +66,7 @@ get_tokens(self) -> OAuthToken | None
|
|
|
106
66
|
Load tokens from file storage.
|
|
107
67
|
|
|
108
68
|
|
|
109
|
-
#### `set_tokens` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#
|
|
69
|
+
#### `set_tokens` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#L90" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
110
70
|
|
|
111
71
|
```python
|
|
112
72
|
set_tokens(self, tokens: OAuthToken) -> None
|
|
@@ -115,7 +75,7 @@ set_tokens(self, tokens: OAuthToken) -> None
|
|
|
115
75
|
Save tokens to file storage.
|
|
116
76
|
|
|
117
77
|
|
|
118
|
-
#### `get_client_info` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#
|
|
78
|
+
#### `get_client_info` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#L96" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
119
79
|
|
|
120
80
|
```python
|
|
121
81
|
get_client_info(self) -> OAuthClientInformationFull | None
|
|
@@ -124,7 +84,7 @@ get_client_info(self) -> OAuthClientInformationFull | None
|
|
|
124
84
|
Load client information from file storage.
|
|
125
85
|
|
|
126
86
|
|
|
127
|
-
#### `set_client_info` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#
|
|
87
|
+
#### `set_client_info` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#L124" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
128
88
|
|
|
129
89
|
```python
|
|
130
90
|
set_client_info(self, client_info: OAuthClientInformationFull) -> None
|
|
@@ -133,7 +93,7 @@ set_client_info(self, client_info: OAuthClientInformationFull) -> None
|
|
|
133
93
|
Save client information to file storage.
|
|
134
94
|
|
|
135
95
|
|
|
136
|
-
#### `clear` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#
|
|
96
|
+
#### `clear` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#L130" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
137
97
|
|
|
138
98
|
```python
|
|
139
99
|
clear(self) -> None
|
|
@@ -142,7 +102,7 @@ clear(self) -> None
|
|
|
142
102
|
Clear all cached data for this server.
|
|
143
103
|
|
|
144
104
|
|
|
145
|
-
#### `clear_all` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#
|
|
105
|
+
#### `clear_all` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#L139" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
146
106
|
|
|
147
107
|
```python
|
|
148
108
|
clear_all(cls, cache_dir: Path | None = None) -> None
|
|
@@ -150,3 +110,32 @@ clear_all(cls, cache_dir: Path | None = None) -> None
|
|
|
150
110
|
|
|
151
111
|
Clear all cached data for all servers.
|
|
152
112
|
|
|
113
|
+
|
|
114
|
+
### `OAuth` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#L182" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
OAuth client provider for MCP servers with browser-based authentication.
|
|
118
|
+
|
|
119
|
+
This class provides OAuth authentication for FastMCP clients by opening
|
|
120
|
+
a browser for user authorization and running a local callback server.
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
**Methods:**
|
|
124
|
+
|
|
125
|
+
#### `redirect_handler` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#L248" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
126
|
+
|
|
127
|
+
```python
|
|
128
|
+
redirect_handler(self, authorization_url: str) -> None
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Open browser for authorization.
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
#### `callback_handler` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/auth/oauth.py#L253" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
135
|
+
|
|
136
|
+
```python
|
|
137
|
+
callback_handler(self) -> tuple[str, str | None]
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Handle OAuth callback and return (auth_code, state).
|
|
141
|
+
|