fastmcp 2.14.1__tar.gz → 2.14.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fastmcp-2.14.1 → fastmcp-2.14.2}/PKG-INFO +6 -3
- {fastmcp-2.14.1 → fastmcp-2.14.2}/README.md +3 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/changelog.mdx +166 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/docs.json +2 -2
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/getting-started/installation.mdx +4 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/getting-started/welcome.mdx +4 -1
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/supabase.mdx +7 -2
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/updates.mdx +72 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/pyproject.toml +2 -2
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/prompts/prompt_manager.py +3 -4
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/resources/resource_manager.py +9 -14
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/auth.py +20 -5
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/oauth_proxy.py +73 -15
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/providers/supabase.py +11 -6
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/dependencies.py +5 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/elicitation.py +7 -3
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/middleware/error_handling.py +1 -1
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/openapi/components.py +2 -4
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/server.py +17 -53
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/tools/tool.py +5 -1
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/tools/tool_manager.py +5 -7
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/cli.py +23 -43
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/json_schema.py +40 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/openapi/schemas.py +4 -4
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/test_elicitation.py +16 -4
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/test_sse.py +5 -6
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/test_streamable_http.py +10 -10
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/transports/test_uv_transport.py +27 -5
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/providers/test_supabase.py +24 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/test_oauth_proxy.py +210 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/middleware/test_error_handling.py +18 -1
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/openapi/test_comprehensive.py +32 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/test_server_tasks_parameter.py +26 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/test_task_methods.py +43 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_dependencies.py +44 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_logging.py +21 -6
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/tools/test_tool.py +71 -18
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/test_json_schema.py +150 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/uv.lock +5 -5
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.ccignore +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.cursor/rules/core-mcp-objects.mdc +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.cursor/worktrees.json +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/copilot-instructions.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/dependabot.yml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/pull_request_template.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/release.yml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/workflows/auto-close-duplicates.yml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/workflows/auto-close-needs-mre.yml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/workflows/martian-issue-triage.yml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/workflows/martian-test-failure.yml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/workflows/marvin-dedupe-issues.yml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/workflows/marvin-label-triage.yml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/workflows/marvin.yml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/workflows/publish.yml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/workflows/run-static.yml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/workflows/run-tests.yml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/workflows/update-config-schema.yml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.github/workflows/update-sdk-docs.yml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.gitignore +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/.pre-commit-config.yaml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/AGENTS.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/CLAUDE.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/CODE_OF_CONDUCT.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/LICENSE +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/SECURITY.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/.ccignore +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/.cursor/rules/mintlify.mdc +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/brand/blue-logo.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/brand/f-watercolor-waves-dark.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/brand/f-watercolor-waves.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/brand/favicon.svg +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/brand/thumbnail-background.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/brand/wordmark-padded.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/brand/wordmark-watercolor-rainbow-dark.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/brand/wordmark-watercolor-rainbow.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/brand/wordmark-watercolor-waves-dark.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/brand/wordmark-watercolor-waves.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/brand/wordmark-white-padded.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/brand/wordmark-white.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/brand/wordmark.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/images/fastmcp_cloud/connect.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/images/fastmcp_cloud/create_project.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/images/fastmcp_cloud/deployment.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/images/fastmcp_cloud/quickstart.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/images/oauth-proxy-consent-screen.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/images/tutorial-rest-api-result.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/schemas/mcp_server_config/latest.json +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/schemas/mcp_server_config/v1.json +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/assets/updates/release-2-7.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/clients/auth/bearer.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/clients/auth/oauth.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/clients/client.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/clients/elicitation.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/clients/logging.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/clients/messages.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/clients/progress.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/clients/prompts.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/clients/resources.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/clients/roots.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/clients/sampling.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/clients/tasks.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/clients/tools.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/clients/transports.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/community/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/community/showcase.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/css/banner.css +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/css/python-sdk.css +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/css/style.css +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/css/version-badge.css +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/deployment/fastmcp-cloud.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/deployment/http.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/deployment/running-server.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/deployment/server-configuration.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/development/contributing.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/development/releases.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/development/tests.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/development/upgrade-guide.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/getting-started/quickstart.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/anthropic.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/auth0.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/authkit.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/aws-cognito.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/azure.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/chatgpt.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/claude-code.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/claude-desktop.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/cursor-install-mcp.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/cursor.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/descope.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/discord.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/eunomia-authorization.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/fastapi.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/gemini-cli.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/gemini.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/github.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/google.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/images/authkit/enable_dcr.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/images/oci/ociaddapplication.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/images/oci/ocieditdomainsettings.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/images/oci/ocieditdomainsettingsbutton.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/images/oci/ocioauthconfiguration.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/images/permit/abac_condition_example.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/images/permit/abac_policy_example.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/images/permit/policy_mapping.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/images/permit/role_assignement.png +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/mcp-json-configuration.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/oci.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/openai.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/openapi.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/permit.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/scalekit.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/integrations/workos.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/patterns/cli.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/patterns/contrib.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/patterns/decorating-methods.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/patterns/testing.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/patterns/tool-transformation.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/public/schemas/fastmcp.json/latest.json +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/public/schemas/fastmcp.json/v1.json +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-cli-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-cli-cli.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-cli-install-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-cli-install-claude_code.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-cli-install-claude_desktop.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-cli-install-cursor.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-cli-install-gemini_cli.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-cli-install-mcp_json.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-cli-install-shared.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-cli-run.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-cli-tasks.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-client-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-client-auth-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-client-auth-bearer.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-client-auth-oauth.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-client-client.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-client-elicitation.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-client-logging.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-client-messages.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-client-oauth_callback.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-client-progress.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-client-roots.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-client-sampling.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-client-tasks.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-client-transports.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-dependencies.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-exceptions.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-mcp_config.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-prompts-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-prompts-prompt.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-resources-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-resources-resource.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-resources-resource_manager.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-resources-template.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-resources-types.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-auth.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-jwt_issuer.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-middleware.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-oauth_proxy.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-oidc_proxy.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-providers-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-providers-auth0.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-providers-aws.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-providers-azure.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-providers-debug.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-providers-descope.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-providers-discord.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-providers-github.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-providers-google.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-providers-introspection.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-providers-jwt.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-providers-oci.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-providers-scalekit.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-providers-supabase.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-providers-workos.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-auth-redirect_validation.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-context.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-dependencies.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-elicitation.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-event_store.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-http.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-low_level.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-middleware-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-middleware-caching.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-middleware-error_handling.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-middleware-logging.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-middleware-rate_limiting.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-middleware-timing.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-middleware-tool_injection.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-openapi-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-openapi-components.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-openapi-routing.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-openapi-server.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-proxy.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-server.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-tasks-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-tasks-capabilities.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-tasks-config.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-tasks-converters.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-tasks-handlers.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-tasks-keys.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-tasks-protocol.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-server-tasks-subscriptions.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-settings.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-tools-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-tools-tool.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-tools-tool_manager.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-tools-tool_transform.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-auth.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-cli.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-components.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-exceptions.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-http.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-inspect.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-json_schema.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-json_schema_type.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-logging.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-base.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-uv.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-mcp_server_config.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-base.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-filesystem.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-openapi-__init__.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-openapi-director.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-openapi-formatters.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-openapi-json_schema_converter.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-openapi-models.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-openapi-parser.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-openapi-schemas.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-tests.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-types.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/python-sdk/fastmcp-utilities-ui.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/auth/authentication.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/auth/full-oauth-server.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/auth/oauth-proxy.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/auth/oidc-proxy.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/auth/remote-oauth.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/auth/token-verification.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/composition.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/context.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/elicitation.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/icons.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/logging.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/middleware.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/progress.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/prompts.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/proxy.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/resources.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/sampling.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/server.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/storage-backends.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/tasks.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/servers/tools.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/snippets/local-focus.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/snippets/version-badge.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/snippets/youtube-embed.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/tutorials/create-mcp-server.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/tutorials/mcp.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/docs/tutorials/rest-api.mdx +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/atproto_mcp/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/atproto_mcp/demo.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/atproto_mcp/fastmcp.json +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/atproto_mcp/pyproject.toml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/atproto_mcp/src/atproto_mcp/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/atproto_mcp/src/atproto_mcp/__main__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_client.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_posts.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_profile.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_read.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_social.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/atproto_mcp/src/atproto_mcp/py.typed +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/atproto_mcp/src/atproto_mcp/server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/atproto_mcp/src/atproto_mcp/settings.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/atproto_mcp/src/atproto_mcp/types.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/authkit_dcr/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/authkit_dcr/client.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/authkit_dcr/server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/aws_oauth/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/aws_oauth/client.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/aws_oauth/requirements.txt +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/aws_oauth/server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/azure_oauth/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/azure_oauth/client.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/azure_oauth/server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/discord_oauth/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/discord_oauth/client.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/discord_oauth/server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/github_oauth/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/github_oauth/client.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/github_oauth/server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/google_oauth/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/google_oauth/client.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/google_oauth/server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/mounted/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/mounted/client.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/mounted/server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/scalekit_oauth/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/scalekit_oauth/client.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/scalekit_oauth/server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/workos_oauth/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/workos_oauth/client.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/auth/workos_oauth/server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/complex_inputs.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/config_server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/desktop.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/echo.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/fastmcp_config/env_interpolation_example.json +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/fastmcp_config/fastmcp.json +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/fastmcp_config/full_example.fastmcp.json +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/fastmcp_config/server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/fastmcp_config/simple.fastmcp.json +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/fastmcp_config_demo/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/fastmcp_config_demo/fastmcp.json +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/fastmcp_config_demo/server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/get_file.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/in_memory_proxy_example.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/memory.fastmcp.json +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/memory.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/mount_example.fastmcp.json +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/mount_example.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/sampling/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/sampling/server_fallback.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/sampling/structured_output.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/sampling/text.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/sampling/tool_use.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/screenshot.fastmcp.json +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/screenshot.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/serializer.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/simple_echo.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/smart_home/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/smart_home/hub.fastmcp.json +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/smart_home/lights.fastmcp.json +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/smart_home/pyproject.toml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/smart_home/src/smart_home/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/smart_home/src/smart_home/__main__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/smart_home/src/smart_home/hub.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/smart_home/src/smart_home/lights/server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/smart_home/src/smart_home/py.typed +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/smart_home/src/smart_home/settings.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/tags_example.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/tasks/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/tasks/client.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/tasks/docker-compose.yml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/tasks/server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/testing_demo/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/testing_demo/pyproject.toml +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/testing_demo/server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/testing_demo/tests/test_server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/testing_demo/uv.lock +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/text_me.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/examples/tool_result_echo.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/justfile +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/logo.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/scripts/auto_close_duplicates.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/scripts/auto_close_needs_mre.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/cli/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/cli/__main__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/cli/cli.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/cli/install/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/cli/install/claude_code.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/cli/install/claude_desktop.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/cli/install/cursor.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/cli/install/gemini_cli.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/cli/install/mcp_json.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/cli/install/shared.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/cli/run.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/cli/tasks.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/client/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/client/auth/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/client/auth/bearer.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/client/auth/oauth.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/client/client.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/client/elicitation.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/client/logging.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/client/messages.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/client/oauth_callback.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/client/progress.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/client/roots.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/client/sampling/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/client/sampling/handlers/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/client/sampling/handlers/anthropic.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/client/sampling/handlers/openai.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/client/tasks.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/client/transports.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/contrib/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/contrib/component_manager/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/contrib/component_manager/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/contrib/component_manager/component_service.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/contrib/component_manager/example.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/dependencies.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/exceptions.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/experimental/sampling/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/experimental/sampling/handlers/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/experimental/sampling/handlers/openai.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/experimental/server/openapi/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/experimental/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/mcp_config.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/prompts/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/prompts/prompt.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/py.typed +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/resources/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/resources/resource.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/resources/template.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/resources/types.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/handlers/authorize.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/jwt_issuer.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/middleware.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/oidc_proxy.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/providers/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/providers/auth0.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/providers/aws.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/providers/azure.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/providers/debug.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/providers/descope.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/providers/discord.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/providers/github.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/providers/google.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/providers/in_memory.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/providers/introspection.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/providers/jwt.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/providers/oci.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/providers/scalekit.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/providers/workos.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/auth/redirect_validation.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/context.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/event_store.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/http.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/low_level.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/middleware/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/middleware/caching.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/middleware/logging.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/middleware/middleware.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/middleware/rate_limiting.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/middleware/timing.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/middleware/tool_injection.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/openapi/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/openapi/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/openapi/routing.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/openapi/server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/proxy.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/sampling/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/sampling/run.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/sampling/sampling_tool.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/tasks/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/tasks/capabilities.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/tasks/config.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/tasks/converters.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/tasks/handlers.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/tasks/keys.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/tasks/protocol.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/server/tasks/subscriptions.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/settings.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/tools/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/tools/tool_transform.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/auth.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/components.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/exceptions.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/http.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/inspect.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/json_schema_type.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/logging.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/mcp_config.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/openapi/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/openapi/director.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/openapi/formatters.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/openapi/models.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/openapi/parser.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/tests.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/types.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/src/fastmcp/utilities/ui.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/cli/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/cli/test_cli.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/cli/test_config.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/cli/test_cursor.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/cli/test_install.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/cli/test_mcp_server_config_integration.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/cli/test_mcp_server_config_schema.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/cli/test_project_prepare.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/cli/test_run.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/cli/test_run_config.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/cli/test_server_args.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/cli/test_shared.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/cli/test_tasks.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/cli/test_with_argv.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/auth/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/auth/test_oauth_client.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/sampling/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/sampling/handlers/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/sampling/handlers/test_anthropic_handler.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/sampling/handlers/test_openai_handler.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/tasks/conftest.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/tasks/test_client_prompt_tasks.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/tasks/test_client_resource_tasks.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/tasks/test_client_task_notifications.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/tasks/test_client_task_protocol.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/tasks/test_client_tool_tasks.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/tasks/test_prompt_task_mcp_message.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/tasks/test_task_context_validation.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/tasks/test_task_result_caching.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/test_client.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/test_logs.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/test_notifications.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/test_oauth_callback_xss.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/test_openapi.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/test_progress.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/test_roots.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/test_sampling.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/test_stdio.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/transports/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/client/transports/test_transports.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/conftest.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/contrib/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/contrib/test_bulk_tool_caller.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/contrib/test_component_manager.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/contrib/test_mcp_mixin.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/deprecated/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/deprecated/test_deprecated.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/deprecated/test_exclude_args.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/deprecated/test_openapi_deprecations.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/deprecated/test_settings.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/experimental/README.md +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/experimental/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/integration_tests/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/integration_tests/auth/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/integration_tests/auth/test_github_provider_integration.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/integration_tests/conftest.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/integration_tests/test_github_mcp_remote.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/prompts/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/prompts/test_prompt.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/prompts/test_prompt_manager.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/resources/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/resources/test_file_resources.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/resources/test_function_resources.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/resources/test_resource_manager.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/resources/test_resource_template.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/resources/test_resource_template_meta.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/resources/test_resources.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/providers/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/providers/test_auth0.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/providers/test_aws.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/providers/test_azure.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/providers/test_descope.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/providers/test_discord.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/providers/test_github.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/providers/test_google.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/providers/test_introspection.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/providers/test_scalekit.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/providers/test_workos.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/test_auth_provider.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/test_debug_verifier.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/test_enhanced_error_responses.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/test_jwt_issuer.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/test_jwt_provider.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/test_oauth_consent_flow.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/test_oauth_mounting.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/test_oauth_proxy_redirect_validation.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/test_oauth_proxy_storage.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/test_oidc_proxy.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/test_redirect_validation.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/test_remote_auth_provider.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/auth/test_static_token_verifier.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/http/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/http/test_bearer_auth_backend.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/http/test_custom_routes.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/http/test_http_auth_middleware.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/http/test_http_dependencies.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/http/test_http_middleware.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/http/test_stale_access_token.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/middleware/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/middleware/test_caching.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/middleware/test_initialization_middleware.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/middleware/test_logging.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/middleware/test_middleware.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/middleware/test_rate_limiting.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/middleware/test_timing.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/middleware/test_tool_injection.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/openapi/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/openapi/test_deepobject_style.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/openapi/test_end_to_end_compatibility.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/openapi/test_openapi_features.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/openapi/test_openapi_performance.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/openapi/test_parameter_collisions.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/openapi/test_performance_comparison.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/openapi/test_server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/proxy/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/proxy/test_proxy_client.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/proxy/test_proxy_server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/proxy/test_stateful_proxy_client.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/sampling/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/sampling/test_sampling_tool.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/conftest.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/test_progress_dependency.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/test_sync_function_task_disabled.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/test_task_capabilities.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/test_task_config_modes.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/test_task_dependencies.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/test_task_metadata.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/test_task_mount.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/test_task_prompts.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/test_task_protocol.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/test_task_proxy.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/test_task_resources.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/test_task_return_types.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/test_task_security.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/test_task_status_notifications.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/test_task_tools.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/tasks/test_task_ttl.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_app_state.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_auth_integration.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_context.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_event_store.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_file_server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_icons.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_import_server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_input_validation.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_log_level.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_mount.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_run_server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_server.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_server_docket.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_server_interactions.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_server_lifespan.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_streamable_http_no_redirect.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_tool_annotations.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/server/test_tool_transformation.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/test_mcp_config.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/tools/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/tools/test_tool_future_annotations.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/tools/test_tool_manager.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/tools/test_tool_transform.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/openapi/conftest.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/openapi/test_allof_requestbody.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/openapi/test_direct_array_schemas.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/openapi/test_director.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/openapi/test_legacy_compatibility.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/openapi/test_models.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/openapi/test_nullable_fields.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/openapi/test_parser.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/openapi/test_schemas.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/openapi/test_transitive_references.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/test_cli.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/test_components.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/test_inspect.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/test_json_schema_type.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/test_logging.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/test_tests.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/test_typeadapter.py +0 -0
- {fastmcp-2.14.1 → fastmcp-2.14.2}/tests/utilities/test_types.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fastmcp
|
|
3
|
-
Version: 2.14.
|
|
3
|
+
Version: 2.14.2
|
|
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,12 +23,12 @@ 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
|
|
26
|
+
Requires-Dist: mcp<2.0,>=1.24.0
|
|
27
27
|
Requires-Dist: openapi-pydantic>=0.5.1
|
|
28
28
|
Requires-Dist: platformdirs>=4.0.0
|
|
29
29
|
Requires-Dist: py-key-value-aio[disk,keyring,memory]<0.4.0,>=0.3.0
|
|
30
30
|
Requires-Dist: pydantic[email]>=2.11.7
|
|
31
|
-
Requires-Dist: pydocket>=0.
|
|
31
|
+
Requires-Dist: pydocket>=0.16.3
|
|
32
32
|
Requires-Dist: pyperclip>=1.9.0
|
|
33
33
|
Requires-Dist: python-dotenv>=1.1.0
|
|
34
34
|
Requires-Dist: rich>=13.9.4
|
|
@@ -75,6 +75,9 @@ Description-Content-Type: text/markdown
|
|
|
75
75
|
>
|
|
76
76
|
> **For production MCP applications, install FastMCP:** `pip install fastmcp`
|
|
77
77
|
|
|
78
|
+
> [!Important]
|
|
79
|
+
> FastMCP 3.0 is in development and may include breaking changes. To avoid unexpected issues, pin your dependency to v2: `fastmcp<3`
|
|
80
|
+
|
|
78
81
|
---
|
|
79
82
|
|
|
80
83
|
**FastMCP is the standard framework for building MCP applications**, providing the fastest path from idea to production.
|
|
@@ -33,6 +33,9 @@
|
|
|
33
33
|
>
|
|
34
34
|
> **For production MCP applications, install FastMCP:** `pip install fastmcp`
|
|
35
35
|
|
|
36
|
+
> [!Important]
|
|
37
|
+
> FastMCP 3.0 is in development and may include breaking changes. To avoid unexpected issues, pin your dependency to v2: `fastmcp<3`
|
|
38
|
+
|
|
36
39
|
---
|
|
37
40
|
|
|
38
41
|
**FastMCP is the standard framework for building MCP applications**, providing the fastest path from idea to production.
|
|
@@ -4,6 +4,172 @@ icon: "list-check"
|
|
|
4
4
|
rss: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
<Update label="v2.14.1" description="2025-12-15">
|
|
8
|
+
|
|
9
|
+
**[v2.14.1: 'Tis a Gift to Be Sample](https://github.com/jlowin/fastmcp/releases/tag/v2.14.1)**
|
|
10
|
+
|
|
11
|
+
FastMCP 2.14.1 introduces sampling with tools (SEP-1577), enabling servers to pass tools to `ctx.sample()` for agentic workflows where the LLM can automatically execute tool calls in a loop. The new `ctx.sample_step()` method provides single LLM calls that return `SampleStep` objects for custom control flow, while `result_type` enables structured outputs via validated Pydantic models.
|
|
12
|
+
|
|
13
|
+
🤖 **AnthropicSamplingHandler** joins the existing OpenAI handler, providing multi-provider sampling support out of the box.
|
|
14
|
+
|
|
15
|
+
⚡ **OpenAISamplingHandler promoted** from experimental status—sampling handlers are now production-ready with a unified API.
|
|
16
|
+
|
|
17
|
+
## What's Changed
|
|
18
|
+
### New Features 🎉
|
|
19
|
+
* Sampling with tools by [@jlowin](https://github.com/jlowin) in [#2538](https://github.com/jlowin/fastmcp/pull/2538)
|
|
20
|
+
* Add AnthropicSamplingHandler by [@jlowin](https://github.com/jlowin) in [#2677](https://github.com/jlowin/fastmcp/pull/2677)
|
|
21
|
+
### Enhancements 🔧
|
|
22
|
+
* Add Python 3.13 to ubuntu CI by [@jlowin](https://github.com/jlowin) in [#2648](https://github.com/jlowin/fastmcp/pull/2648)
|
|
23
|
+
* Remove legacy task initialization workaround by [@jlowin](https://github.com/jlowin) in [#2649](https://github.com/jlowin/fastmcp/pull/2649)
|
|
24
|
+
* Consolidate session state reset logic by [@jlowin](https://github.com/jlowin) in [#2651](https://github.com/jlowin/fastmcp/pull/2651)
|
|
25
|
+
* Unify SamplingHandler; promote OpenAI from experimental by [@jlowin](https://github.com/jlowin) in [#2656](https://github.com/jlowin/fastmcp/pull/2656)
|
|
26
|
+
* Add `tool_names` parameter to mount() for name customization by [@jlowin](https://github.com/jlowin) in [#2660](https://github.com/jlowin/fastmcp/pull/2660)
|
|
27
|
+
* Use streamable HTTP client API from MCP SDK by [@jlowin](https://github.com/jlowin) in [#2678](https://github.com/jlowin/fastmcp/pull/2678)
|
|
28
|
+
* Deprecate `exclude_args` in favor of Depends() by [@jlowin](https://github.com/jlowin) in [#2693](https://github.com/jlowin/fastmcp/pull/2693)
|
|
29
|
+
### Fixes 🐞
|
|
30
|
+
* Fix prompt tasks to return mcp.types.PromptMessage by [@jlowin](https://github.com/jlowin) in [#2650](https://github.com/jlowin/fastmcp/pull/2650)
|
|
31
|
+
* Fix Windows test warnings by [@jlowin](https://github.com/jlowin) in [#2653](https://github.com/jlowin/fastmcp/pull/2653)
|
|
32
|
+
* Cleanup cancelled connection startup by [@jlowin](https://github.com/jlowin) in [#2679](https://github.com/jlowin/fastmcp/pull/2679)
|
|
33
|
+
* Fix tool choice bug in sampling examples by [@shawnthapa](https://github.com/shawnthapa) in [#2686](https://github.com/jlowin/fastmcp/pull/2686)
|
|
34
|
+
### Docs 📚
|
|
35
|
+
* Simplify Docket tip wording by [@chrisguidry](https://github.com/chrisguidry) in [#2662](https://github.com/jlowin/fastmcp/pull/2662)
|
|
36
|
+
### Other Changes 🦾
|
|
37
|
+
* Bump pydocket to ≥0.15.5 by [@jlowin](https://github.com/jlowin) in [#2694](https://github.com/jlowin/fastmcp/pull/2694)
|
|
38
|
+
|
|
39
|
+
## New Contributors
|
|
40
|
+
* [@shawnthapa](https://github.com/shawnthapa) made their first contribution in [#2686](https://github.com/jlowin/fastmcp/pull/2686)
|
|
41
|
+
|
|
42
|
+
**Full Changelog**: [v2.14.0...v2.14.1](https://github.com/jlowin/fastmcp/compare/v2.14.0...v2.14.1)
|
|
43
|
+
|
|
44
|
+
</Update>
|
|
45
|
+
|
|
46
|
+
<Update label="v2.14.0" description="2025-12-11">
|
|
47
|
+
|
|
48
|
+
**[v2.14.0: Task and You Shall Receive](https://github.com/jlowin/fastmcp/releases/tag/v2.14.0)**
|
|
49
|
+
|
|
50
|
+
FastMCP 2.14 begins adopting the MCP 2025-11-25 specification, introducing protocol-native background tasks (SEP-1686) that enable long-running operations to report progress without blocking clients. The experimental OpenAPI parser graduates to standard, the `OpenAISamplingHandler` is promoted from experimental, and deprecated APIs accumulated across the 2.x series are removed.
|
|
51
|
+
|
|
52
|
+
⏳ **Background Tasks** let you add `task=True` to any async tool decorator to run operations in the background with progress tracking. Powered by [Docket](https://github.com/chrisguidry/docket), an enterprise task scheduler handling millions of concurrent tasks daily—in-memory backends work out-of-the-box, and Redis URLs enable persistence and horizontal scaling.
|
|
53
|
+
|
|
54
|
+
🔧 **OpenAPI Parser Promoted** from experimental to standard with improved performance through single-pass schema processing and cleaner abstractions.
|
|
55
|
+
|
|
56
|
+
📋 **MCP 2025-11-25 Specification Support** including SSE polling and event resumability (SEP-1699), multi-select enum elicitation schemas (SEP-1330), default values for elicitation (SEP-1034), and tool name validation at registration time (SEP-986).
|
|
57
|
+
|
|
58
|
+
## Breaking Changes
|
|
59
|
+
- Docket is always enabled; task execution is forbidden through proxies
|
|
60
|
+
- Task protocol enabled by default
|
|
61
|
+
- Removed deprecated settings, imports, and methods accumulated across 2.x series
|
|
62
|
+
|
|
63
|
+
## What's Changed
|
|
64
|
+
### New Features 🎉
|
|
65
|
+
* OpenAPI parser is now the default by [@jlowin](https://github.com/jlowin) in [#2583](https://github.com/jlowin/fastmcp/pull/2583)
|
|
66
|
+
* Implement SEP-1686: Background Tasks by [@jlowin](https://github.com/jlowin) in [#2550](https://github.com/jlowin/fastmcp/pull/2550)
|
|
67
|
+
### Enhancements 🔧
|
|
68
|
+
* Expose InitializeResult in middleware by [@jlowin](https://github.com/jlowin) in [#2562](https://github.com/jlowin/fastmcp/pull/2562)
|
|
69
|
+
* Update MCP SDK auth compatibility by [@jlowin](https://github.com/jlowin) in [#2574](https://github.com/jlowin/fastmcp/pull/2574)
|
|
70
|
+
* Validate tool names at registration (SEP-986) by [@jlowin](https://github.com/jlowin) in [#2588](https://github.com/jlowin/fastmcp/pull/2588)
|
|
71
|
+
* Support SEP-1034 and SEP-1330 for elicitation by [@jlowin](https://github.com/jlowin) in [#2595](https://github.com/jlowin/fastmcp/pull/2595)
|
|
72
|
+
* Implement SSE polling (SEP-1699) by [@jlowin](https://github.com/jlowin) in [#2612](https://github.com/jlowin/fastmcp/pull/2612)
|
|
73
|
+
* Expose session ID callback by [@jlowin](https://github.com/jlowin) in [#2628](https://github.com/jlowin/fastmcp/pull/2628)
|
|
74
|
+
### Fixes 🐞
|
|
75
|
+
* Fix OAuth metadata discovery by [@jlowin](https://github.com/jlowin) in [#2565](https://github.com/jlowin/fastmcp/pull/2565)
|
|
76
|
+
* Fix fastapi.cli package structure by [@jlowin](https://github.com/jlowin) in [#2570](https://github.com/jlowin/fastmcp/pull/2570)
|
|
77
|
+
* Correct OAuth error codes by [@jlowin](https://github.com/jlowin) in [#2578](https://github.com/jlowin/fastmcp/pull/2578)
|
|
78
|
+
* Prevent function signature modification by [@jlowin](https://github.com/jlowin) in [#2590](https://github.com/jlowin/fastmcp/pull/2590)
|
|
79
|
+
* Fix proxy client kwargs by [@jlowin](https://github.com/jlowin) in [#2605](https://github.com/jlowin/fastmcp/pull/2605)
|
|
80
|
+
* Fix nested server routing by [@jlowin](https://github.com/jlowin) in [#2618](https://github.com/jlowin/fastmcp/pull/2618)
|
|
81
|
+
* Use access token expiry fallback by [@jlowin](https://github.com/jlowin) in [#2635](https://github.com/jlowin/fastmcp/pull/2635)
|
|
82
|
+
* Handle transport cleanup exceptions by [@jlowin](https://github.com/jlowin) in [#2642](https://github.com/jlowin/fastmcp/pull/2642)
|
|
83
|
+
### Docs 📚
|
|
84
|
+
* Add OCI and Supabase integration docs by [@jlowin](https://github.com/jlowin) in [#2580](https://github.com/jlowin/fastmcp/pull/2580)
|
|
85
|
+
* Add v2.14.0 upgrade guide by [@jlowin](https://github.com/jlowin) in [#2598](https://github.com/jlowin/fastmcp/pull/2598)
|
|
86
|
+
* Rewrite background tasks documentation by [@jlowin](https://github.com/jlowin) in [#2620](https://github.com/jlowin/fastmcp/pull/2620)
|
|
87
|
+
* Document read-only tool patterns by [@jlowin](https://github.com/jlowin) in [#2632](https://github.com/jlowin/fastmcp/pull/2632)
|
|
88
|
+
|
|
89
|
+
## New Contributors
|
|
90
|
+
11 total contributors including 7 first-time participants.
|
|
91
|
+
|
|
92
|
+
**Full Changelog**: [v2.13.3...v2.14.0](https://github.com/jlowin/fastmcp/compare/v2.13.3...v2.14.0)
|
|
93
|
+
|
|
94
|
+
</Update>
|
|
95
|
+
|
|
96
|
+
<Update label="v2.13.3" description="2025-12-03">
|
|
97
|
+
|
|
98
|
+
**[v2.13.3: Pin-ish Line](https://github.com/jlowin/fastmcp/releases/tag/v2.13.3)**
|
|
99
|
+
|
|
100
|
+
FastMCP 2.13.3 pins `mcp<1.23` as a precautionary measure. MCP SDK 1.23 introduced changes related to the November 25, 2025 MCP protocol update that break certain FastMCP patches and workarounds, particularly around OAuth implementation details. FastMCP 2.14 introduces proper support for the updated protocol and requires `mcp>=1.23`.
|
|
101
|
+
|
|
102
|
+
## What's Changed
|
|
103
|
+
### Fixes 🐞
|
|
104
|
+
* Pin MCP SDK below 1.23 by [@jlowin](https://github.com/jlowin) in [#2545](https://github.com/jlowin/fastmcp/pull/2545)
|
|
105
|
+
|
|
106
|
+
**Full Changelog**: [v2.13.2...v2.13.3](https://github.com/jlowin/fastmcp/compare/v2.13.2...v2.13.3)
|
|
107
|
+
|
|
108
|
+
</Update>
|
|
109
|
+
|
|
110
|
+
<Update label="v2.13.2" description="2025-12-01">
|
|
111
|
+
|
|
112
|
+
**[v2.13.2: Refreshing Changes](https://github.com/jlowin/fastmcp/releases/tag/v2.13.2)**
|
|
113
|
+
|
|
114
|
+
FastMCP 2.13.2 polishes the authentication stack with improvements to token refresh, scope handling, and multi-instance deployments. Discord was added as a built-in OAuth provider, Azure and Google token handling became more reliable, and proxy classes now properly forward icons and titles.
|
|
115
|
+
|
|
116
|
+
## What's Changed
|
|
117
|
+
### New Features 🎉
|
|
118
|
+
* Add Discord OAuth provider by [@jlowin](https://github.com/jlowin) in [#2480](https://github.com/jlowin/fastmcp/pull/2480)
|
|
119
|
+
### Enhancements 🔧
|
|
120
|
+
* Descope Provider updates for new well-known URLs by [@anvibanga](https://github.com/anvibanga) in [#2465](https://github.com/jlowin/fastmcp/pull/2465)
|
|
121
|
+
* Scalekit provider improvements by [@jlowin](https://github.com/jlowin) in [#2472](https://github.com/jlowin/fastmcp/pull/2472)
|
|
122
|
+
* Add CSP customization for consent screens by [@jlowin](https://github.com/jlowin) in [#2488](https://github.com/jlowin/fastmcp/pull/2488)
|
|
123
|
+
* Add icon support to proxy classes by [@jlowin](https://github.com/jlowin) in [#2495](https://github.com/jlowin/fastmcp/pull/2495)
|
|
124
|
+
### Fixes 🐞
|
|
125
|
+
* Google Provider now defaults to refresh token support by [@jlowin](https://github.com/jlowin) in [#2468](https://github.com/jlowin/fastmcp/pull/2468)
|
|
126
|
+
* Fix Azure OAuth token refresh with unprefixed scopes by [@jlowin](https://github.com/jlowin) in [#2475](https://github.com/jlowin/fastmcp/pull/2475)
|
|
127
|
+
* Prevent `$defs` mutation during tool transforms by [@jlowin](https://github.com/jlowin) in [#2482](https://github.com/jlowin/fastmcp/pull/2482)
|
|
128
|
+
* Fix OAuth proxy refresh token storage for multi-instance deployments by [@jlowin](https://github.com/jlowin) in [#2490](https://github.com/jlowin/fastmcp/pull/2490)
|
|
129
|
+
* Fix stale token issue after OAuth refresh by [@jlowin](https://github.com/jlowin) in [#2498](https://github.com/jlowin/fastmcp/pull/2498)
|
|
130
|
+
* Fix Azure provider OIDC scope handling by [@jlowin](https://github.com/jlowin) in [#2505](https://github.com/jlowin/fastmcp/pull/2505)
|
|
131
|
+
|
|
132
|
+
## New Contributors
|
|
133
|
+
7 new contributors made their first FastMCP contributions in this release.
|
|
134
|
+
|
|
135
|
+
**Full Changelog**: [v2.13.1...v2.13.2](https://github.com/jlowin/fastmcp/compare/v2.13.1...v2.13.2)
|
|
136
|
+
|
|
137
|
+
</Update>
|
|
138
|
+
|
|
139
|
+
<Update label="v2.13.1" description="2025-11-15">
|
|
140
|
+
|
|
141
|
+
**[v2.13.1: Heavy Meta](https://github.com/jlowin/fastmcp/releases/tag/v2.13.1)**
|
|
142
|
+
|
|
143
|
+
FastMCP 2.13.1 introduces meta parameter support for `ToolResult`, enabling tools to return supplementary metadata alongside results. This supports emerging use cases like OpenAI's Apps SDK. The release also brings improved OAuth functionality with custom token verifiers including a new DebugTokenVerifier, and adds OCI and Supabase authentication providers.
|
|
144
|
+
|
|
145
|
+
🏷️ **Meta parameters for ToolResult** enable tools to return supplementary metadata alongside results, supporting patterns like OpenAI's Apps SDK integration.
|
|
146
|
+
|
|
147
|
+
🔐 **Custom token verifiers** with DebugTokenVerifier for development, plus Azure Government support through a `base_authority` parameter and Supabase authentication algorithm configuration.
|
|
148
|
+
|
|
149
|
+
🔒 **Security fixes** address CVE-2025-61920 through authlib updates and validate Cursor deeplink URLs using safer Windows APIs.
|
|
150
|
+
|
|
151
|
+
## What's Changed
|
|
152
|
+
### New Features 🎉
|
|
153
|
+
* Add meta parameter support for ToolResult by [@jlowin](https://github.com/jlowin) in [#2350](https://github.com/jlowin/fastmcp/pull/2350)
|
|
154
|
+
* Add OCI authentication provider by [@jlowin](https://github.com/jlowin) in [#2365](https://github.com/jlowin/fastmcp/pull/2365)
|
|
155
|
+
* Add Supabase authentication provider by [@jlowin](https://github.com/jlowin) in [#2378](https://github.com/jlowin/fastmcp/pull/2378)
|
|
156
|
+
### Enhancements 🔧
|
|
157
|
+
* Add custom token verifier support to OIDCProxy by [@jlowin](https://github.com/jlowin) in [#2355](https://github.com/jlowin/fastmcp/pull/2355)
|
|
158
|
+
* Add DebugTokenVerifier for development by [@jlowin](https://github.com/jlowin) in [#2362](https://github.com/jlowin/fastmcp/pull/2362)
|
|
159
|
+
* Add Azure Government support via base_authority parameter by [@jlowin](https://github.com/jlowin) in [#2385](https://github.com/jlowin/fastmcp/pull/2385)
|
|
160
|
+
* Add Supabase authentication algorithm configuration by [@jlowin](https://github.com/jlowin) in [#2392](https://github.com/jlowin/fastmcp/pull/2392)
|
|
161
|
+
### Fixes 🐞
|
|
162
|
+
* Security: Update authlib for CVE-2025-61920 by [@jlowin](https://github.com/jlowin) in [#2398](https://github.com/jlowin/fastmcp/pull/2398)
|
|
163
|
+
* Validate Cursor deeplink URLs using safer Windows APIs by [@jlowin](https://github.com/jlowin) in [#2405](https://github.com/jlowin/fastmcp/pull/2405)
|
|
164
|
+
* Exclude MCP SDK 1.21.1 due to integration test failures by [@jlowin](https://github.com/jlowin) in [#2422](https://github.com/jlowin/fastmcp/pull/2422)
|
|
165
|
+
|
|
166
|
+
## New Contributors
|
|
167
|
+
18 new contributors joined in this release across 70+ pull requests.
|
|
168
|
+
|
|
169
|
+
**Full Changelog**: [v2.13.0...v2.13.1](https://github.com/jlowin/fastmcp/compare/v2.13.0...v2.13.1)
|
|
170
|
+
|
|
171
|
+
</Update>
|
|
172
|
+
|
|
7
173
|
<Update label="v2.13.0" description="2025-10-25">
|
|
8
174
|
|
|
9
175
|
**[v2.13.0: Cache Me If You Can](https://github.com/jlowin/fastmcp/releases/tag/v2.13.0)**
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"decoration": "gradient"
|
|
13
13
|
},
|
|
14
14
|
"banner": {
|
|
15
|
-
"content": "Join the [
|
|
15
|
+
"content": "Join us at the inaugural PyAI Conf in San Francisco on March 10th! [Learn More](https://pyai.events?utm_source=gofastmcp)"
|
|
16
16
|
},
|
|
17
17
|
"colors": {
|
|
18
18
|
"dark": "#f72585",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"socials": {
|
|
42
42
|
"discord": "https://discord.gg/uu8dJCgttd",
|
|
43
43
|
"github": "https://github.com/jlowin/fastmcp",
|
|
44
|
-
"website": "https://prefect.
|
|
44
|
+
"website": "https://www.prefect.io",
|
|
45
45
|
"x": "https://x.com/fastmcp"
|
|
46
46
|
}
|
|
47
47
|
},
|
|
@@ -23,6 +23,10 @@ Alternatively, you can install it directly with `pip` or `uv pip`:
|
|
|
23
23
|
```
|
|
24
24
|
</CodeGroup>
|
|
25
25
|
|
|
26
|
+
<Warning>
|
|
27
|
+
**FastMCP 3.0** is in development and may include breaking changes. To avoid unexpected issues, pin your dependency to v2: `fastmcp<3`
|
|
28
|
+
</Warning>
|
|
29
|
+
|
|
26
30
|
### Verify Installation
|
|
27
31
|
|
|
28
32
|
To verify that FastMCP is installed correctly, you can run the following command:
|
|
@@ -35,7 +35,6 @@ if __name__ == "__main__":
|
|
|
35
35
|
mcp.run()
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
|
|
39
38
|
## Beyond Basic MCP
|
|
40
39
|
|
|
41
40
|
FastMCP pioneered Python MCP development, and FastMCP 1.0 was incorporated into the [official MCP SDK](https://github.com/modelcontextprotocol/python-sdk) in 2024.
|
|
@@ -46,6 +45,10 @@ Ready to build? Start with our [installation guide](/getting-started/installatio
|
|
|
46
45
|
|
|
47
46
|
FastMCP is made with 💙 by [Prefect](https://www.prefect.io/).
|
|
48
47
|
|
|
48
|
+
<Warning>
|
|
49
|
+
**FastMCP 3.0** is in development and may include breaking changes. To avoid unexpected issues, pin your dependency to v2: `fastmcp<3`
|
|
50
|
+
</Warning>
|
|
51
|
+
|
|
49
52
|
## What is MCP?
|
|
50
53
|
|
|
51
54
|
The Model Context Protocol lets you build servers that expose data and functionality to LLM applications in a secure, standardized way. It is often described as "the USB-C port for AI", providing a uniform way to connect LLMs to resources they can use. It may be easier to think of it as an API, but specifically designed for LLM interactions. MCP servers can:
|
|
@@ -17,7 +17,7 @@ This guide shows you how to secure your FastMCP server using **Supabase Auth**.
|
|
|
17
17
|
### Prerequisites
|
|
18
18
|
|
|
19
19
|
Before you begin, you will need:
|
|
20
|
-
1. A **[Supabase Account](https://supabase.com/)** with a project
|
|
20
|
+
1. A **[Supabase Account](https://supabase.com/)** with a project or a self-hosted **Supabase Auth** instance
|
|
21
21
|
2. Your FastMCP server's URL (can be localhost for development, e.g., `http://localhost:8000`)
|
|
22
22
|
|
|
23
23
|
### Step 1: Get Supabase Project URL
|
|
@@ -37,7 +37,8 @@ from fastmcp.server.auth.providers.supabase import SupabaseProvider
|
|
|
37
37
|
# Configure Supabase Auth
|
|
38
38
|
auth = SupabaseProvider(
|
|
39
39
|
project_url="https://abc123.supabase.co",
|
|
40
|
-
base_url="http://localhost:8000"
|
|
40
|
+
base_url="http://localhost:8000",
|
|
41
|
+
auth_route="/my/auth/route" # if self-hosting and using custom routes
|
|
41
42
|
)
|
|
42
43
|
|
|
43
44
|
mcp = FastMCP("Supabase Protected Server", auth=auth)
|
|
@@ -117,6 +118,10 @@ Your Supabase project URL (e.g., `https://abc123.supabase.co`)
|
|
|
117
118
|
Public URL of your FastMCP server (e.g., `https://your-server.com` or `http://localhost:8000` for development)
|
|
118
119
|
</ParamField>
|
|
119
120
|
|
|
121
|
+
<ParamField path="FASTMCP_SERVER_AUTH_SUPABASE_AUTH_ROUTE" default="/auth/v1">
|
|
122
|
+
Your Supabase auth route (e.g., `/auth/v1`)
|
|
123
|
+
</ParamField>
|
|
124
|
+
|
|
120
125
|
<ParamField path="FASTMCP_SERVER_AUTH_SUPABASE_REQUIRED_SCOPES" default="[]">
|
|
121
126
|
Comma-, space-, or JSON-separated list of required OAuth scopes (e.g., `openid email` or `["openid", "email"]`)
|
|
122
127
|
</ParamField>
|
|
@@ -5,6 +5,78 @@ icon: "sparkles"
|
|
|
5
5
|
tag: NEW
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
<Update label="FastMCP 2.14.1" description="December 15, 2025" tags={["Releases"]}>
|
|
9
|
+
<Card
|
|
10
|
+
title="FastMCP 2.14.1: 'Tis a Gift to Be Sample"
|
|
11
|
+
href="https://github.com/jlowin/fastmcp/releases/tag/v2.14.1"
|
|
12
|
+
cta="Read the release notes"
|
|
13
|
+
>
|
|
14
|
+
FastMCP 2.14.1 introduces sampling with tools (SEP-1577), enabling servers to pass tools to `ctx.sample()` for agentic workflows where the LLM can automatically execute tool calls in a loop.
|
|
15
|
+
|
|
16
|
+
🤖 **Sampling with tools** lets servers leverage client LLM capabilities for multi-step agentic workflows. The new `ctx.sample_step()` method provides single LLM calls with tool inspection, while `result_type` enables structured outputs via validated Pydantic models.
|
|
17
|
+
|
|
18
|
+
🔧 **AnthropicSamplingHandler** joins the existing OpenAI handler, and both are now promoted from experimental to production-ready status with a unified API.
|
|
19
|
+
</Card>
|
|
20
|
+
</Update>
|
|
21
|
+
|
|
22
|
+
<Update label="FastMCP 2.14.0" description="December 11, 2025" tags={["Releases"]}>
|
|
23
|
+
<Card
|
|
24
|
+
title="FastMCP 2.14.0: Task and You Shall Receive"
|
|
25
|
+
href="https://github.com/jlowin/fastmcp/releases/tag/v2.14.0"
|
|
26
|
+
cta="Read the release notes"
|
|
27
|
+
>
|
|
28
|
+
FastMCP 2.14 begins adopting the MCP 2025-11-25 specification, introducing protocol-native background tasks that enable long-running operations to report progress without blocking clients.
|
|
29
|
+
|
|
30
|
+
⏳ **Background Tasks (SEP-1686)** let you add `task=True` to any async tool decorator. Powered by [Docket](https://github.com/chrisguidry/docket) for enterprise task scheduling—in-memory backends work out-of-the-box, Redis enables persistence and horizontal scaling.
|
|
31
|
+
|
|
32
|
+
🔧 **OpenAPI Parser Promoted** from experimental to standard with improved performance through single-pass schema processing.
|
|
33
|
+
|
|
34
|
+
📋 **MCP Spec Updates** including SSE polling (SEP-1699), multi-select elicitation (SEP-1330), and tool name validation (SEP-986). Also removes deprecated APIs accumulated across 2.x.
|
|
35
|
+
</Card>
|
|
36
|
+
</Update>
|
|
37
|
+
|
|
38
|
+
<Update label="FastMCP 2.13.3" description="December 3, 2025" tags={["Releases"]}>
|
|
39
|
+
<Card
|
|
40
|
+
title="FastMCP 2.13.3: Pin-ish Line"
|
|
41
|
+
href="https://github.com/jlowin/fastmcp/releases/tag/v2.13.3"
|
|
42
|
+
cta="Read the release notes"
|
|
43
|
+
>
|
|
44
|
+
Pins `mcp<1.23` as a precaution due to MCP SDK changes related to the 11/25/25 protocol update that break certain FastMCP patches and workarounds. FastMCP 2.14 introduces proper support for the updated protocol.
|
|
45
|
+
</Card>
|
|
46
|
+
</Update>
|
|
47
|
+
|
|
48
|
+
<Update label="FastMCP 2.13.2" description="December 1, 2025" tags={["Releases"]}>
|
|
49
|
+
<Card
|
|
50
|
+
title="FastMCP 2.13.2: Refreshing Changes"
|
|
51
|
+
href="https://github.com/jlowin/fastmcp/releases/tag/v2.13.2"
|
|
52
|
+
cta="Read the release notes"
|
|
53
|
+
>
|
|
54
|
+
Polishes the authentication stack with improvements to token refresh, scope handling, and multi-instance deployments.
|
|
55
|
+
|
|
56
|
+
🎮 **Discord OAuth provider** added as a built-in authentication option.
|
|
57
|
+
|
|
58
|
+
🔄 **Token refresh fixes** for Azure and Google providers, plus OAuth proxy improvements for multi-instance deployments.
|
|
59
|
+
|
|
60
|
+
🎨 **Icon support** added to proxy classes for richer UX.
|
|
61
|
+
</Card>
|
|
62
|
+
</Update>
|
|
63
|
+
|
|
64
|
+
<Update label="FastMCP 2.13.1" description="November 15, 2025" tags={["Releases"]}>
|
|
65
|
+
<Card
|
|
66
|
+
title="FastMCP 2.13.1: Heavy Meta"
|
|
67
|
+
href="https://github.com/jlowin/fastmcp/releases/tag/v2.13.1"
|
|
68
|
+
cta="Read the release notes"
|
|
69
|
+
>
|
|
70
|
+
Introduces meta parameter support for `ToolResult`, enabling tools to return supplementary metadata alongside results for patterns like OpenAI's Apps SDK.
|
|
71
|
+
|
|
72
|
+
🏷️ **Meta parameters** let tools return supplementary metadata alongside results.
|
|
73
|
+
|
|
74
|
+
🔐 **New auth providers** for OCI and Supabase, plus custom token verifiers with DebugTokenVerifier for development.
|
|
75
|
+
|
|
76
|
+
🔒 **Security fixes** for CVE-2025-61920 and safer Cursor deeplink URL validation on Windows.
|
|
77
|
+
</Card>
|
|
78
|
+
</Update>
|
|
79
|
+
|
|
8
80
|
<Update label="FastMCP 2.13.0" description="October 25, 2025" tags={["Releases"]}>
|
|
9
81
|
<Card
|
|
10
82
|
title="FastMCP 2.13.0: Cache Me If You Can"
|
|
@@ -7,10 +7,10 @@ dependencies = [
|
|
|
7
7
|
"python-dotenv>=1.1.0",
|
|
8
8
|
"exceptiongroup>=1.2.2",
|
|
9
9
|
"httpx>=0.28.1",
|
|
10
|
-
"mcp>=1.24.0",
|
|
10
|
+
"mcp>=1.24.0,<2.0",
|
|
11
11
|
"openapi-pydantic>=0.5.1",
|
|
12
12
|
"platformdirs>=4.0.0",
|
|
13
|
-
"pydocket>=0.
|
|
13
|
+
"pydocket>=0.16.3",
|
|
14
14
|
"rich>=13.9.4",
|
|
15
15
|
"cyclopts>=4.0.0",
|
|
16
16
|
"authlib>=1.6.5",
|
|
@@ -7,7 +7,7 @@ from typing import Any
|
|
|
7
7
|
from mcp import GetPromptResult
|
|
8
8
|
|
|
9
9
|
from fastmcp import settings
|
|
10
|
-
from fastmcp.exceptions import NotFoundError, PromptError
|
|
10
|
+
from fastmcp.exceptions import FastMCPError, NotFoundError, PromptError
|
|
11
11
|
from fastmcp.prompts.prompt import FunctionPrompt, Prompt, PromptResult
|
|
12
12
|
from fastmcp.settings import DuplicateBehavior
|
|
13
13
|
from fastmcp.utilities.logging import get_logger
|
|
@@ -107,9 +107,8 @@ class PromptManager:
|
|
|
107
107
|
try:
|
|
108
108
|
messages = await prompt.render(arguments)
|
|
109
109
|
return GetPromptResult(description=prompt.description, messages=messages)
|
|
110
|
-
except
|
|
111
|
-
|
|
112
|
-
raise e
|
|
110
|
+
except FastMCPError:
|
|
111
|
+
raise
|
|
113
112
|
except Exception as e:
|
|
114
113
|
logger.exception(f"Error rendering prompt {name!r}")
|
|
115
114
|
if self.mask_error_details:
|
|
@@ -10,7 +10,7 @@ from typing import Any
|
|
|
10
10
|
from pydantic import AnyUrl
|
|
11
11
|
|
|
12
12
|
from fastmcp import settings
|
|
13
|
-
from fastmcp.exceptions import NotFoundError, ResourceError
|
|
13
|
+
from fastmcp.exceptions import FastMCPError, NotFoundError, ResourceError
|
|
14
14
|
from fastmcp.resources.resource import Resource
|
|
15
15
|
from fastmcp.resources.template import (
|
|
16
16
|
ResourceTemplate,
|
|
@@ -268,10 +268,9 @@ class ResourceManager:
|
|
|
268
268
|
uri_str,
|
|
269
269
|
params=params,
|
|
270
270
|
)
|
|
271
|
-
# Pass through
|
|
272
|
-
except
|
|
273
|
-
|
|
274
|
-
raise e
|
|
271
|
+
# Pass through FastMCPErrors as-is
|
|
272
|
+
except FastMCPError:
|
|
273
|
+
raise
|
|
275
274
|
# Handle other exceptions
|
|
276
275
|
except Exception as e:
|
|
277
276
|
logger.error(f"Error creating resource from template: {e}")
|
|
@@ -299,10 +298,9 @@ class ResourceManager:
|
|
|
299
298
|
try:
|
|
300
299
|
return await resource.read()
|
|
301
300
|
|
|
302
|
-
# raise
|
|
303
|
-
except
|
|
304
|
-
|
|
305
|
-
raise e
|
|
301
|
+
# raise FastMCPErrors as-is
|
|
302
|
+
except FastMCPError:
|
|
303
|
+
raise
|
|
306
304
|
|
|
307
305
|
# Handle other exceptions
|
|
308
306
|
except Exception as e:
|
|
@@ -322,11 +320,8 @@ class ResourceManager:
|
|
|
322
320
|
try:
|
|
323
321
|
resource = await template.create_resource(uri_str, params=params)
|
|
324
322
|
return await resource.read()
|
|
325
|
-
except
|
|
326
|
-
|
|
327
|
-
f"Error reading resource from template {uri_str!r}"
|
|
328
|
-
)
|
|
329
|
-
raise e
|
|
323
|
+
except FastMCPError:
|
|
324
|
+
raise
|
|
330
325
|
except Exception as e:
|
|
331
326
|
logger.exception(
|
|
332
327
|
f"Error reading resource from template {uri_str!r}"
|
|
@@ -114,6 +114,8 @@ class AuthProvider(TokenVerifierProtocol):
|
|
|
114
114
|
base_url = AnyHttpUrl(base_url)
|
|
115
115
|
self.base_url = base_url
|
|
116
116
|
self.required_scopes = required_scopes or []
|
|
117
|
+
self._mcp_path: str | None = None
|
|
118
|
+
self._resource_url: AnyHttpUrl | None = None
|
|
117
119
|
|
|
118
120
|
async def verify_token(self, token: str) -> AccessToken | None:
|
|
119
121
|
"""Verify a bearer token and return access info if valid.
|
|
@@ -128,6 +130,20 @@ class AuthProvider(TokenVerifierProtocol):
|
|
|
128
130
|
"""
|
|
129
131
|
raise NotImplementedError("Subclasses must implement verify_token")
|
|
130
132
|
|
|
133
|
+
def set_mcp_path(self, mcp_path: str | None) -> None:
|
|
134
|
+
"""Set the MCP endpoint path and compute resource URL.
|
|
135
|
+
|
|
136
|
+
This method is called by get_routes() to configure the expected
|
|
137
|
+
resource URL before route creation. Subclasses can override to
|
|
138
|
+
perform additional initialization that depends on knowing the
|
|
139
|
+
MCP endpoint path.
|
|
140
|
+
|
|
141
|
+
Args:
|
|
142
|
+
mcp_path: The path where the MCP endpoint is mounted (e.g., "/mcp")
|
|
143
|
+
"""
|
|
144
|
+
self._mcp_path = mcp_path
|
|
145
|
+
self._resource_url = self._get_resource_url(mcp_path)
|
|
146
|
+
|
|
131
147
|
def get_routes(
|
|
132
148
|
self,
|
|
133
149
|
mcp_path: str | None = None,
|
|
@@ -407,6 +423,8 @@ class OAuthProvider(
|
|
|
407
423
|
Returns:
|
|
408
424
|
List of OAuth routes
|
|
409
425
|
"""
|
|
426
|
+
# Configure resource URL before creating routes
|
|
427
|
+
self.set_mcp_path(mcp_path)
|
|
410
428
|
|
|
411
429
|
# Create standard OAuth authorization server routes
|
|
412
430
|
# Pass base_url as issuer_url to ensure metadata declares endpoints where
|
|
@@ -451,11 +469,8 @@ class OAuthProvider(
|
|
|
451
469
|
else:
|
|
452
470
|
oauth_routes.append(route)
|
|
453
471
|
|
|
454
|
-
# Get the resource URL based on the MCP path
|
|
455
|
-
resource_url = self._get_resource_url(mcp_path)
|
|
456
|
-
|
|
457
472
|
# Add protected resource routes if this server is also acting as a resource server
|
|
458
|
-
if
|
|
473
|
+
if self._resource_url:
|
|
459
474
|
supported_scopes = (
|
|
460
475
|
self.client_registration_options.valid_scopes
|
|
461
476
|
if self.client_registration_options
|
|
@@ -463,7 +478,7 @@ class OAuthProvider(
|
|
|
463
478
|
else self.required_scopes
|
|
464
479
|
)
|
|
465
480
|
protected_routes = create_protected_resource_routes(
|
|
466
|
-
resource_url=
|
|
481
|
+
resource_url=self._resource_url,
|
|
467
482
|
authorization_servers=[cast(AnyHttpUrl, self.issuer_url)],
|
|
468
483
|
scopes_supported=supported_scopes,
|
|
469
484
|
)
|