fastmcp 2.13.1__tar.gz → 2.13.3__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.13.1 → fastmcp-2.13.3}/.github/workflows/auto-close-duplicates.yml +1 -1
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.github/workflows/auto-close-needs-mre.yml +1 -1
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.github/workflows/martian-issue-triage.yml +1 -1
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.github/workflows/martian-test-failure.yml +3 -3
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.github/workflows/marvin-dedupe-issues.yml +1 -1
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.github/workflows/marvin-label-triage.yml +1 -1
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.github/workflows/marvin.yml +1 -1
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.github/workflows/publish.yml +1 -1
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.github/workflows/run-static.yml +1 -1
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.github/workflows/run-tests.yml +3 -3
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.github/workflows/update-config-schema.yml +1 -1
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.github/workflows/update-sdk-docs.yml +1 -1
- {fastmcp-2.13.1 → fastmcp-2.13.3}/PKG-INFO +4 -3
- {fastmcp-2.13.1 → fastmcp-2.13.3}/README.md +1 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/deployment/http.mdx +2 -1
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/docs.json +2 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/azure.mdx +30 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/descope.mdx +26 -34
- fastmcp-2.13.3/docs/integrations/discord.mdx +255 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/scalekit.mdx +25 -18
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-cli-install-cursor.mdx +4 -4
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-client-auth-oauth.mdx +12 -12
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-client-client.mdx +14 -5
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-auth.mdx +14 -14
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-oauth_proxy.mdx +21 -21
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-oidc_proxy.mdx +2 -2
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-providers-descope.mdx +11 -11
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +8 -8
- fastmcp-2.13.3/docs/python-sdk/fastmcp-server-auth-providers-oci.mdx +103 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-providers-scalekit.mdx +4 -5
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-providers-supabase.mdx +11 -5
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-context.mdx +50 -28
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-dependencies.mdx +4 -4
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-server.mdx +29 -27
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-tools-tool.mdx +15 -15
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-logging.mdx +1 -1
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-types.mdx +22 -9
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/auth/oauth-proxy.mdx +18 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/auth/oidc-proxy.mdx +14 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/icons.mdx +1 -1
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/prompts.mdx +1 -1
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/resources.mdx +1 -1
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/server.mdx +2 -2
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/tools.mdx +4 -2
- fastmcp-2.13.3/examples/auth/discord_oauth/README.md +33 -0
- fastmcp-2.13.3/examples/auth/discord_oauth/client.py +32 -0
- fastmcp-2.13.3/examples/auth/discord_oauth/server.py +35 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/scalekit_oauth/README.md +5 -4
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/scalekit_oauth/server.py +13 -3
- {fastmcp-2.13.1 → fastmcp-2.13.3}/pyproject.toml +2 -2
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/oauth_proxy.py +152 -85
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/oidc_proxy.py +31 -3
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/providers/azure.py +96 -10
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/providers/descope.py +82 -23
- fastmcp-2.13.3/src/fastmcp/server/auth/providers/discord.py +308 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/providers/google.py +18 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/providers/scalekit.py +76 -17
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/dependencies.py +26 -4
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/proxy.py +10 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/server.py +4 -1
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/tools/tool.py +19 -1
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/tools/tool_transform.py +3 -1
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/types.py +49 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/ui.py +11 -2
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/providers/test_azure.py +397 -5
- fastmcp-2.13.3/tests/server/auth/providers/test_descope.py +264 -0
- fastmcp-2.13.3/tests/server/auth/providers/test_discord.py +119 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/providers/test_google.py +43 -0
- fastmcp-2.13.3/tests/server/auth/providers/test_scalekit.py +259 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/test_oauth_consent_flow.py +176 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/test_oidc_proxy.py +93 -0
- fastmcp-2.13.3/tests/server/http/test_stale_access_token.py +159 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/middleware/test_caching.py +2 -2
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/proxy/test_proxy_server.py +35 -4
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_tool_exclude_args.py +30 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/uv.lock +9 -136
- fastmcp-2.13.1/tests/server/auth/providers/test_descope.py +0 -163
- fastmcp-2.13.1/tests/server/auth/providers/test_scalekit.py +0 -155
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.ccignore +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.cursor/rules/core-mcp-objects.mdc +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.cursor/worktrees.json +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.github/copilot-instructions.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.github/dependabot.yml +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.github/pull_request_template.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.github/release.yml +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.gitignore +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/.pre-commit-config.yaml +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/AGENTS.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/CLAUDE.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/CODE_OF_CONDUCT.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/LICENSE +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/SECURITY.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/.ccignore +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/.cursor/rules/mintlify.mdc +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/brand/blue-logo.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/brand/f-watercolor-waves-dark.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/brand/f-watercolor-waves.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/brand/favicon.svg +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/brand/thumbnail-background.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/brand/wordmark-padded.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/brand/wordmark-watercolor-rainbow-dark.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/brand/wordmark-watercolor-rainbow.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/brand/wordmark-watercolor-waves-dark.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/brand/wordmark-watercolor-waves.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/brand/wordmark-white-padded.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/brand/wordmark-white.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/brand/wordmark.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/images/fastmcp_cloud/connect.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/images/fastmcp_cloud/create_project.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/images/fastmcp_cloud/deployment.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/images/fastmcp_cloud/quickstart.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/images/oauth-proxy-consent-screen.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/images/tutorial-rest-api-result.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/schemas/mcp_server_config/latest.json +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/schemas/mcp_server_config/v1.json +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/assets/updates/release-2-7.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/changelog.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/clients/auth/bearer.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/clients/auth/oauth.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/clients/client.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/clients/elicitation.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/clients/logging.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/clients/messages.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/clients/progress.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/clients/prompts.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/clients/resources.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/clients/roots.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/clients/sampling.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/clients/tools.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/clients/transports.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/community/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/community/showcase.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/css/banner.css +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/css/python-sdk.css +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/css/style.css +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/css/version-badge.css +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/deployment/fastmcp-cloud.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/deployment/running-server.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/deployment/server-configuration.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/development/contributing.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/development/releases.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/development/tests.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/development/upgrade-guide.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/getting-started/installation.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/getting-started/quickstart.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/getting-started/welcome.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/anthropic.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/auth0.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/authkit.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/aws-cognito.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/chatgpt.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/claude-code.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/claude-desktop.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/cursor-install-mcp.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/cursor.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/eunomia-authorization.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/fastapi.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/gemini-cli.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/gemini.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/github.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/google.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/images/authkit/enable_dcr.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/images/oci/ociaddapplication.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/images/oci/ocieditdomainsettings.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/images/oci/ocieditdomainsettingsbutton.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/images/oci/ocioauthconfiguration.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/images/permit/abac_condition_example.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/images/permit/abac_policy_example.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/images/permit/policy_mapping.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/images/permit/role_assignement.png +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/mcp-json-configuration.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/oci.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/openai.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/openapi.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/permit.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/integrations/workos.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/patterns/cli.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/patterns/contrib.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/patterns/decorating-methods.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/patterns/testing.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/patterns/tool-transformation.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/public/schemas/fastmcp.json/latest.json +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/public/schemas/fastmcp.json/v1.json +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-cli-__init__.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-cli-cli.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-cli-install-__init__.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-cli-install-claude_code.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-cli-install-claude_desktop.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-cli-install-gemini_cli.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-cli-install-mcp_json.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-cli-install-shared.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-cli-run.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-client-__init__.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-client-auth-__init__.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-client-auth-bearer.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-client-elicitation.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-client-logging.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-client-messages.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-client-oauth_callback.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-client-progress.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-client-roots.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-client-sampling.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-client-transports.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-exceptions.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-mcp_config.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-prompts-__init__.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-prompts-prompt.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-resources-__init__.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-resources-resource.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-resources-resource_manager.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-resources-template.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-resources-types.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-__init__.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-__init__.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-jwt_issuer.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-middleware.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-providers-__init__.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-providers-auth0.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-providers-aws.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-providers-azure.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-providers-debug.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-providers-github.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-providers-google.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-providers-introspection.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-providers-jwt.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-providers-workos.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-auth-redirect_validation.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-elicitation.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-http.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-low_level.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-middleware-__init__.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-middleware-caching.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-middleware-error_handling.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-middleware-logging.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-middleware-rate_limiting.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-middleware-timing.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-middleware-tool_injection.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-openapi.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-server-proxy.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-settings.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-tools-__init__.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-tools-tool_manager.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-tools-tool_transform.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-__init__.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-auth.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-cli.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-components.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-exceptions.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-http.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-inspect.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-json_schema.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-json_schema_type.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-__init__.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-__init__.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-__init__.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-base.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-uv.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-mcp_server_config.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-__init__.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-base.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-filesystem.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-openapi.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-tests.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/python-sdk/fastmcp-utilities-ui.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/auth/authentication.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/auth/full-oauth-server.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/auth/remote-oauth.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/auth/token-verification.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/composition.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/context.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/elicitation.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/logging.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/middleware.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/progress.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/proxy.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/sampling.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/servers/storage-backends.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/snippets/local-focus.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/snippets/version-badge.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/snippets/youtube-embed.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/tutorials/create-mcp-server.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/tutorials/mcp.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/tutorials/rest-api.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/docs/updates.mdx +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/atproto_mcp/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/atproto_mcp/demo.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/atproto_mcp/fastmcp.json +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/atproto_mcp/pyproject.toml +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/atproto_mcp/src/atproto_mcp/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/atproto_mcp/src/atproto_mcp/__main__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_client.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_posts.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_profile.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_read.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_social.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/atproto_mcp/src/atproto_mcp/py.typed +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/atproto_mcp/src/atproto_mcp/server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/atproto_mcp/src/atproto_mcp/settings.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/atproto_mcp/src/atproto_mcp/types.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/authkit_dcr/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/authkit_dcr/client.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/authkit_dcr/server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/aws_oauth/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/aws_oauth/client.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/aws_oauth/requirements.txt +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/aws_oauth/server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/azure_oauth/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/azure_oauth/client.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/azure_oauth/server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/github_oauth/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/github_oauth/client.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/github_oauth/server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/google_oauth/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/google_oauth/client.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/google_oauth/server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/scalekit_oauth/client.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/workos_oauth/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/workos_oauth/client.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/auth/workos_oauth/server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/complex_inputs.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/config_server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/desktop.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/echo.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/fastmcp_config/env_interpolation_example.json +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/fastmcp_config/fastmcp.json +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/fastmcp_config/full_example.fastmcp.json +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/fastmcp_config/server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/fastmcp_config/simple.fastmcp.json +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/fastmcp_config_demo/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/fastmcp_config_demo/fastmcp.json +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/fastmcp_config_demo/server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/get_file.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/in_memory_proxy_example.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/memory.fastmcp.json +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/memory.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/mount_example.fastmcp.json +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/mount_example.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/sampling.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/sampling_fallback.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/screenshot.fastmcp.json +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/screenshot.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/serializer.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/simple_echo.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/smart_home/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/smart_home/hub.fastmcp.json +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/smart_home/lights.fastmcp.json +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/smart_home/pyproject.toml +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/smart_home/src/smart_home/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/smart_home/src/smart_home/__main__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/smart_home/src/smart_home/hub.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/smart_home/src/smart_home/lights/server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/smart_home/src/smart_home/py.typed +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/smart_home/src/smart_home/settings.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/tags_example.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/testing_demo/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/testing_demo/pyproject.toml +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/testing_demo/server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/testing_demo/tests/test_server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/testing_demo/uv.lock +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/text_me.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/examples/tool_result_echo.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/justfile +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/logo.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/scripts/auto_close_duplicates.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/scripts/auto_close_needs_mre.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/cli/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/cli/cli.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/cli/install/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/cli/install/claude_code.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/cli/install/claude_desktop.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/cli/install/cursor.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/cli/install/gemini_cli.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/cli/install/mcp_json.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/cli/install/shared.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/cli/run.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/client/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/client/auth/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/client/auth/bearer.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/client/auth/oauth.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/client/client.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/client/elicitation.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/client/logging.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/client/messages.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/client/oauth_callback.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/client/progress.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/client/roots.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/client/sampling.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/client/transports.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/contrib/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/contrib/component_manager/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/contrib/component_manager/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/contrib/component_manager/component_service.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/contrib/component_manager/example.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/exceptions.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/experimental/sampling/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/experimental/sampling/handlers/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/experimental/sampling/handlers/base.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/experimental/sampling/handlers/openai.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/experimental/server/openapi/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/experimental/server/openapi/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/experimental/server/openapi/components.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/experimental/server/openapi/routing.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/experimental/server/openapi/server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/experimental/utilities/openapi/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/experimental/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/experimental/utilities/openapi/director.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/experimental/utilities/openapi/formatters.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/experimental/utilities/openapi/json_schema_converter.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/experimental/utilities/openapi/models.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/experimental/utilities/openapi/parser.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/experimental/utilities/openapi/schemas.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/mcp_config.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/prompts/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/prompts/prompt.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/prompts/prompt_manager.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/py.typed +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/resources/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/resources/resource.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/resources/resource_manager.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/resources/template.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/resources/types.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/auth.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/handlers/authorize.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/jwt_issuer.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/middleware.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/providers/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/providers/auth0.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/providers/aws.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/providers/bearer.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/providers/debug.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/providers/github.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/providers/in_memory.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/providers/introspection.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/providers/jwt.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/providers/oci.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/providers/supabase.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/providers/workos.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/auth/redirect_validation.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/context.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/elicitation.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/http.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/low_level.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/middleware/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/middleware/caching.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/middleware/error_handling.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/middleware/logging.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/middleware/middleware.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/middleware/rate_limiting.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/middleware/timing.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/middleware/tool_injection.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/openapi.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/server/sampling/handler.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/settings.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/tools/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/tools/tool_manager.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/auth.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/cli.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/components.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/exceptions.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/http.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/inspect.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/json_schema.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/json_schema_type.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/logging.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/mcp_config.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/openapi.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/src/fastmcp/utilities/tests.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/cli/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/cli/test_cli.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/cli/test_config.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/cli/test_cursor.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/cli/test_install.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/cli/test_mcp_server_config_integration.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/cli/test_mcp_server_config_schema.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/cli/test_project_prepare.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/cli/test_run.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/cli/test_run_config.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/cli/test_server_args.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/cli/test_shared.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/cli/test_with_argv.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/auth/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/auth/test_oauth_client.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/test_client.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/test_elicitation.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/test_logs.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/test_notifications.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/test_oauth_callback_xss.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/test_openapi_experimental.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/test_openapi_legacy.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/test_progress.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/test_roots.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/test_sampling.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/test_sse.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/test_stdio.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/test_streamable_http.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/transports/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/transports/test_transports.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/client/transports/test_uv_transport.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/conftest.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/contrib/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/contrib/test_bulk_tool_caller.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/contrib/test_component_manager.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/contrib/test_mcp_mixin.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/deprecated/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/deprecated/test_bearer_auth_provider.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/deprecated/test_dependencies.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/deprecated/test_deprecated.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/deprecated/test_mount_import_arg_order.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/deprecated/test_mount_separators.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/deprecated/test_output_schema_false.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/deprecated/test_proxy_client.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/deprecated/test_resource_prefixes.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/deprecated/test_route_type_ignore.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/deprecated/test_settings.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/README.md +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/conftest.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/server/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/server/openapi/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/server/openapi/test_comprehensive.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/server/openapi/test_deepobject_style.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/server/openapi/test_end_to_end_compatibility.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/server/openapi/test_openapi_features.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/server/openapi/test_openapi_performance.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/server/openapi/test_parameter_collisions.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/server/openapi/test_performance_comparison.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/server/openapi/test_server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/utilities/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/utilities/openapi/conftest.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/utilities/openapi/test_allof_requestbody.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/utilities/openapi/test_direct_array_schemas.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/utilities/openapi/test_director.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/utilities/openapi/test_legacy_compatibility.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/utilities/openapi/test_models.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/utilities/openapi/test_nullable_fields.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/utilities/openapi/test_parser.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/utilities/openapi/test_schemas.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/openapi_parser/utilities/openapi/test_transitive_references.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/experimental/sampling/test_openai_handler.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/integration_tests/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/integration_tests/auth/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/integration_tests/auth/test_github_provider_integration.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/integration_tests/conftest.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/integration_tests/test_github_mcp_remote.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/prompts/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/prompts/test_prompt.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/prompts/test_prompt_manager.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/resources/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/resources/test_file_resources.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/resources/test_function_resources.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/resources/test_resource_manager.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/resources/test_resource_template.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/resources/test_resource_template_meta.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/resources/test_resources.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/providers/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/providers/test_auth0.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/providers/test_aws.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/providers/test_github.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/providers/test_introspection.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/providers/test_supabase.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/providers/test_workos.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/test_auth_provider.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/test_debug_verifier.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/test_enhanced_error_responses.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/test_jwt_issuer.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/test_jwt_provider.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/test_oauth_mounting.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/test_oauth_proxy.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/test_oauth_proxy_redirect_validation.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/test_oauth_proxy_storage.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/test_redirect_validation.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/test_remote_auth_provider.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/auth/test_static_token_verifier.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/http/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/http/test_bearer_auth_backend.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/http/test_custom_routes.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/http/test_http_auth_middleware.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/http/test_http_dependencies.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/http/test_http_middleware.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/middleware/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/middleware/test_error_handling.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/middleware/test_initialization_middleware.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/middleware/test_logging.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/middleware/test_middleware.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/middleware/test_rate_limiting.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/middleware/test_timing.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/middleware/test_tool_injection.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/openapi/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/openapi/conftest.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/openapi/test_advanced_behavior.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/openapi/test_basic_functionality.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/openapi/test_configuration.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/openapi/test_deepobject_style.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/openapi/test_description_propagation.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/openapi/test_explode_integration.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/openapi/test_openapi_compatibility.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/openapi/test_openapi_path_parameters.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/openapi/test_optional_parameters.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/openapi/test_parameter_collisions.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/openapi/test_route_map_fn.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/proxy/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/proxy/test_proxy_client.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/proxy/test_stateful_proxy_client.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_app_state.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_auth_integration.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_context.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_experimental_openapi_feature_flag.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_file_server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_icons.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_import_server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_input_validation.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_log_level.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_logging.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_mount.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_resource_prefix_formats.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_run_server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_server.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_server_interactions.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_server_lifespan.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_streamable_http_no_redirect.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_tool_annotations.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/server/test_tool_transformation.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/test_examples.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/test_mcp_config.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/tools/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/tools/test_tool.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/tools/test_tool_future_annotations.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/tools/test_tool_manager.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/tools/test_tool_transform.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/utilities/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/utilities/openapi/conftest.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/utilities/openapi/test_nullable_fields.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/utilities/openapi/test_openapi.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/utilities/openapi/test_openapi_advanced.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/utilities/openapi/test_openapi_fastapi.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/utilities/openapi/test_openapi_output_schemas.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/utilities/test_cli.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/utilities/test_components.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/utilities/test_inspect.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/utilities/test_json_schema.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/utilities/test_json_schema_type.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/utilities/test_logging.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/utilities/test_tests.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/utilities/test_typeadapter.py +0 -0
- {fastmcp-2.13.1 → fastmcp-2.13.3}/tests/utilities/test_types.py +0 -0
|
@@ -2,7 +2,7 @@ name: Marvin Test Failure Analysis
|
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
4
|
workflow_run:
|
|
5
|
-
workflows: ["Run
|
|
5
|
+
workflows: ["Tests", "Run static analysis"]
|
|
6
6
|
types:
|
|
7
7
|
- completed
|
|
8
8
|
|
|
@@ -23,7 +23,7 @@ jobs:
|
|
|
23
23
|
actions: read # Required for Claude to read CI results
|
|
24
24
|
steps:
|
|
25
25
|
- name: Checkout repository
|
|
26
|
-
uses: actions/checkout@
|
|
26
|
+
uses: actions/checkout@v6
|
|
27
27
|
with:
|
|
28
28
|
fetch-depth: 1
|
|
29
29
|
|
|
@@ -35,7 +35,7 @@ jobs:
|
|
|
35
35
|
private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
|
|
36
36
|
|
|
37
37
|
- name: Set up Python 3.10
|
|
38
|
-
uses: actions/setup-python@
|
|
38
|
+
uses: actions/setup-python@v6
|
|
39
39
|
with:
|
|
40
40
|
python-version: "3.10"
|
|
41
41
|
|
|
@@ -31,7 +31,7 @@ jobs:
|
|
|
31
31
|
(github.event_name == 'issues' && github.event.action == 'labeled' && github.event.label.name == 'marvin')
|
|
32
32
|
runs-on: ubuntu-latest
|
|
33
33
|
steps:
|
|
34
|
-
- uses: actions/checkout@
|
|
34
|
+
- uses: actions/checkout@v6
|
|
35
35
|
|
|
36
36
|
# Install UV package manager
|
|
37
37
|
- name: Install UV
|
|
@@ -34,7 +34,7 @@ jobs:
|
|
|
34
34
|
timeout-minutes: 10
|
|
35
35
|
|
|
36
36
|
steps:
|
|
37
|
-
- uses: actions/checkout@
|
|
37
|
+
- uses: actions/checkout@v6
|
|
38
38
|
|
|
39
39
|
- name: Install uv
|
|
40
40
|
uses: astral-sh/setup-uv@v7
|
|
@@ -60,7 +60,7 @@ jobs:
|
|
|
60
60
|
timeout-minutes: 10
|
|
61
61
|
|
|
62
62
|
steps:
|
|
63
|
-
- uses: actions/checkout@
|
|
63
|
+
- uses: actions/checkout@v6
|
|
64
64
|
|
|
65
65
|
- name: Install uv
|
|
66
66
|
uses: astral-sh/setup-uv@v7
|
|
@@ -85,7 +85,7 @@ jobs:
|
|
|
85
85
|
timeout-minutes: 10
|
|
86
86
|
|
|
87
87
|
steps:
|
|
88
|
-
- uses: actions/checkout@
|
|
88
|
+
- uses: actions/checkout@v6
|
|
89
89
|
|
|
90
90
|
- name: Install uv
|
|
91
91
|
uses: astral-sh/setup-uv@v7
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fastmcp
|
|
3
|
-
Version: 2.13.
|
|
3
|
+
Version: 2.13.3
|
|
4
4
|
Summary: The fast, Pythonic way to build MCP servers and clients.
|
|
5
5
|
Project-URL: Homepage, https://gofastmcp.com
|
|
6
6
|
Project-URL: Repository, https://github.com/jlowin/fastmcp
|
|
@@ -23,10 +23,10 @@ Requires-Dist: cyclopts>=4.0.0
|
|
|
23
23
|
Requires-Dist: exceptiongroup>=1.2.2
|
|
24
24
|
Requires-Dist: httpx>=0.28.1
|
|
25
25
|
Requires-Dist: jsonschema-path>=0.3.4
|
|
26
|
-
Requires-Dist: mcp!=1.21.1,<
|
|
26
|
+
Requires-Dist: mcp!=1.21.1,<1.23,>=1.19.0
|
|
27
27
|
Requires-Dist: openapi-pydantic>=0.5.1
|
|
28
28
|
Requires-Dist: platformdirs>=4.0.0
|
|
29
|
-
Requires-Dist: py-key-value-aio[disk,
|
|
29
|
+
Requires-Dist: py-key-value-aio[disk,memory]<0.4.0,>=0.2.8
|
|
30
30
|
Requires-Dist: pydantic[email]>=2.11.7
|
|
31
31
|
Requires-Dist: pyperclip>=1.9.0
|
|
32
32
|
Requires-Dist: python-dotenv>=1.1.0
|
|
@@ -355,6 +355,7 @@ FastMCP provides comprehensive authentication support that sets it apart from ba
|
|
|
355
355
|
- **Auth0**
|
|
356
356
|
- **WorkOS**
|
|
357
357
|
- **Descope**
|
|
358
|
+
- **Discord**
|
|
358
359
|
- **JWT/Custom**
|
|
359
360
|
- **API Keys**
|
|
360
361
|
|
|
@@ -510,6 +510,7 @@ When deploying to production, you'll want to optimize your server for performanc
|
|
|
510
510
|
# Run with basic configuration
|
|
511
511
|
uvicorn app:app --host 0.0.0.0 --port 8000
|
|
512
512
|
|
|
513
|
+
# Ensure stateless HTTP mode is enabled (stateless_http=True)
|
|
513
514
|
# Run with multiple workers for production
|
|
514
515
|
uvicorn app:app --host 0.0.0.0 --port 8000 --workers 4
|
|
515
516
|
```
|
|
@@ -601,4 +602,4 @@ This guide has shown you how to create an HTTP-accessible MCP server, but you'll
|
|
|
601
602
|
- **Edge platforms** (Cloudflare Workers)
|
|
602
603
|
- **Kubernetes clusters** (self-managed or managed)
|
|
603
604
|
|
|
604
|
-
The key requirements are Python 3.10+ support and the ability to expose an HTTP port. Most providers will require you to package your server (requirements.txt, Dockerfile, etc.) according to their deployment format. For managed, zero-configuration deployment, see [FastMCP Cloud](/deployment/fastmcp-cloud).
|
|
605
|
+
The key requirements are Python 3.10+ support and the ability to expose an HTTP port. Most providers will require you to package your server (requirements.txt, Dockerfile, etc.) according to their deployment format. For managed, zero-configuration deployment, see [FastMCP Cloud](/deployment/fastmcp-cloud).
|
|
@@ -197,6 +197,7 @@
|
|
|
197
197
|
"integrations/aws-cognito",
|
|
198
198
|
"integrations/azure",
|
|
199
199
|
"integrations/descope",
|
|
200
|
+
"integrations/discord",
|
|
200
201
|
"integrations/github",
|
|
201
202
|
"integrations/scalekit",
|
|
202
203
|
"integrations/google",
|
|
@@ -363,6 +364,7 @@
|
|
|
363
364
|
"python-sdk/fastmcp-server-auth-providers-in_memory",
|
|
364
365
|
"python-sdk/fastmcp-server-auth-providers-introspection",
|
|
365
366
|
"python-sdk/fastmcp-server-auth-providers-jwt",
|
|
367
|
+
"python-sdk/fastmcp-server-auth-providers-oci",
|
|
366
368
|
"python-sdk/fastmcp-server-auth-providers-scalekit",
|
|
367
369
|
"python-sdk/fastmcp-server-auth-providers-supabase",
|
|
368
370
|
"python-sdk/fastmcp-server-auth-providers-workos"
|
|
@@ -164,6 +164,34 @@ Using your specific tenant ID is recommended for better security and control.
|
|
|
164
164
|
**Important**: The `required_scopes` parameter is **REQUIRED** and must include at least one scope. Azure's OAuth API requires the `scope` parameter in all authorization requests - you cannot authenticate without specifying at least one scope. Use the unprefixed scope names from your Azure App registration (e.g., `["read", "write"]`). These scopes must be created under **Expose an API** in your App registration.
|
|
165
165
|
</Note>
|
|
166
166
|
|
|
167
|
+
### Scope Handling
|
|
168
|
+
|
|
169
|
+
FastMCP automatically prefixes `required_scopes` with your `identifier_uri` (e.g., `api://your-client-id`) since these are your custom API scopes. Scopes in `additional_authorize_scopes` are sent as-is since they target external resources like Microsoft Graph.
|
|
170
|
+
|
|
171
|
+
**`required_scopes`** — Your custom API scopes, defined in Azure "Expose an API":
|
|
172
|
+
|
|
173
|
+
| You write | Sent to Azure | Validated on tokens |
|
|
174
|
+
|-----------|---------------|---------------------|
|
|
175
|
+
| `mcp-read` | `api://xxx/mcp-read` | ✓ |
|
|
176
|
+
| `my.scope` | `api://xxx/my.scope` | ✓ |
|
|
177
|
+
| `openid` | `openid` | ✗ (OIDC scope) |
|
|
178
|
+
| `api://xxx/read` | `api://xxx/read` | ✓ |
|
|
179
|
+
|
|
180
|
+
**`additional_authorize_scopes`** — External scopes (e.g., Microsoft Graph) for server-side use:
|
|
181
|
+
|
|
182
|
+
| You write | Sent to Azure | Validated on tokens |
|
|
183
|
+
|-----------|---------------|---------------------|
|
|
184
|
+
| `User.Read` | `User.Read` | ✗ |
|
|
185
|
+
| `Mail.Send` | `Mail.Send` | ✗ |
|
|
186
|
+
|
|
187
|
+
<Info>
|
|
188
|
+
**Why aren't `additional_authorize_scopes` validated?** Azure issues separate tokens per resource. The access token FastMCP receives is for *your API*—Graph scopes aren't in its `scp` claim. To call Graph APIs, your server uses the upstream Azure token in an on-behalf-of (OBO) flow.
|
|
189
|
+
</Info>
|
|
190
|
+
|
|
191
|
+
<Note>
|
|
192
|
+
OIDC scopes (`openid`, `profile`, `email`, `offline_access`) are never prefixed and excluded from validation because Azure doesn't include them in access token `scp` claims.
|
|
193
|
+
</Note>
|
|
194
|
+
|
|
167
195
|
## Testing
|
|
168
196
|
|
|
169
197
|
### Running the Server
|
|
@@ -304,6 +332,8 @@ Redirect path configured in your Azure App registration
|
|
|
304
332
|
<ParamField path="FASTMCP_SERVER_AUTH_AZURE_REQUIRED_SCOPES" required>
|
|
305
333
|
Comma-, space-, or JSON-separated list of required scopes for your API (at least one scope required). These are validated on tokens and used as defaults if the client does not request specific scopes. Use unprefixed scope names from your Azure App registration (e.g., `read,write`).
|
|
306
334
|
|
|
335
|
+
You can include standard OIDC scopes (`openid`, `profile`, `email`, `offline_access`) in `required_scopes`. FastMCP automatically handles them correctly: they're sent to Azure unprefixed and excluded from token validation (since Azure doesn't include OIDC scopes in access token `scp` claims).
|
|
336
|
+
|
|
307
337
|
<Note>
|
|
308
338
|
Azure's OAuth API requires the `scope` parameter - you must provide at least one scope.
|
|
309
339
|
</Note>
|
|
@@ -6,7 +6,7 @@ icon: shield-check
|
|
|
6
6
|
tag: NEW
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
import { VersionBadge } from "/snippets/version-badge.mdx"
|
|
9
|
+
import { VersionBadge } from "/snippets/version-badge.mdx";
|
|
10
10
|
|
|
11
11
|
<VersionBadge version="2.12.4" />
|
|
12
12
|
|
|
@@ -17,28 +17,29 @@ This guide shows you how to secure your FastMCP server using [**Descope**](https
|
|
|
17
17
|
### Prerequisites
|
|
18
18
|
|
|
19
19
|
Before you begin, you will need:
|
|
20
|
+
|
|
20
21
|
1. To [sign up](https://www.descope.com/sign-up) for a Free Forever Descope account
|
|
21
|
-
2. Your
|
|
22
|
-
3. Your FastMCP server's URL (can be localhost for development, e.g., `http://localhost:3000`)
|
|
22
|
+
2. Your FastMCP server's URL (can be localhost for development, e.g., `http://localhost:3000`)
|
|
23
23
|
|
|
24
24
|
### Step 1: Configure Descope
|
|
25
25
|
|
|
26
26
|
<Steps>
|
|
27
|
-
<Step title="
|
|
28
|
-
1. Go to the [
|
|
29
|
-
2.
|
|
30
|
-
3.
|
|
31
|
-
4.
|
|
27
|
+
<Step title="Create an MCP Server">
|
|
28
|
+
1. Go to the [MCP Servers page](https://app.descope.com/mcp-servers) of the Descope Console, and create a new MCP Server.
|
|
29
|
+
2. Give the MCP server a name and description.
|
|
30
|
+
3. Ensure that **Dynamic Client Registration (DCR)** is enabled. Then click **Create**.
|
|
31
|
+
4. Once you've created the MCP Server, note your Well-Known URL.
|
|
32
|
+
|
|
32
33
|
|
|
33
34
|
<Warning>
|
|
34
35
|
DCR is required for FastMCP clients to automatically register with your authentication server.
|
|
35
36
|
</Warning>
|
|
36
37
|
</Step>
|
|
37
38
|
|
|
38
|
-
<Step title="Note Your
|
|
39
|
-
Save your
|
|
39
|
+
<Step title="Note Your Well-Known URL">
|
|
40
|
+
Save your Well-Known URL from [MCP Server Settings](https://app.descope.com/mcp-servers):
|
|
40
41
|
```
|
|
41
|
-
|
|
42
|
+
Well-Known URL: https://.../v1/apps/agentic/P.../M.../.well-known/openid-configuration
|
|
42
43
|
```
|
|
43
44
|
</Step>
|
|
44
45
|
</Steps>
|
|
@@ -48,15 +49,10 @@ Before you begin, you will need:
|
|
|
48
49
|
Create a `.env` file with your Descope configuration:
|
|
49
50
|
|
|
50
51
|
```bash
|
|
51
|
-
|
|
52
|
-
DESCOPE_BASE_URL=https://api.descope.com # Descope API URL
|
|
52
|
+
DESCOPE_CONFIG_URL=https://.../v1/apps/agentic/P.../M.../.well-known/openid-configuration # Your Descope Well-Known URL
|
|
53
53
|
SERVER_URL=http://localhost:3000 # Your server's base URL
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
<Note>
|
|
57
|
-
You can find your project's Descope Base URL in the [Multi-Region Support Guide](https://docs.descope.com/management/project-settings/multi-regional).
|
|
58
|
-
</Note>
|
|
59
|
-
|
|
60
56
|
### Step 3: FastMCP Configuration
|
|
61
57
|
|
|
62
58
|
Create your FastMCP server file and use the DescopeProvider to handle all the OAuth integration automatically:
|
|
@@ -68,9 +64,8 @@ from fastmcp.server.auth.providers.descope import DescopeProvider
|
|
|
68
64
|
# The DescopeProvider automatically discovers Descope endpoints
|
|
69
65
|
# and configures JWT token validation
|
|
70
66
|
auth_provider = DescopeProvider(
|
|
71
|
-
|
|
67
|
+
config_url=https://.../.well-known/openid-configuration, # Your MCP Server .well-known URL
|
|
72
68
|
base_url=SERVER_URL, # Your server's public URL
|
|
73
|
-
descope_base_url=DESCOPE_BASE_URL, # Descope API base URL
|
|
74
69
|
)
|
|
75
70
|
|
|
76
71
|
# Create FastMCP server with auth
|
|
@@ -80,7 +75,7 @@ mcp = FastMCP(name="My Descope Protected Server", auth=auth_provider)
|
|
|
80
75
|
|
|
81
76
|
## Testing
|
|
82
77
|
|
|
83
|
-
To test your server, you can use the `fastmcp` CLI to run it locally. Assuming you've saved the above code to `server.py` (after replacing the
|
|
78
|
+
To test your server, you can use the `fastmcp` CLI to run it locally. Assuming you've saved the above code to `server.py` (after replacing the environment variables with your actual values!), you can run the following command:
|
|
84
79
|
|
|
85
80
|
```bash
|
|
86
81
|
fastmcp run server.py --transport http --port 8000
|
|
@@ -102,7 +97,6 @@ if __name__ == "__main__":
|
|
|
102
97
|
|
|
103
98
|
## Environment Variables
|
|
104
99
|
|
|
105
|
-
|
|
106
100
|
For production deployments, use environment variables instead of hardcoding credentials.
|
|
107
101
|
|
|
108
102
|
### Provider Selection
|
|
@@ -110,9 +104,10 @@ For production deployments, use environment variables instead of hardcoding cred
|
|
|
110
104
|
Setting this environment variable allows the Descope provider to be used automatically without explicitly instantiating it in code.
|
|
111
105
|
|
|
112
106
|
<Card>
|
|
113
|
-
<ParamField path="FASTMCP_SERVER_AUTH" default="Not set">
|
|
114
|
-
Set to `fastmcp.server.auth.providers.descope.DescopeProvider` to use
|
|
115
|
-
|
|
107
|
+
<ParamField path="FASTMCP_SERVER_AUTH" default="Not set">
|
|
108
|
+
Set to `fastmcp.server.auth.providers.descope.DescopeProvider` to use
|
|
109
|
+
Descope authentication.
|
|
110
|
+
</ParamField>
|
|
116
111
|
</Card>
|
|
117
112
|
|
|
118
113
|
### Descope-Specific Configuration
|
|
@@ -120,28 +115,25 @@ Set to `fastmcp.server.auth.providers.descope.DescopeProvider` to use Descope au
|
|
|
120
115
|
These environment variables provide default values for the Descope provider, whether it's instantiated manually or configured via `FASTMCP_SERVER_AUTH`.
|
|
121
116
|
|
|
122
117
|
<Card>
|
|
123
|
-
<ParamField path="
|
|
124
|
-
Your
|
|
118
|
+
<ParamField path="FASTMCP_SERVER_AUTH_DESCOPEPROVIDER_CONFIG_URL" required>
|
|
119
|
+
Your Well-Known URL from the [Descope Console](https://app.descope.com/mcp-servers)
|
|
125
120
|
</ParamField>
|
|
126
121
|
|
|
127
122
|
<ParamField path="FASTMCP_SERVER_AUTH_DESCOPEPROVIDER_BASE_URL" required>
|
|
128
|
-
Public URL of your FastMCP server (e.g., `https://your-server.com` or
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
<ParamField path="FASTMCP_SERVER_AUTH_DESCOPEPROVIDER_DESCOPE_BASE_URL" default="https://api.descope.com">
|
|
132
|
-
Descope API base URL for your [region/environment](https://docs.descope.com/management/project-settings/multi-regional)
|
|
123
|
+
Public URL of your FastMCP server (e.g., `https://your-server.com` or
|
|
124
|
+
`http://localhost:8000` for development)
|
|
133
125
|
</ParamField>
|
|
134
126
|
</Card>
|
|
135
127
|
|
|
136
128
|
Example `.env` file:
|
|
129
|
+
|
|
137
130
|
```bash
|
|
138
131
|
# Use the Descope provider
|
|
139
132
|
FASTMCP_SERVER_AUTH=fastmcp.server.auth.providers.descope.DescopeProvider
|
|
140
133
|
|
|
141
134
|
# Descope configuration
|
|
142
|
-
|
|
135
|
+
FASTMCP_SERVER_AUTH_DESCOPEPROVIDER_CONFIG_URL=https://.../v1/apps/agentic/P.../M.../.well-known/openid-configuration
|
|
143
136
|
FASTMCP_SERVER_AUTH_DESCOPEPROVIDER_BASE_URL=https://your-server.com
|
|
144
|
-
FASTMCP_SERVER_AUTH_DESCOPEPROVIDER_DESCOPE_BASE_URL=https://api.descope.com
|
|
145
137
|
```
|
|
146
138
|
|
|
147
139
|
With environment variables set, your server code simplifies to:
|
|
@@ -151,4 +143,4 @@ from fastmcp import FastMCP
|
|
|
151
143
|
|
|
152
144
|
# Authentication is automatically configured from environment
|
|
153
145
|
mcp = FastMCP(name="My Descope Protected Server")
|
|
154
|
-
```
|
|
146
|
+
```
|