fastmcp 2.12.1__tar.gz → 2.12.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fastmcp-2.12.1 → fastmcp-2.12.3}/PKG-INFO +2 -2
- {fastmcp-2.12.1 → fastmcp-2.12.3}/README.md +1 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/changelog.mdx +163 -35
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/docs.json +5 -1
- fastmcp-2.12.3/docs/integrations/gemini-cli.mdx +173 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/openapi.mdx +1 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/public/schemas/fastmcp.json/latest.json +2 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/public/schemas/fastmcp.json/v1.json +2 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-cli.mdx +5 -5
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-install-claude_code.mdx +1 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-install-claude_desktop.mdx +1 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-install-cursor.mdx +2 -2
- fastmcp-2.12.3/docs/python-sdk/fastmcp-cli-install-gemini_cli.mdx +68 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-install-mcp_json.mdx +1 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-run.mdx +6 -34
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-client.mdx +2 -2
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-prompts-prompt.mdx +5 -5
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-resources-resource.mdx +12 -12
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-resources-template.mdx +5 -5
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-oauth_proxy.mdx +16 -15
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-dependencies.mdx +4 -4
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-server.mdx +33 -33
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-tools-tool.mdx +20 -17
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-tools-tool_transform.mdx +1 -1
- fastmcp-2.12.3/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-uv.mdx +45 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-types.mdx +19 -13
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/servers/auth/oauth-proxy.mdx +64 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/servers/proxy.mdx +1 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/updates.mdx +52 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/pyproject.toml +0 -2
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/cli/claude.py +1 -10
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/cli/cli.py +45 -25
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/cli/install/__init__.py +2 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/cli/install/claude_code.py +1 -10
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/cli/install/claude_desktop.py +1 -9
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/cli/install/cursor.py +2 -18
- fastmcp-2.12.3/src/fastmcp/cli/install/gemini_cli.py +242 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/cli/install/mcp_json.py +1 -9
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/cli/run.py +0 -84
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/client/auth/oauth.py +1 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/client/client.py +6 -6
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/client/elicitation.py +6 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/client/transports.py +1 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/contrib/component_manager/component_service.py +1 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/contrib/mcp_mixin/README.md +1 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +41 -6
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/experimental/utilities/openapi/director.py +8 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/prompts/prompt.py +10 -8
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/resources/resource.py +14 -11
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/resources/template.py +12 -10
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/auth/auth.py +7 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/auth/oauth_proxy.py +51 -11
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/context.py +10 -10
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/dependencies.py +18 -5
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/server.py +7 -5
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/settings.py +15 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/tools/tool.py +101 -85
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/tools/tool_transform.py +1 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +4 -39
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +2 -2
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/v1/schema.json +2 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/types.py +9 -5
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/cli/test_cli.py +27 -2
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/cli/test_config.py +5 -20
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/cli/test_cursor.py +4 -4
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/cli/test_install.py +62 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/cli/test_mcp_server_config_integration.py +14 -11
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/cli/test_mcp_server_config_schema.py +24 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/cli/test_project_prepare.py +3 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/cli/test_run.py +5 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/cli/test_run_config.py +1 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/client/test_elicitation.py +14 -2
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/client/test_streamable_http.py +2 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/conftest.py +7 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/contrib/test_bulk_tool_caller.py +126 -54
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/test_models.py +22 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/prompts/test_prompt_manager.py +4 -3
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/resources/test_resource_template.py +2 -2
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/auth/providers/test_workos.py +2 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/auth/test_jwt_provider.py +5 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/auth/test_oauth_proxy.py +169 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/middleware/test_error_handling.py +1 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/middleware/test_logging.py +3 -2
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/middleware/test_rate_limiting.py +1 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/openapi/conftest.py +1 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/proxy/test_proxy_client.py +3 -2
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/test_import_server.py +3 -2
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/test_server_interactions.py +68 -35
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/test_examples.py +9 -8
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/test_mcp_config.py +1 -1
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/tools/test_tool.py +232 -279
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/tools/test_tool_manager.py +31 -17
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/utilities/test_cli.py +9 -9
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/utilities/test_json_schema_type.py +17 -11
- {fastmcp-2.12.1 → fastmcp-2.12.3}/uv.lock +22 -22
- fastmcp-2.12.1/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-uv.mdx +0 -75
- fastmcp-2.12.1/tests/cli/test_run_with_uv.py +0 -249
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.ccignore +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.cursor/rules/core-mcp-objects.mdc +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.github/copilot-instructions.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.github/dependabot.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.github/pull_request_template.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.github/release.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.github/workflows/auto-close-duplicates.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.github/workflows/marvin-dedupe-issues.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.github/workflows/marvin-label-triage.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.github/workflows/marvin.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.github/workflows/publish.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.github/workflows/run-static.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.github/workflows/run-tests.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.github/workflows/update-config-schema.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.github/workflows/update-sdk-docs.yml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.gitignore +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/.pre-commit-config.yaml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/AGENTS.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/CLAUDE.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/CODE_OF_CONDUCT.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/LICENSE +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/README_OPENAPI.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/Windows_Notes.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/.ccignore +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/.cursor/rules/mintlify.mdc +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/assets/brand/blue-logo.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/assets/brand/card-background.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/assets/brand/favicon.svg +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/assets/brand/logo-wordmark-dark.svg +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/assets/brand/logo-wordmark.svg +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/assets/images/fastmcp_cloud/connect.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/assets/images/fastmcp_cloud/create_project.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/assets/images/fastmcp_cloud/deployment.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/assets/images/fastmcp_cloud/quickstart.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/assets/images/tutorial-rest-api-result.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/assets/schemas/mcp_server_config/latest.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/assets/schemas/mcp_server_config/v1.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/assets/updates/release-2-7.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/clients/auth/bearer.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/clients/auth/oauth.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/clients/client.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/clients/elicitation.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/clients/logging.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/clients/messages.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/clients/progress.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/clients/prompts.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/clients/resources.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/clients/roots.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/clients/sampling.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/clients/tools.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/clients/transports.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/community/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/community/showcase.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/css/banner.css +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/css/python-sdk.css +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/css/style.css +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/css/version-badge.css +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/deployment/fastmcp-cloud.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/deployment/running-server.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/deployment/self-hosted.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/deployment/server-configuration.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/development/contributing.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/development/releases.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/development/tests.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/getting-started/installation.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/getting-started/quickstart.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/getting-started/welcome.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/anthropic.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/asgi.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/authkit.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/azure.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/chatgpt.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/claude-code.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/claude-desktop.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/cursor-install-mcp.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/cursor.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/eunomia-authorization.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/fastapi.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/gemini.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/github.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/google.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/images/authkit/enable_dcr.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/images/permit/abac_condition_example.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/images/permit/abac_policy_example.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/images/permit/policy_mapping.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/images/permit/role_assignement.png +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/mcp-json-configuration.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/openai.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/integrations/permit.mdx +0 -0
- /fastmcp-2.12.1/docs/integrations/workos-oauth.mdx → /fastmcp-2.12.3/docs/integrations/workos.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/patterns/cli.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/patterns/contrib.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/patterns/decorating-methods.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/patterns/tool-transformation.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-claude.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-install-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-install-shared.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-auth-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-auth-bearer.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-auth-oauth.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-elicitation.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-logging.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-messages.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-oauth_callback.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-progress.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-roots.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-sampling.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-transports.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-exceptions.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-mcp_config.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-prompts-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-resources-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-resources-resource_manager.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-resources-types.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-auth.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-providers-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-providers-azure.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-providers-github.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-providers-google.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-providers-jwt.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-providers-workos.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-redirect_validation.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-context.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-elicitation.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-http.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-low_level.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-middleware-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-middleware-error_handling.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-middleware-logging.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-middleware-rate_limiting.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-middleware-timing.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-openapi.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-proxy.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-settings.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-tools-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-tools-tool_manager.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-auth.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-cli.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-components.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-exceptions.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-http.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-inspect.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-json_schema.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-json_schema_type.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-logging.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-base.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-mcp_server_config.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-__init__.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-base.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-filesystem.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-openapi.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-tests.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/servers/auth/authentication.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/servers/auth/full-oauth-server.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/servers/auth/remote-oauth.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/servers/auth/token-verification.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/servers/composition.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/servers/context.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/servers/elicitation.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/servers/logging.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/servers/middleware.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/servers/progress.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/servers/prompts.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/servers/resources.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/servers/sampling.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/servers/server.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/servers/tools.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/snippets/local-focus.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/snippets/version-badge.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/snippets/youtube-embed.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/tutorials/create-mcp-server.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/tutorials/mcp.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/docs/tutorials/rest-api.mdx +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/atproto_mcp/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/atproto_mcp/demo.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/atproto_mcp/fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/atproto_mcp/pyproject.toml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/__main__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_posts.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_profile.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_read.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_social.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/py.typed +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/settings.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/types.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/auth/azure_oauth/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/auth/azure_oauth/client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/auth/azure_oauth/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/auth/github_oauth/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/auth/github_oauth/client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/auth/github_oauth/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/auth/google_oauth/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/auth/google_oauth/client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/auth/google_oauth/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/auth/workos_oauth/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/auth/workos_oauth/client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/auth/workos_oauth/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/complex_inputs.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/config_server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/desktop.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/echo.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/fastmcp_config/env_interpolation_example.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/fastmcp_config/fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/fastmcp_config/full_example.fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/fastmcp_config/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/fastmcp_config/simple.fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/fastmcp_config_demo/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/fastmcp_config_demo/fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/fastmcp_config_demo/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/get_file.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/in_memory_proxy_example.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/memory.fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/memory.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/mount_example.fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/mount_example.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/sampling.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/sampling_fallback.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/screenshot.fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/screenshot.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/serializer.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/simple_echo.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/smart_home/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/smart_home/hub.fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/smart_home/lights.fastmcp.json +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/smart_home/pyproject.toml +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/smart_home/src/smart_home/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/smart_home/src/smart_home/__main__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/smart_home/src/smart_home/hub.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/smart_home/src/smart_home/lights/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/smart_home/src/smart_home/py.typed +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/smart_home/src/smart_home/settings.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/smart_home/uv.lock +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/tags_example.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/examples/text_me.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/justfile +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/scripts/auto_close_duplicates.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/cli/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/cli/install/shared.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/client/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/client/auth/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/client/auth/bearer.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/client/logging.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/client/messages.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/client/oauth_callback.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/client/progress.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/client/roots.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/client/sampling.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/contrib/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/contrib/component_manager/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/contrib/component_manager/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/contrib/component_manager/example.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/exceptions.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/experimental/sampling/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/experimental/sampling/handlers/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/experimental/sampling/handlers/base.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/experimental/sampling/handlers/openai.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/experimental/server/openapi/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/experimental/server/openapi/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/experimental/server/openapi/components.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/experimental/server/openapi/routing.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/experimental/server/openapi/server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/experimental/utilities/openapi/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/experimental/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/experimental/utilities/openapi/formatters.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/experimental/utilities/openapi/json_schema_converter.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/experimental/utilities/openapi/models.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/experimental/utilities/openapi/parser.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/experimental/utilities/openapi/schemas.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/mcp_config.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/prompts/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/prompts/prompt_manager.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/py.typed +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/resources/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/resources/resource_manager.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/resources/types.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/auth/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/auth/providers/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/auth/providers/azure.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/auth/providers/bearer.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/auth/providers/github.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/auth/providers/google.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/auth/providers/in_memory.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/auth/providers/jwt.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/auth/providers/workos.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/auth/redirect_validation.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/elicitation.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/http.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/low_level.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/middleware/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/middleware/error_handling.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/middleware/logging.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/middleware/middleware.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/middleware/rate_limiting.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/middleware/timing.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/openapi.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/proxy.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/server/sampling/handler.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/tools/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/tools/tool_manager.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/auth.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/cli.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/components.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/exceptions.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/http.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/inspect.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/json_schema.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/json_schema_type.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/logging.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_config.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/openapi.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/src/fastmcp/utilities/tests.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/cli/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/cli/test_server_args.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/cli/test_shared.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/cli/test_with_argv.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/client/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/client/auth/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/client/auth/test_oauth_client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/client/auth/test_oauth_token_expiry.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/client/test_client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/client/test_logs.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/client/test_notifications.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/client/test_openapi_experimental.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/client/test_openapi_legacy.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/client/test_progress.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/client/test_roots.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/client/test_sampling.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/client/test_sse.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/client/test_stdio.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/client/transports/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/client/transports/test_uv_transport.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/contrib/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/contrib/test_component_manager.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/contrib/test_mcp_mixin.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/deprecated/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/deprecated/test_bearer_auth_provider.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/deprecated/test_dependencies.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/deprecated/test_deprecated.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/deprecated/test_mount_import_arg_order.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/deprecated/test_mount_separators.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/deprecated/test_output_schema_false.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/deprecated/test_proxy_client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/deprecated/test_resource_prefixes.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/deprecated/test_route_type_ignore.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/deprecated/test_settings.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/README.md +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/conftest.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/openapi/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/openapi/test_comprehensive.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/openapi/test_deepobject_style.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/openapi/test_end_to_end_compatibility.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/openapi/test_openapi_features.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/openapi/test_openapi_performance.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/openapi/test_parameter_collisions.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/openapi/test_performance_comparison.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/openapi/test_server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/conftest.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/test_allof_requestbody.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/test_director.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/test_legacy_compatibility.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/test_nullable_fields.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/test_parser.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/test_schemas.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/test_transitive_references.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/experimental/sampling/test_openai_handler.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/integration_tests/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/integration_tests/auth/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/integration_tests/auth/test_github_provider_integration.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/integration_tests/conftest.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/integration_tests/test_github_mcp_remote.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/prompts/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/prompts/test_prompt.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/resources/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/resources/test_file_resources.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/resources/test_function_resources.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/resources/test_resource_manager.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/resources/test_resource_template_meta.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/resources/test_resources.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/auth/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/auth/providers/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/auth/providers/test_azure.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/auth/providers/test_github.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/auth/providers/test_google.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/auth/test_auth_provider.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/auth/test_oauth_proxy_redirect_validation.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/auth/test_redirect_validation.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/auth/test_remote_auth_provider.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/auth/test_static_token_verifier.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/http/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/http/test_bearer_auth_backend.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/http/test_custom_routes.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/http/test_http_auth_middleware.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/http/test_http_dependencies.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/http/test_http_middleware.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/middleware/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/middleware/test_middleware.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/middleware/test_timing.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/openapi/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/openapi/test_advanced_behavior.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/openapi/test_basic_functionality.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/openapi/test_configuration.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/openapi/test_deepobject_style.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/openapi/test_description_propagation.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/openapi/test_explode_integration.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/openapi/test_openapi_compatibility.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/openapi/test_openapi_path_parameters.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/openapi/test_optional_parameters.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/openapi/test_parameter_collisions.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/openapi/test_route_map_fn.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/proxy/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/proxy/test_proxy_server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/proxy/test_stateful_proxy_client.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/test_app_state.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/test_auth_integration.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/test_context.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/test_experimental_openapi_feature_flag.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/test_file_server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/test_logging.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/test_mount.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/test_resource_prefix_formats.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/test_run_server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/test_server.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/test_streamable_http_no_redirect.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/test_tool_annotations.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/test_tool_exclude_args.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/server/test_tool_transformation.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/tools/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/tools/test_tool_future_annotations.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/tools/test_tool_transform.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/utilities/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/utilities/openapi/conftest.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/utilities/openapi/test_nullable_fields.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/utilities/openapi/test_openapi.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/utilities/openapi/test_openapi_advanced.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/utilities/openapi/test_openapi_fastapi.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/utilities/openapi/test_openapi_output_schemas.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/utilities/test_components.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/utilities/test_inspect.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/utilities/test_json_schema.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/utilities/test_logging.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/utilities/test_tests.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/utilities/test_typeadapter.py +0 -0
- {fastmcp-2.12.1 → fastmcp-2.12.3}/tests/utilities/test_types.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fastmcp
|
|
3
|
-
Version: 2.12.
|
|
3
|
+
Version: 2.12.3
|
|
4
4
|
Summary: The fast, Pythonic way to build MCP servers and clients.
|
|
5
5
|
Project-URL: Homepage, https://gofastmcp.com
|
|
6
6
|
Project-URL: Repository, https://github.com/jlowin/fastmcp
|
|
@@ -278,7 +278,7 @@ async def main():
|
|
|
278
278
|
tools = await client.list_tools()
|
|
279
279
|
print(f"Available tools: {tools}")
|
|
280
280
|
result = await client.call_tool("add", {"a": 5, "b": 3})
|
|
281
|
-
print(f"Result: {result.text}")
|
|
281
|
+
print(f"Result: {result.content[0].text}")
|
|
282
282
|
|
|
283
283
|
# Connect via SSE
|
|
284
284
|
async with Client("http://localhost:8000/sse") as client:
|
|
@@ -242,7 +242,7 @@ async def main():
|
|
|
242
242
|
tools = await client.list_tools()
|
|
243
243
|
print(f"Available tools: {tools}")
|
|
244
244
|
result = await client.call_tool("add", {"a": 5, "b": 3})
|
|
245
|
-
print(f"Result: {result.text}")
|
|
245
|
+
print(f"Result: {result.content[0].text}")
|
|
246
246
|
|
|
247
247
|
# Connect via SSE
|
|
248
248
|
async with Client("http://localhost:8000/sse") as client:
|
|
@@ -4,55 +4,183 @@ icon: "list-check"
|
|
|
4
4
|
rss: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
<Update label="v2.12.
|
|
7
|
+
<Update label="v2.12.2" description="2025-09-03">
|
|
8
8
|
|
|
9
|
-
**[v2.12.
|
|
9
|
+
**[v2.12.2: Perchance to Stream](https://github.com/jlowin/fastmcp/releases/tag/v2.12.2)**
|
|
10
10
|
|
|
11
|
-
This
|
|
11
|
+
This is a hotfix for a bug where the `streamable-http` transport was not recognized as a valid option in `fastmcp.json` configuration files, despite being supported by the CLI. This resulted in a parsing error when the CLI arguments were merged against the configuration spec.
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## What's Changed
|
|
14
|
+
### Fixes 🐞
|
|
15
|
+
* Fix streamable-http transport validation in fastmcp.json config by [@jlowin](https://github.com/jlowin) in [#1739](https://github.com/jlowin/fastmcp/pull/1739)
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
**Full Changelog**: [v2.12.1...v2.12.2](https://github.com/jlowin/fastmcp/compare/v2.12.1...v2.12.2)
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
- GitHub
|
|
19
|
-
- Google
|
|
20
|
-
- WorkOS
|
|
21
|
-
- Azure
|
|
19
|
+
</Update>
|
|
22
20
|
|
|
23
|
-
|
|
21
|
+
<Update label="v2.12.1" description="2025-09-03">
|
|
24
22
|
|
|
25
|
-
|
|
23
|
+
**[v2.12.1: OAuth to Joy](https://github.com/jlowin/fastmcp/releases/tag/v2.12.1)**
|
|
26
24
|
|
|
27
|
-
|
|
25
|
+
FastMCP 2.12.1 strengthens the OAuth proxy implementation based on extensive community testing and feedback. This release improves client storage reliability, adds PKCE forwarding for enhanced security, introduces configurable token endpoint authentication methods, and expands scope handling—all addressing real-world integration challenges discovered since 2.12.0. The enhanced test suite with mock providers ensures these improvements are robust and maintainable.
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
- Transport settings
|
|
32
|
-
- Server entrypoints
|
|
33
|
-
- Metadata and descriptions
|
|
34
|
-
- Environment variables
|
|
27
|
+
## Breaking Changes
|
|
28
|
+
- **OAuth Proxy**: Users of built-in IDP integrations should note that `resource_server_url` has been renamed to `base_url` for clarity and consistency
|
|
35
29
|
|
|
36
|
-
|
|
30
|
+
## What's Changed
|
|
31
|
+
### Enhancements 🔧
|
|
32
|
+
* Make openai dependency optional by [@jlowin](https://github.com/jlowin) in [#1701](https://github.com/jlowin/fastmcp/pull/1701)
|
|
33
|
+
* Remove orphaned OAuth proxy code by [@jlowin](https://github.com/jlowin) in [#1722](https://github.com/jlowin/fastmcp/pull/1722)
|
|
34
|
+
* Expose valid scopes from OAuthProxy metadata by [@dmikusa](https://github.com/dmikusa) in [#1717](https://github.com/jlowin/fastmcp/pull/1717)
|
|
35
|
+
* OAuth proxy PKCE forwarding by [@jlowin](https://github.com/jlowin) in [#1733](https://github.com/jlowin/fastmcp/pull/1733)
|
|
36
|
+
* Add token_endpoint_auth_method parameter to OAuthProxy by [@jlowin](https://github.com/jlowin) in [#1736](https://github.com/jlowin/fastmcp/pull/1736)
|
|
37
|
+
* Clean up and enhance OAuth proxy tests with mock provider by [@jlowin](https://github.com/jlowin) in [#1738](https://github.com/jlowin/fastmcp/pull/1738)
|
|
38
|
+
### Fixes 🐞
|
|
39
|
+
* refactor: replace auth provider registry with ImportString by [@jlowin](https://github.com/jlowin) in [#1710](https://github.com/jlowin/fastmcp/pull/1710)
|
|
40
|
+
* Fix OAuth resource URL handling and WWW-Authenticate header by [@jlowin](https://github.com/jlowin) in [#1706](https://github.com/jlowin/fastmcp/pull/1706)
|
|
41
|
+
* Fix OAuth proxy client storage and add retry logic by [@jlowin](https://github.com/jlowin) in [#1732](https://github.com/jlowin/fastmcp/pull/1732)
|
|
42
|
+
### Docs 📚
|
|
43
|
+
* Fix documentation: use StreamableHttpTransport for headers in testing by [@jlowin](https://github.com/jlowin) in [#1702](https://github.com/jlowin/fastmcp/pull/1702)
|
|
44
|
+
* docs: add performance warnings for mounted servers and proxies by [@strawgate](https://github.com/strawgate) in [#1669](https://github.com/jlowin/fastmcp/pull/1669)
|
|
45
|
+
* Update documentation around scopes for google by [@jlowin](https://github.com/jlowin) in [#1703](https://github.com/jlowin/fastmcp/pull/1703)
|
|
46
|
+
* Add deployment information to quickstart by [@seanpwlms](https://github.com/seanpwlms) in [#1433](https://github.com/jlowin/fastmcp/pull/1433)
|
|
47
|
+
* Update quickstart by [@jlowin](https://github.com/jlowin) in [#1728](https://github.com/jlowin/fastmcp/pull/1728)
|
|
48
|
+
* Add development docs for FastMCP by [@jlowin](https://github.com/jlowin) in [#1719](https://github.com/jlowin/fastmcp/pull/1719)
|
|
49
|
+
### Other Changes 🦾
|
|
50
|
+
* Set generics without bounds to default=Any by [@strawgate](https://github.com/strawgate) in [#1648](https://github.com/jlowin/fastmcp/pull/1648)
|
|
51
|
+
|
|
52
|
+
## New Contributors
|
|
53
|
+
* [@dmikusa](https://github.com/dmikusa) made their first contribution in [#1717](https://github.com/jlowin/fastmcp/pull/1717)
|
|
54
|
+
* [@seanpwlms](https://github.com/seanpwlms) made their first contribution in [#1433](https://github.com/jlowin/fastmcp/pull/1433)
|
|
37
55
|
|
|
38
|
-
|
|
56
|
+
**Full Changelog**: [v2.12.0...v2.12.1](https://github.com/jlowin/fastmcp/compare/v2.12.0...v2.12.1)
|
|
39
57
|
|
|
40
|
-
|
|
58
|
+
</Update>
|
|
41
59
|
|
|
42
|
-
|
|
43
|
-
- Maintains compatibility with all clients
|
|
44
|
-
- Encourages feature adoption without breaking existing integrations
|
|
45
|
-
- Provides a smooth upgrade path as client capabilities evolve
|
|
60
|
+
<Update label="v2.12.0" description="2025-08-31">
|
|
46
61
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
-
|
|
62
|
+
**[v2.12.0: Auth to the Races](https://github.com/jlowin/fastmcp/releases/tag/v2.12.0)**
|
|
63
|
+
|
|
64
|
+
FastMCP 2.12 represents one of our most significant releases to date, both in scope and community involvement. After extensive testing and iteration with the community, we're shipping major improvements to authentication, configuration, and MCP feature adoption.
|
|
65
|
+
|
|
66
|
+
🔐 **OAuth Proxy for Broader Provider Support** addresses a fundamental challenge: while MCP requires Dynamic Client Registration (DCR), many popular OAuth providers don't support it. The new OAuth proxy bridges this gap, enabling FastMCP servers to authenticate with providers like GitHub, Google, WorkOS, and Azure through minimal configuration. These native integrations ship today, with more providers planned based on community needs.
|
|
67
|
+
|
|
68
|
+
📋 **Declarative JSON Configuration** introduces a standardized, portable way to describe and deploy MCP servers. The `fastmcp.json` configuration file becomes the single source of truth for dependencies, transport settings, entrypoints, and server metadata. This foundation sets the stage for future capabilities like transformations and remote sources, moving toward a world where MCP servers are as portable and shareable as container images.
|
|
69
|
+
|
|
70
|
+
🧠 **Sampling API Fallback** tackles the chicken-and-egg problem limiting adoption of advanced MCP features. Sampling—where servers request LLM completions from clients—is powerful but underutilized due to limited client support. FastMCP now lets server authors define fallback handlers that generate sampling completions server-side when clients don't support the feature, encouraging adoption while maintaining compatibility.
|
|
71
|
+
|
|
72
|
+
This release took longer than usual to ship, and for good reason: the community's aggressive testing and feedback on the authentication system helped us reach a level of stability we're confident in. There's certainly more work ahead, but these foundations position FastMCP to handle increasingly complex use cases while remaining approachable for developers.
|
|
73
|
+
|
|
74
|
+
Thank you to our new contributors and everyone who tested preview builds. Your feedback directly shaped these features.
|
|
75
|
+
|
|
76
|
+
## What's Changed
|
|
77
|
+
### New Features 🎉
|
|
78
|
+
* Add OAuth proxy that allows authentication with social IDPs without DCR support by [@jlowin](https://github.com/jlowin) in [#1434](https://github.com/jlowin/fastmcp/pull/1434)
|
|
79
|
+
* feat: introduce declarative JSON configuration system by [@jlowin](https://github.com/jlowin) in [#1517](https://github.com/jlowin/fastmcp/pull/1517)
|
|
80
|
+
* ✨ Fallback to a Completions API when Sampling is not available by [@strawgate](https://github.com/strawgate) in [#1145](https://github.com/jlowin/fastmcp/pull/1145)
|
|
81
|
+
* Implement typed source system for FastMCP declarative configuration by [@jlowin](https://github.com/jlowin) in [#1607](https://github.com/jlowin/fastmcp/pull/1607)
|
|
82
|
+
### Enhancements 🔧
|
|
83
|
+
* Support importing custom_route endpoints when mounting servers by [@jlowin](https://github.com/jlowin) in [#1470](https://github.com/jlowin/fastmcp/pull/1470)
|
|
84
|
+
* Remove unnecessary asserts by [@jlowin](https://github.com/jlowin) in [#1484](https://github.com/jlowin/fastmcp/pull/1484)
|
|
85
|
+
* Add Claude issue triage by [@jlowin](https://github.com/jlowin) in [#1510](https://github.com/jlowin/fastmcp/pull/1510)
|
|
86
|
+
* Inline dedupe prompt by [@jlowin](https://github.com/jlowin) in [#1512](https://github.com/jlowin/fastmcp/pull/1512)
|
|
87
|
+
* Improve stdio and mcp_config clean-up by [@strawgate](https://github.com/strawgate) in [#1444](https://github.com/jlowin/fastmcp/pull/1444)
|
|
88
|
+
* involve kwargs to pass parameters on creating RichHandler for logging customization. by [@itaru2622](https://github.com/itaru2622) in [#1504](https://github.com/jlowin/fastmcp/pull/1504)
|
|
89
|
+
* Move SDK docs generation to post-merge workflow by [@jlowin](https://github.com/jlowin) in [#1513](https://github.com/jlowin/fastmcp/pull/1513)
|
|
90
|
+
* Improve label triage guidance by [@jlowin](https://github.com/jlowin) in [#1516](https://github.com/jlowin/fastmcp/pull/1516)
|
|
91
|
+
* Add code review guidelines for agents by [@jlowin](https://github.com/jlowin) in [#1520](https://github.com/jlowin/fastmcp/pull/1520)
|
|
92
|
+
* Remove trailing slash in unit tests by [@jlowin](https://github.com/jlowin) in [#1535](https://github.com/jlowin/fastmcp/pull/1535)
|
|
93
|
+
* Update OAuth callback UI branding by [@jlowin](https://github.com/jlowin) in [#1536](https://github.com/jlowin/fastmcp/pull/1536)
|
|
94
|
+
* Fix Marvin workflow to support development tools by [@jlowin](https://github.com/jlowin) in [#1537](https://github.com/jlowin/fastmcp/pull/1537)
|
|
95
|
+
* Add mounted_components_raise_on_load_error setting for debugging by [@jlowin](https://github.com/jlowin) in [#1534](https://github.com/jlowin/fastmcp/pull/1534)
|
|
96
|
+
* feat: Add --workspace flag to fastmcp install cursor by [@jlowin](https://github.com/jlowin) in [#1522](https://github.com/jlowin/fastmcp/pull/1522)
|
|
97
|
+
* switch from `pyright` to `ty` by [@zzstoatzz](https://github.com/zzstoatzz) in [#1545](https://github.com/jlowin/fastmcp/pull/1545)
|
|
98
|
+
* feat: trigger Marvin workflow on PR body content by [@jlowin](https://github.com/jlowin) in [#1549](https://github.com/jlowin/fastmcp/pull/1549)
|
|
99
|
+
* Add WorkOS and Azure OAuth providers by [@jlowin](https://github.com/jlowin) in [#1550](https://github.com/jlowin/fastmcp/pull/1550)
|
|
100
|
+
* Adjust timeout for slow MCP Server shutdown test by [@strawgate](https://github.com/strawgate) in [#1561](https://github.com/jlowin/fastmcp/pull/1561)
|
|
101
|
+
* Update banner by [@jlowin](https://github.com/jlowin) in [#1567](https://github.com/jlowin/fastmcp/pull/1567)
|
|
102
|
+
* Added import of AuthProxy to auth __init__ by [@KaliszS](https://github.com/KaliszS) in [#1568](https://github.com/jlowin/fastmcp/pull/1568)
|
|
103
|
+
* Add configurable redirect URI validation for OAuth providers by [@jlowin](https://github.com/jlowin) in [#1582](https://github.com/jlowin/fastmcp/pull/1582)
|
|
104
|
+
* Remove invalid-argument-type ignore and fix type errors by [@jlowin](https://github.com/jlowin) in [#1588](https://github.com/jlowin/fastmcp/pull/1588)
|
|
105
|
+
* Remove generate-schema from public CLI by [@jlowin](https://github.com/jlowin) in [#1591](https://github.com/jlowin/fastmcp/pull/1591)
|
|
106
|
+
* Skip flaky windows test / mulit-client garbage collection by [@jlowin](https://github.com/jlowin) in [#1592](https://github.com/jlowin/fastmcp/pull/1592)
|
|
107
|
+
* Add setting to disable logging configuration by [@isra17](https://github.com/isra17) in [#1575](https://github.com/jlowin/fastmcp/pull/1575)
|
|
108
|
+
* Improve debug logging for nested Servers / Clients by [@strawgate](https://github.com/strawgate) in [#1604](https://github.com/jlowin/fastmcp/pull/1604)
|
|
109
|
+
* Add GitHub pull request template by [@strawgate](https://github.com/strawgate) in [#1581](https://github.com/jlowin/fastmcp/pull/1581)
|
|
110
|
+
* chore: Automate docs and schema updates via PRs by [@jlowin](https://github.com/jlowin) in [#1611](https://github.com/jlowin/fastmcp/pull/1611)
|
|
111
|
+
* Experiment with haiku for limited workflows by [@jlowin](https://github.com/jlowin) in [#1613](https://github.com/jlowin/fastmcp/pull/1613)
|
|
112
|
+
* feat: Improve GitHub workflow automation for schema and SDK docs by [@jlowin](https://github.com/jlowin) in [#1615](https://github.com/jlowin/fastmcp/pull/1615)
|
|
113
|
+
* Consolidate server loading logic into FileSystemSource by [@jlowin](https://github.com/jlowin) in [#1614](https://github.com/jlowin/fastmcp/pull/1614)
|
|
114
|
+
* Prevent Haiku Marvin from commenting when there are no duplicates by [@jlowin](https://github.com/jlowin) in [#1622](https://github.com/jlowin/fastmcp/pull/1622)
|
|
115
|
+
* chore: Add clarifying note to automated PR bodies by [@jlowin](https://github.com/jlowin) in [#1623](https://github.com/jlowin/fastmcp/pull/1623)
|
|
116
|
+
* feat: introduce inline snapshots by [@strawgate](https://github.com/strawgate) in [#1605](https://github.com/jlowin/fastmcp/pull/1605)
|
|
117
|
+
* Improve fastmcp.json environment configuration and project-based deployments by [@jlowin](https://github.com/jlowin) in [#1631](https://github.com/jlowin/fastmcp/pull/1631)
|
|
118
|
+
* fix: allow passing query params in OAuthProxy upstream authorization url by [@danb27](https://github.com/danb27) in [#1630](https://github.com/jlowin/fastmcp/pull/1630)
|
|
119
|
+
* Support multiple --with-editable flags in CLI commands by [@jlowin](https://github.com/jlowin) in [#1634](https://github.com/jlowin/fastmcp/pull/1634)
|
|
120
|
+
* feat: support comma separated oauth scopes by [@jlowin](https://github.com/jlowin) in [#1642](https://github.com/jlowin/fastmcp/pull/1642)
|
|
121
|
+
* Add allowed_client_redirect_uris to OAuth provider subclasses by [@jlowin](https://github.com/jlowin) in [#1662](https://github.com/jlowin/fastmcp/pull/1662)
|
|
122
|
+
* Consolidate CLI config parsing and prevent infinite loops by [@jlowin](https://github.com/jlowin) in [#1660](https://github.com/jlowin/fastmcp/pull/1660)
|
|
123
|
+
* Internal refactor: mcp server config by [@jlowin](https://github.com/jlowin) in [#1672](https://github.com/jlowin/fastmcp/pull/1672)
|
|
124
|
+
* Refactor Environment to support multiple runtime types by [@jlowin](https://github.com/jlowin) in [#1673](https://github.com/jlowin/fastmcp/pull/1673)
|
|
125
|
+
* Add type field to Environment base class by [@jlowin](https://github.com/jlowin) in [#1676](https://github.com/jlowin/fastmcp/pull/1676)
|
|
126
|
+
### Fixes 🐞
|
|
127
|
+
* Fix breaking change: restore output_schema=False compatibility by [@jlowin](https://github.com/jlowin) in [#1482](https://github.com/jlowin/fastmcp/pull/1482)
|
|
128
|
+
* Fix #1506: Update tool filtering documentation from _meta to meta by [@maybenotconnor](https://github.com/maybenotconnor) in [#1511](https://github.com/jlowin/fastmcp/pull/1511)
|
|
129
|
+
* Fix pytest warnings by [@jlowin](https://github.com/jlowin) in [#1559](https://github.com/jlowin/fastmcp/pull/1559)
|
|
130
|
+
* nest schemas under assets by [@jlowin](https://github.com/jlowin) in [#1593](https://github.com/jlowin/fastmcp/pull/1593)
|
|
131
|
+
* Skip flaky windows test by [@jlowin](https://github.com/jlowin) in [#1596](https://github.com/jlowin/fastmcp/pull/1596)
|
|
132
|
+
* ACTUALLY move schemas to fastmcp.json by [@jlowin](https://github.com/jlowin) in [#1597](https://github.com/jlowin/fastmcp/pull/1597)
|
|
133
|
+
* Fix and centralize CLI path resolution by [@jlowin](https://github.com/jlowin) in [#1590](https://github.com/jlowin/fastmcp/pull/1590)
|
|
134
|
+
* Remove client info modifications by [@jlowin](https://github.com/jlowin) in [#1620](https://github.com/jlowin/fastmcp/pull/1620)
|
|
135
|
+
* Fix $defs being discarded in input schema of transformed tool by [@pldesch-chift](https://github.com/pldesch-chift) in [#1578](https://github.com/jlowin/fastmcp/pull/1578)
|
|
136
|
+
* Fix enum elicitation to use inline schemas for MCP compatibility by [@jlowin](https://github.com/jlowin) in [#1632](https://github.com/jlowin/fastmcp/pull/1632)
|
|
137
|
+
* Reuse session for `StdioTransport` in `Client.new` by [@strawgate](https://github.com/strawgate) in [#1635](https://github.com/jlowin/fastmcp/pull/1635)
|
|
138
|
+
* Feat: Configurable LoggingMiddleware payload serialization by [@vl-kp](https://github.com/vl-kp) in [#1636](https://github.com/jlowin/fastmcp/pull/1636)
|
|
139
|
+
* Fix OAuth redirect URI validation for DCR compatibility by [@jlowin](https://github.com/jlowin) in [#1661](https://github.com/jlowin/fastmcp/pull/1661)
|
|
140
|
+
* Add default scope handling in OAuth proxy by [@romanusyk](https://github.com/romanusyk) in [#1667](https://github.com/jlowin/fastmcp/pull/1667)
|
|
141
|
+
* Fix OAuth token expiry handling by [@jlowin](https://github.com/jlowin) in [#1671](https://github.com/jlowin/fastmcp/pull/1671)
|
|
142
|
+
* Add resource_server_url parameter to OAuth proxy providers by [@jlowin](https://github.com/jlowin) in [#1682](https://github.com/jlowin/fastmcp/pull/1682)
|
|
143
|
+
### Breaking Changes 🛫
|
|
144
|
+
* Enhance inspect command with structured output and format options by [@jlowin](https://github.com/jlowin) in [#1481](https://github.com/jlowin/fastmcp/pull/1481)
|
|
145
|
+
### Docs 📚
|
|
146
|
+
* Update changelog by [@jlowin](https://github.com/jlowin) in [#1453](https://github.com/jlowin/fastmcp/pull/1453)
|
|
147
|
+
* Update banner by [@jlowin](https://github.com/jlowin) in [#1472](https://github.com/jlowin/fastmcp/pull/1472)
|
|
148
|
+
* Update logo files by [@jlowin](https://github.com/jlowin) in [#1473](https://github.com/jlowin/fastmcp/pull/1473)
|
|
149
|
+
* Update deployment docs by [@jlowin](https://github.com/jlowin) in [#1486](https://github.com/jlowin/fastmcp/pull/1486)
|
|
150
|
+
* Update FastMCP Cloud screenshot by [@jlowin](https://github.com/jlowin) in [#1487](https://github.com/jlowin/fastmcp/pull/1487)
|
|
151
|
+
* Update authentication note in docs by [@jlowin](https://github.com/jlowin) in [#1488](https://github.com/jlowin/fastmcp/pull/1488)
|
|
152
|
+
* chore: Update installation.mdx version snippet by [@thomas-te](https://github.com/thomas-te) in [#1496](https://github.com/jlowin/fastmcp/pull/1496)
|
|
153
|
+
* Update fastmcp cloud server requirements by [@jlowin](https://github.com/jlowin) in [#1497](https://github.com/jlowin/fastmcp/pull/1497)
|
|
154
|
+
* Fix oauth pyright type checking by [@strawgate](https://github.com/strawgate) in [#1498](https://github.com/jlowin/fastmcp/pull/1498)
|
|
155
|
+
* docs: Fix type annotation in return value documentation by [@MaikelVeen](https://github.com/MaikelVeen) in [#1499](https://github.com/jlowin/fastmcp/pull/1499)
|
|
156
|
+
* Fix PromptMessage usage in docs example by [@jlowin](https://github.com/jlowin) in [#1515](https://github.com/jlowin/fastmcp/pull/1515)
|
|
157
|
+
* Create CODE_OF_CONDUCT.md by [@jlowin](https://github.com/jlowin) in [#1523](https://github.com/jlowin/fastmcp/pull/1523)
|
|
158
|
+
* Fixed wrong import path in new docs page by [@KaliszS](https://github.com/KaliszS) in [#1538](https://github.com/jlowin/fastmcp/pull/1538)
|
|
159
|
+
* Document symmetric key JWT verification support by [@jlowin](https://github.com/jlowin) in [#1586](https://github.com/jlowin/fastmcp/pull/1586)
|
|
160
|
+
* Update fastmcp.json schema path by [@jlowin](https://github.com/jlowin) in [#1595](https://github.com/jlowin/fastmcp/pull/1595)
|
|
161
|
+
### Dependencies 📦
|
|
162
|
+
* Bump actions/create-github-app-token from 1 to 2 by [@dependabot](https://github.com/dependabot)[bot] in [#1436](https://github.com/jlowin/fastmcp/pull/1436)
|
|
163
|
+
* Bump astral-sh/setup-uv from 4 to 6 by [@dependabot](https://github.com/dependabot)[bot] in [#1532](https://github.com/jlowin/fastmcp/pull/1532)
|
|
164
|
+
* Bump actions/checkout from 4 to 5 by [@dependabot](https://github.com/dependabot)[bot] in [#1533](https://github.com/jlowin/fastmcp/pull/1533)
|
|
165
|
+
### Other Changes 🦾
|
|
166
|
+
* Add dedupe workflow by [@jlowin](https://github.com/jlowin) in [#1454](https://github.com/jlowin/fastmcp/pull/1454)
|
|
167
|
+
* Update AGENTS.md by [@jlowin](https://github.com/jlowin) in [#1471](https://github.com/jlowin/fastmcp/pull/1471)
|
|
168
|
+
* Give Marvin the power of the Internet by [@strawgate](https://github.com/strawgate) in [#1475](https://github.com/jlowin/fastmcp/pull/1475)
|
|
169
|
+
* Update `just` error message for static checks by [@jlowin](https://github.com/jlowin) in [#1483](https://github.com/jlowin/fastmcp/pull/1483)
|
|
170
|
+
* Remove labeler by [@jlowin](https://github.com/jlowin) in [#1509](https://github.com/jlowin/fastmcp/pull/1509)
|
|
171
|
+
* update aproto server to handle rich links by [@zzstoatzz](https://github.com/zzstoatzz) in [#1556](https://github.com/jlowin/fastmcp/pull/1556)
|
|
172
|
+
* fix: enable triage bot for fork PRs using pull_request_target by [@jlowin](https://github.com/jlowin) in [#1557](https://github.com/jlowin/fastmcp/pull/1557)
|
|
173
|
+
|
|
174
|
+
## New Contributors
|
|
175
|
+
* [@thomas-te](https://github.com/thomas-te) made their first contribution in [#1496](https://github.com/jlowin/fastmcp/pull/1496)
|
|
176
|
+
* [@maybenotconnor](https://github.com/maybenotconnor) made their first contribution in [#1511](https://github.com/jlowin/fastmcp/pull/1511)
|
|
177
|
+
* [@MaikelVeen](https://github.com/MaikelVeen) made their first contribution in [#1499](https://github.com/jlowin/fastmcp/pull/1499)
|
|
178
|
+
* [@KaliszS](https://github.com/KaliszS) made their first contribution in [#1538](https://github.com/jlowin/fastmcp/pull/1538)
|
|
179
|
+
* [@isra17](https://github.com/isra17) made their first contribution in [#1575](https://github.com/jlowin/fastmcp/pull/1575)
|
|
180
|
+
* [@marvin-context-protocol](https://github.com/marvin-context-protocol)[bot] made their first contribution in [#1616](https://github.com/jlowin/fastmcp/pull/1616)
|
|
181
|
+
* [@pldesch-chift](https://github.com/pldesch-chift) made their first contribution in [#1578](https://github.com/jlowin/fastmcp/pull/1578)
|
|
182
|
+
* [@vl-kp](https://github.com/vl-kp) made their first contribution in [#1636](https://github.com/jlowin/fastmcp/pull/1636)
|
|
183
|
+
* [@romanusyk](https://github.com/romanusyk) made their first contribution in [#1667](https://github.com/jlowin/fastmcp/pull/1667)
|
|
56
184
|
|
|
57
185
|
**Full Changelog**: [v2.11.3...v2.12.0](https://github.com/jlowin/fastmcp/compare/v2.11.3...v2.12.0)
|
|
58
186
|
|
|
@@ -36,6 +36,9 @@
|
|
|
36
36
|
"measurementId": "G-64R5W1TJXG"
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
|
+
"interaction": {
|
|
40
|
+
"drilldown": false
|
|
41
|
+
},
|
|
39
42
|
"logo": {
|
|
40
43
|
"dark": "/assets/brand/logo-wordmark-dark.svg",
|
|
41
44
|
"light": "/assets/brand/logo-wordmark.svg"
|
|
@@ -162,7 +165,7 @@
|
|
|
162
165
|
"integrations/azure",
|
|
163
166
|
"integrations/github",
|
|
164
167
|
"integrations/google",
|
|
165
|
-
"integrations/workos
|
|
168
|
+
"integrations/workos"
|
|
166
169
|
]
|
|
167
170
|
},
|
|
168
171
|
{
|
|
@@ -253,6 +256,7 @@
|
|
|
253
256
|
"python-sdk/fastmcp-cli-install-claude_code",
|
|
254
257
|
"python-sdk/fastmcp-cli-install-claude_desktop",
|
|
255
258
|
"python-sdk/fastmcp-cli-install-cursor",
|
|
259
|
+
"python-sdk/fastmcp-cli-install-gemini_cli",
|
|
256
260
|
"python-sdk/fastmcp-cli-install-mcp_json",
|
|
257
261
|
"python-sdk/fastmcp-cli-install-shared"
|
|
258
262
|
]
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Gemini CLI 🤝 FastMCP
|
|
3
|
+
sidebarTitle: Gemini CLI
|
|
4
|
+
description: Install and use FastMCP servers in Gemini CLI
|
|
5
|
+
icon: message-smile
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
import { VersionBadge } from "/snippets/version-badge.mdx"
|
|
9
|
+
import { LocalFocusTip } from "/snippets/local-focus.mdx"
|
|
10
|
+
|
|
11
|
+
<LocalFocusTip />
|
|
12
|
+
|
|
13
|
+
Gemini CLI supports MCP servers through multiple transport methods including STDIO, SSE, and HTTP, allowing you to extend Gemini's capabilities with custom tools, resources, and prompts from your FastMCP servers.
|
|
14
|
+
|
|
15
|
+
## Requirements
|
|
16
|
+
|
|
17
|
+
This integration uses STDIO transport to run your FastMCP server locally. For remote deployments, you can run your FastMCP server with HTTP or SSE transport and configure it directly using Gemini CLI's built-in MCP management commands.
|
|
18
|
+
|
|
19
|
+
## Create a Server
|
|
20
|
+
|
|
21
|
+
The examples in this guide will use the following simple dice-rolling server, saved as `server.py`.
|
|
22
|
+
|
|
23
|
+
```python server.py
|
|
24
|
+
import random
|
|
25
|
+
from fastmcp import FastMCP
|
|
26
|
+
|
|
27
|
+
mcp = FastMCP(name="Dice Roller")
|
|
28
|
+
|
|
29
|
+
@mcp.tool
|
|
30
|
+
def roll_dice(n_dice: int) -> list[int]:
|
|
31
|
+
"""Roll `n_dice` 6-sided dice and return the results."""
|
|
32
|
+
return [random.randint(1, 6) for _ in range(n_dice)]
|
|
33
|
+
|
|
34
|
+
if __name__ == "__main__":
|
|
35
|
+
mcp.run()
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Install the Server
|
|
39
|
+
|
|
40
|
+
### FastMCP CLI
|
|
41
|
+
<VersionBadge version="2.13.0" />
|
|
42
|
+
|
|
43
|
+
The easiest way to install a FastMCP server in Gemini CLI is using the `fastmcp install gemini-cli` command. This automatically handles the configuration, dependency management, and calls Gemini CLI's built-in MCP management system.
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
fastmcp install gemini-cli server.py
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The install command supports the same `file.py:object` notation as the `run` command. If no object is specified, it will automatically look for a FastMCP server object named `mcp`, `server`, or `app` in your file:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# These are equivalent if your server object is named 'mcp'
|
|
53
|
+
fastmcp install gemini-cli server.py
|
|
54
|
+
fastmcp install gemini-cli server.py:mcp
|
|
55
|
+
|
|
56
|
+
# Use explicit object name if your server has a different name
|
|
57
|
+
fastmcp install gemini-cli server.py:my_custom_server
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The command will automatically configure the server with Gemini CLI's `gemini mcp add` command.
|
|
61
|
+
|
|
62
|
+
#### Dependencies
|
|
63
|
+
|
|
64
|
+
FastMCP provides flexible dependency management options for your Gemini CLI servers:
|
|
65
|
+
|
|
66
|
+
**Individual packages**: Use the `--with` flag to specify packages your server needs. You can use this flag multiple times:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
fastmcp install gemini-cli server.py --with pandas --with requests
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Requirements file**: If you maintain a `requirements.txt` file with all your dependencies, use `--with-requirements` to install them:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
fastmcp install gemini-cli server.py --with-requirements requirements.txt
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Editable packages**: For local packages under development, use `--with-editable` to install them in editable mode:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
fastmcp install gemini-cli server.py --with-editable ./my-local-package
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Alternatively, you can use a `fastmcp.json` configuration file (recommended):
|
|
85
|
+
|
|
86
|
+
```json fastmcp.json
|
|
87
|
+
{
|
|
88
|
+
"$schema": "https://gofastmcp.com/public/schemas/fastmcp.json/v1.json",
|
|
89
|
+
"source": {
|
|
90
|
+
"path": "server.py",
|
|
91
|
+
"entrypoint": "mcp"
|
|
92
|
+
},
|
|
93
|
+
"environment": {
|
|
94
|
+
"dependencies": ["pandas", "requests"]
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
#### Python Version and Project Configuration
|
|
101
|
+
|
|
102
|
+
Control the Python environment for your server with these options:
|
|
103
|
+
|
|
104
|
+
**Python version**: Use `--python` to specify which Python version your server requires. This ensures compatibility when your server needs specific Python features:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
fastmcp install gemini-cli server.py --python 3.11
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**Project directory**: Use `--project` to run your server within a specific project context. This tells `uv` to use the project's configuration files and virtual environment:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
fastmcp install gemini-cli server.py --project /path/to/my-project
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
#### Environment Variables
|
|
117
|
+
|
|
118
|
+
If your server needs environment variables (like API keys), you must include them:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
fastmcp install gemini-cli server.py --server-name "Weather Server" \
|
|
122
|
+
--env API_KEY=your-api-key \
|
|
123
|
+
--env DEBUG=true
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Or load them from a `.env` file:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
fastmcp install gemini-cli server.py --server-name "Weather Server" --env-file .env
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
<Warning>
|
|
133
|
+
**Gemini CLI must be installed**. The integration looks for the Gemini CLI and uses the `gemini mcp add` command to register servers.
|
|
134
|
+
</Warning>
|
|
135
|
+
|
|
136
|
+
### Manual Configuration
|
|
137
|
+
|
|
138
|
+
For more control over the configuration, you can manually use Gemini CLI's built-in MCP management commands. This gives you direct control over how your server is launched:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# Add a server with custom configuration
|
|
142
|
+
gemini mcp add dice-roller uv -- run --with fastmcp fastmcp run server.py
|
|
143
|
+
|
|
144
|
+
# Add with environment variables
|
|
145
|
+
gemini mcp add weather-server -e API_KEY=secret -e DEBUG=true uv -- run --with fastmcp fastmcp run server.py
|
|
146
|
+
|
|
147
|
+
# Add with specific scope (user, or project)
|
|
148
|
+
gemini mcp add my-server --scope user uv -- run --with fastmcp fastmcp run server.py
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
You can also manually specify Python versions and project directories in your Gemini CLI commands:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# With specific Python version
|
|
155
|
+
gemini mcp add ml-server uv -- run --python 3.11 --with fastmcp fastmcp run server.py
|
|
156
|
+
|
|
157
|
+
# Within a project directory
|
|
158
|
+
gemini mcp add project-server uv -- run --project /path/to/project --with fastmcp fastmcp run server.py
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Using the Server
|
|
162
|
+
|
|
163
|
+
Once your server is installed, you can start using your FastMCP server with Gemini CLI.
|
|
164
|
+
|
|
165
|
+
Try asking Gemini something like:
|
|
166
|
+
|
|
167
|
+
> "Roll some dice for me"
|
|
168
|
+
|
|
169
|
+
Gemini will automatically detect your `roll_dice` tool and use it to fulfill your request.
|
|
170
|
+
|
|
171
|
+
Gemini CLI can now access all the tools and prompts you've defined in your FastMCP server.
|
|
172
|
+
|
|
173
|
+
If your server provides prompts, you can use them as slash commands with `/prompt_name`.
|
|
@@ -217,7 +217,7 @@ For advanced use cases that require more complex logic, you can provide a `route
|
|
|
217
217
|
In addition to more precise targeting of methods, patterns, and tags, this function can access any additional OpenAPI metadata about the route.
|
|
218
218
|
|
|
219
219
|
<Tip>
|
|
220
|
-
The `route_map_fn`
|
|
220
|
+
The `route_map_fn` is called on all routes, even those that matched `MCPType.EXCLUDE` in your custom maps. This gives you an opportunity to customize the mapping or even override an exclusion.
|
|
221
221
|
</Tip>
|
|
222
222
|
|
|
223
223
|
```python
|
|
@@ -10,7 +10,7 @@ FastMCP CLI tools using Cyclopts.
|
|
|
10
10
|
|
|
11
11
|
## Functions
|
|
12
12
|
|
|
13
|
-
### `with_argv` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/cli.py#
|
|
13
|
+
### `with_argv` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/cli.py#L69" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
14
14
|
|
|
15
15
|
```python
|
|
16
16
|
with_argv(args: list[str] | None)
|
|
@@ -27,7 +27,7 @@ Args are provided without the script name, so we preserve sys.argv[0]
|
|
|
27
27
|
and replace the rest.
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
### `version` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/cli.py#
|
|
30
|
+
### `version` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/cli.py#L92" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
31
31
|
|
|
32
32
|
```python
|
|
33
33
|
version()
|
|
@@ -37,7 +37,7 @@ version()
|
|
|
37
37
|
Display version information and platform details.
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
### `dev` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/cli.py#
|
|
40
|
+
### `dev` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/cli.py#L130" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
41
41
|
|
|
42
42
|
```python
|
|
43
43
|
dev(server_spec: str | None = None) -> None
|
|
@@ -74,7 +74,7 @@ fastmcp run server.py -- --config config.json --debug
|
|
|
74
74
|
- `server_spec`: Python file, object specification (file\:obj), config file, URL, or None to auto-detect
|
|
75
75
|
|
|
76
76
|
|
|
77
|
-
### `inspect` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/cli.py#
|
|
77
|
+
### `inspect` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/cli.py#L541" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
78
78
|
|
|
79
79
|
```python
|
|
80
80
|
inspect(server_spec: str | None = None) -> None
|
|
@@ -105,7 +105,7 @@ fastmcp inspect # auto-detect fastmcp.json
|
|
|
105
105
|
- `server_spec`: Python file to inspect, optionally with \:object suffix, or fastmcp.json
|
|
106
106
|
|
|
107
107
|
|
|
108
|
-
### `prepare` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/cli.py#
|
|
108
|
+
### `prepare` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/cli.py#L782" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
109
109
|
|
|
110
110
|
```python
|
|
111
111
|
prepare(config_path: Annotated[str | None, cyclopts.Parameter(help='Path to fastmcp.json configuration file')] = None, output_dir: Annotated[str | None, cyclopts.Parameter(help='Directory to create the persistent environment in')] = None, skip_source: Annotated[bool, cyclopts.Parameter(help='Skip source preparation (e.g., git clone)')] = False) -> None
|
|
@@ -57,7 +57,7 @@ Install FastMCP server in Claude Code.
|
|
|
57
57
|
- True if installation was successful, False otherwise
|
|
58
58
|
|
|
59
59
|
|
|
60
|
-
### `claude_code_command` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/install/claude_code.py#
|
|
60
|
+
### `claude_code_command` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/install/claude_code.py#L153" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
61
61
|
|
|
62
62
|
```python
|
|
63
63
|
claude_code_command(server_spec: str) -> None
|
|
@@ -44,7 +44,7 @@ Install FastMCP server in Claude Desktop.
|
|
|
44
44
|
- True if installation was successful, False otherwise
|
|
45
45
|
|
|
46
46
|
|
|
47
|
-
### `claude_desktop_command` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/install/claude_desktop.py#
|
|
47
|
+
### `claude_desktop_command` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/install/claude_desktop.py#L125" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
48
48
|
|
|
49
49
|
```python
|
|
50
50
|
claude_desktop_command(server_spec: str) -> None
|
|
@@ -68,7 +68,7 @@ Install FastMCP server to workspace-specific Cursor configuration.
|
|
|
68
68
|
- True if installation was successful, False otherwise
|
|
69
69
|
|
|
70
70
|
|
|
71
|
-
### `install_cursor` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/install/cursor.py#
|
|
71
|
+
### `install_cursor` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/install/cursor.py#L149" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
72
72
|
|
|
73
73
|
```python
|
|
74
74
|
install_cursor(file: Path, server_object: str | None, name: str) -> bool
|
|
@@ -93,7 +93,7 @@ Install FastMCP server in Cursor.
|
|
|
93
93
|
- True if installation was successful, False otherwise
|
|
94
94
|
|
|
95
95
|
|
|
96
|
-
### `cursor_command` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/install/cursor.py#
|
|
96
|
+
### `cursor_command` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/install/cursor.py#L234" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
97
97
|
|
|
98
98
|
```python
|
|
99
99
|
cursor_command(server_spec: str) -> None
|