fastmcp 2.12.2__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.2 → fastmcp-2.12.3}/PKG-INFO +2 -2
- {fastmcp-2.12.2 → fastmcp-2.12.3}/README.md +1 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/changelog.mdx +15 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/docs.json +16 -6
- fastmcp-2.12.3/docs/integrations/gemini-cli.mdx +173 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/openapi.mdx +1 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/public/schemas/fastmcp.json/latest.json +2 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/public/schemas/fastmcp.json/v1.json +2 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-cli.mdx +5 -5
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-install-claude_code.mdx +1 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-install-claude_desktop.mdx +1 -1
- {fastmcp-2.12.2 → 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.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-install-mcp_json.mdx +1 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-run.mdx +6 -34
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-client.mdx +2 -2
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-prompts-prompt.mdx +5 -5
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-resources-resource.mdx +12 -12
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-resources-template.mdx +5 -5
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-oauth_proxy.mdx +10 -10
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-dependencies.mdx +4 -4
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-server.mdx +33 -33
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-tools-tool.mdx +20 -17
- {fastmcp-2.12.2 → 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.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-types.mdx +19 -13
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/servers/auth/oauth-proxy.mdx +64 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/servers/proxy.mdx +1 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/pyproject.toml +0 -2
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/cli/claude.py +1 -10
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/cli/cli.py +45 -25
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/cli/install/__init__.py +2 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/cli/install/claude_code.py +1 -10
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/cli/install/claude_desktop.py +1 -9
- {fastmcp-2.12.2 → 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.2 → fastmcp-2.12.3}/src/fastmcp/cli/install/mcp_json.py +1 -9
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/cli/run.py +0 -84
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/client/auth/oauth.py +1 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/client/client.py +6 -6
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/client/elicitation.py +6 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/client/transports.py +1 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/contrib/component_manager/component_service.py +1 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/contrib/mcp_mixin/README.md +1 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +41 -6
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/experimental/utilities/openapi/director.py +8 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/prompts/prompt.py +10 -8
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/resources/resource.py +14 -11
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/resources/template.py +12 -10
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/auth/auth.py +7 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/auth/oauth_proxy.py +51 -11
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/context.py +10 -10
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/dependencies.py +18 -5
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/server.py +7 -5
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/settings.py +15 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/tools/tool.py +101 -85
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/tools/tool_transform.py +1 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +4 -39
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +1 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/v1/schema.json +2 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/types.py +9 -5
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/cli/test_cli.py +27 -2
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/cli/test_config.py +5 -20
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/cli/test_cursor.py +4 -4
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/cli/test_install.py +62 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/cli/test_mcp_server_config_integration.py +7 -4
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/cli/test_project_prepare.py +3 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/cli/test_run.py +5 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/cli/test_run_config.py +1 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/client/test_elicitation.py +14 -2
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/client/test_streamable_http.py +2 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/conftest.py +7 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/contrib/test_bulk_tool_caller.py +126 -54
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/test_models.py +22 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/prompts/test_prompt_manager.py +4 -3
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/resources/test_resource_template.py +2 -2
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/auth/providers/test_workos.py +2 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/auth/test_jwt_provider.py +5 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/auth/test_oauth_proxy.py +169 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/middleware/test_error_handling.py +1 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/middleware/test_logging.py +3 -2
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/middleware/test_rate_limiting.py +1 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/openapi/conftest.py +1 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/proxy/test_proxy_client.py +3 -2
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/test_import_server.py +3 -2
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/test_server_interactions.py +68 -35
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/test_examples.py +9 -8
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/test_mcp_config.py +1 -1
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/tools/test_tool.py +232 -279
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/tools/test_tool_manager.py +31 -17
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/utilities/test_cli.py +9 -9
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/utilities/test_json_schema_type.py +17 -11
- {fastmcp-2.12.2 → fastmcp-2.12.3}/uv.lock +22 -22
- fastmcp-2.12.2/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-uv.mdx +0 -75
- fastmcp-2.12.2/tests/cli/test_run_with_uv.py +0 -249
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.ccignore +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.cursor/rules/core-mcp-objects.mdc +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.github/copilot-instructions.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.github/dependabot.yml +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.github/pull_request_template.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.github/release.yml +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.github/workflows/auto-close-duplicates.yml +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.github/workflows/marvin-dedupe-issues.yml +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.github/workflows/marvin-label-triage.yml +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.github/workflows/marvin.yml +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.github/workflows/publish.yml +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.github/workflows/run-static.yml +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.github/workflows/run-tests.yml +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.github/workflows/update-config-schema.yml +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.github/workflows/update-sdk-docs.yml +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.gitignore +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/.pre-commit-config.yaml +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/AGENTS.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/CLAUDE.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/CODE_OF_CONDUCT.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/LICENSE +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/README_OPENAPI.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/Windows_Notes.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/.ccignore +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/.cursor/rules/mintlify.mdc +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/assets/brand/blue-logo.png +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/assets/brand/card-background.png +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/assets/brand/favicon.svg +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/assets/brand/logo-wordmark-dark.svg +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/assets/brand/logo-wordmark.svg +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/assets/images/fastmcp_cloud/connect.png +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/assets/images/fastmcp_cloud/create_project.png +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/assets/images/fastmcp_cloud/deployment.png +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/assets/images/fastmcp_cloud/quickstart.png +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/assets/images/tutorial-rest-api-result.png +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/assets/schemas/mcp_server_config/latest.json +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/assets/schemas/mcp_server_config/v1.json +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/assets/updates/release-2-7.png +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/clients/auth/bearer.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/clients/auth/oauth.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/clients/client.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/clients/elicitation.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/clients/logging.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/clients/messages.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/clients/progress.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/clients/prompts.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/clients/resources.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/clients/roots.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/clients/sampling.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/clients/tools.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/clients/transports.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/community/README.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/community/showcase.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/css/banner.css +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/css/python-sdk.css +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/css/style.css +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/css/version-badge.css +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/deployment/fastmcp-cloud.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/deployment/running-server.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/deployment/self-hosted.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/deployment/server-configuration.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/development/contributing.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/development/releases.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/development/tests.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/getting-started/installation.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/getting-started/quickstart.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/getting-started/welcome.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/anthropic.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/asgi.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/authkit.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/azure.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/chatgpt.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/claude-code.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/claude-desktop.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/cursor-install-mcp.png +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/cursor.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/eunomia-authorization.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/fastapi.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/gemini.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/github.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/google.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/images/authkit/enable_dcr.png +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/images/permit/abac_condition_example.png +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/images/permit/abac_policy_example.png +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/images/permit/policy_mapping.png +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/images/permit/role_assignement.png +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/mcp-json-configuration.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/openai.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/permit.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/integrations/workos.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/patterns/cli.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/patterns/contrib.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/patterns/decorating-methods.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/patterns/tool-transformation.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-__init__.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-claude.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-install-__init__.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-cli-install-shared.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-__init__.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-auth-__init__.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-auth-bearer.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-auth-oauth.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-elicitation.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-logging.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-messages.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-oauth_callback.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-progress.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-roots.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-sampling.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-client-transports.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-exceptions.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-mcp_config.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-prompts-__init__.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-resources-__init__.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-resources-resource_manager.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-resources-types.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-__init__.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-__init__.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-auth.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-providers-__init__.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-providers-azure.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-providers-github.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-providers-google.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-providers-jwt.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-providers-workos.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-auth-redirect_validation.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-context.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-elicitation.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-http.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-low_level.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-middleware-__init__.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-middleware-error_handling.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-middleware-logging.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-middleware-rate_limiting.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-middleware-timing.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-openapi.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-server-proxy.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-settings.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-tools-__init__.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-tools-tool_manager.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-__init__.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-auth.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-cli.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-components.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-exceptions.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-http.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-inspect.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-json_schema.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-json_schema_type.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-logging.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-__init__.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-__init__.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-__init__.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-base.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-mcp_server_config.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-__init__.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-base.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-filesystem.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-openapi.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/python-sdk/fastmcp-utilities-tests.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/servers/auth/authentication.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/servers/auth/full-oauth-server.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/servers/auth/remote-oauth.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/servers/auth/token-verification.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/servers/composition.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/servers/context.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/servers/elicitation.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/servers/logging.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/servers/middleware.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/servers/progress.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/servers/prompts.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/servers/resources.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/servers/sampling.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/servers/server.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/servers/tools.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/snippets/local-focus.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/snippets/version-badge.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/snippets/youtube-embed.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/tutorials/create-mcp-server.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/tutorials/mcp.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/tutorials/rest-api.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/docs/updates.mdx +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/atproto_mcp/README.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/atproto_mcp/demo.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/atproto_mcp/fastmcp.json +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/atproto_mcp/pyproject.toml +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/__main__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_client.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_posts.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_profile.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_read.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_social.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/py.typed +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/server.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/settings.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/atproto_mcp/src/atproto_mcp/types.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/auth/azure_oauth/README.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/auth/azure_oauth/client.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/auth/azure_oauth/server.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/auth/github_oauth/README.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/auth/github_oauth/client.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/auth/github_oauth/server.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/auth/google_oauth/README.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/auth/google_oauth/client.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/auth/google_oauth/server.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/auth/workos_oauth/README.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/auth/workos_oauth/client.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/auth/workos_oauth/server.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/complex_inputs.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/config_server.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/desktop.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/echo.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/fastmcp_config/env_interpolation_example.json +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/fastmcp_config/fastmcp.json +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/fastmcp_config/full_example.fastmcp.json +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/fastmcp_config/server.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/fastmcp_config/simple.fastmcp.json +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/fastmcp_config_demo/README.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/fastmcp_config_demo/fastmcp.json +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/fastmcp_config_demo/server.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/get_file.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/in_memory_proxy_example.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/memory.fastmcp.json +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/memory.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/mount_example.fastmcp.json +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/mount_example.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/sampling.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/sampling_fallback.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/screenshot.fastmcp.json +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/screenshot.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/serializer.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/simple_echo.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/smart_home/README.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/smart_home/hub.fastmcp.json +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/smart_home/lights.fastmcp.json +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/smart_home/pyproject.toml +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/smart_home/src/smart_home/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/smart_home/src/smart_home/__main__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/smart_home/src/smart_home/hub.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/smart_home/src/smart_home/lights/server.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/smart_home/src/smart_home/py.typed +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/smart_home/src/smart_home/settings.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/smart_home/uv.lock +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/tags_example.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/examples/text_me.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/justfile +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/scripts/auto_close_duplicates.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/cli/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/cli/install/shared.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/client/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/client/auth/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/client/auth/bearer.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/client/logging.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/client/messages.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/client/oauth_callback.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/client/progress.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/client/roots.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/client/sampling.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/contrib/README.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/contrib/component_manager/README.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/contrib/component_manager/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/contrib/component_manager/example.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/exceptions.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/experimental/sampling/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/experimental/sampling/handlers/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/experimental/sampling/handlers/base.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/experimental/sampling/handlers/openai.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/experimental/server/openapi/README.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/experimental/server/openapi/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/experimental/server/openapi/components.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/experimental/server/openapi/routing.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/experimental/server/openapi/server.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/experimental/utilities/openapi/README.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/experimental/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/experimental/utilities/openapi/formatters.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/experimental/utilities/openapi/json_schema_converter.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/experimental/utilities/openapi/models.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/experimental/utilities/openapi/parser.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/experimental/utilities/openapi/schemas.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/mcp_config.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/prompts/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/prompts/prompt_manager.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/py.typed +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/resources/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/resources/resource_manager.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/resources/types.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/auth/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/auth/providers/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/auth/providers/azure.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/auth/providers/bearer.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/auth/providers/github.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/auth/providers/google.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/auth/providers/in_memory.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/auth/providers/jwt.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/auth/providers/workos.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/auth/redirect_validation.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/elicitation.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/http.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/low_level.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/middleware/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/middleware/error_handling.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/middleware/logging.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/middleware/middleware.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/middleware/rate_limiting.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/middleware/timing.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/openapi.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/proxy.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/server/sampling/handler.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/tools/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/tools/tool_manager.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/auth.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/cli.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/components.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/exceptions.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/http.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/inspect.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/json_schema.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/json_schema_type.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/logging.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_config.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/openapi.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/src/fastmcp/utilities/tests.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/cli/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/cli/test_mcp_server_config_schema.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/cli/test_server_args.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/cli/test_shared.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/cli/test_with_argv.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/client/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/client/auth/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/client/auth/test_oauth_client.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/client/auth/test_oauth_token_expiry.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/client/test_client.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/client/test_logs.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/client/test_notifications.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/client/test_openapi_experimental.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/client/test_openapi_legacy.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/client/test_progress.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/client/test_roots.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/client/test_sampling.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/client/test_sse.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/client/test_stdio.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/client/transports/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/client/transports/test_uv_transport.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/contrib/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/contrib/test_component_manager.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/contrib/test_mcp_mixin.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/deprecated/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/deprecated/test_bearer_auth_provider.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/deprecated/test_dependencies.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/deprecated/test_deprecated.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/deprecated/test_mount_import_arg_order.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/deprecated/test_mount_separators.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/deprecated/test_output_schema_false.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/deprecated/test_proxy_client.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/deprecated/test_resource_prefixes.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/deprecated/test_route_type_ignore.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/deprecated/test_settings.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/README.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/README.md +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/conftest.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/openapi/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/openapi/test_comprehensive.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/openapi/test_deepobject_style.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/openapi/test_end_to_end_compatibility.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/openapi/test_openapi_features.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/openapi/test_openapi_performance.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/openapi/test_parameter_collisions.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/openapi/test_performance_comparison.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/server/openapi/test_server.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/conftest.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/test_allof_requestbody.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/test_director.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/test_legacy_compatibility.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/test_nullable_fields.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/test_parser.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/test_schemas.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/openapi_parser/utilities/openapi/test_transitive_references.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/experimental/sampling/test_openai_handler.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/integration_tests/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/integration_tests/auth/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/integration_tests/auth/test_github_provider_integration.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/integration_tests/conftest.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/integration_tests/test_github_mcp_remote.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/prompts/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/prompts/test_prompt.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/resources/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/resources/test_file_resources.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/resources/test_function_resources.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/resources/test_resource_manager.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/resources/test_resource_template_meta.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/resources/test_resources.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/auth/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/auth/providers/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/auth/providers/test_azure.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/auth/providers/test_github.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/auth/providers/test_google.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/auth/test_auth_provider.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/auth/test_oauth_proxy_redirect_validation.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/auth/test_redirect_validation.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/auth/test_remote_auth_provider.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/auth/test_static_token_verifier.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/http/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/http/test_bearer_auth_backend.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/http/test_custom_routes.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/http/test_http_auth_middleware.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/http/test_http_dependencies.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/http/test_http_middleware.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/middleware/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/middleware/test_middleware.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/middleware/test_timing.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/openapi/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/openapi/test_advanced_behavior.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/openapi/test_basic_functionality.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/openapi/test_configuration.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/openapi/test_deepobject_style.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/openapi/test_description_propagation.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/openapi/test_explode_integration.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/openapi/test_openapi_compatibility.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/openapi/test_openapi_path_parameters.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/openapi/test_optional_parameters.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/openapi/test_parameter_collisions.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/openapi/test_route_map_fn.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/proxy/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/proxy/test_proxy_server.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/proxy/test_stateful_proxy_client.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/test_app_state.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/test_auth_integration.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/test_context.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/test_experimental_openapi_feature_flag.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/test_file_server.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/test_logging.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/test_mount.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/test_resource_prefix_formats.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/test_run_server.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/test_server.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/test_streamable_http_no_redirect.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/test_tool_annotations.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/test_tool_exclude_args.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/server/test_tool_transformation.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/tools/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/tools/test_tool_future_annotations.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/tools/test_tool_transform.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/utilities/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/utilities/openapi/conftest.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/utilities/openapi/test_nullable_fields.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/utilities/openapi/test_openapi.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/utilities/openapi/test_openapi_advanced.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/utilities/openapi/test_openapi_fastapi.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/utilities/openapi/test_openapi_output_schemas.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/utilities/test_components.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/utilities/test_inspect.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/utilities/test_json_schema.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/utilities/test_logging.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/utilities/test_tests.py +0 -0
- {fastmcp-2.12.2 → fastmcp-2.12.3}/tests/utilities/test_typeadapter.py +0 -0
- {fastmcp-2.12.2 → 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,7 +4,21 @@ 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
|
+
|
|
9
|
+
**[v2.12.2: Perchance to Stream](https://github.com/jlowin/fastmcp/releases/tag/v2.12.2)**
|
|
10
|
+
|
|
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
|
+
|
|
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)
|
|
16
|
+
|
|
17
|
+
**Full Changelog**: [v2.12.1...v2.12.2](https://github.com/jlowin/fastmcp/compare/v2.12.1...v2.12.2)
|
|
18
|
+
|
|
19
|
+
</Update>
|
|
20
|
+
|
|
21
|
+
<Update label="v2.12.1" description="2025-09-03">
|
|
8
22
|
|
|
9
23
|
**[v2.12.1: OAuth to Joy](https://github.com/jlowin/fastmcp/releases/tag/v2.12.1)**
|
|
10
24
|
|
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
"default": "system",
|
|
5
5
|
"strict": false
|
|
6
6
|
},
|
|
7
|
-
"interaction": {
|
|
8
|
-
"drilldown": false
|
|
9
|
-
},
|
|
10
7
|
"background": {
|
|
11
8
|
"color": {
|
|
12
9
|
"dark": "#222831",
|
|
@@ -39,6 +36,9 @@
|
|
|
39
36
|
"measurementId": "G-64R5W1TJXG"
|
|
40
37
|
}
|
|
41
38
|
},
|
|
39
|
+
"interaction": {
|
|
40
|
+
"drilldown": false
|
|
41
|
+
},
|
|
42
42
|
"logo": {
|
|
43
43
|
"dark": "/assets/brand/logo-wordmark-dark.svg",
|
|
44
44
|
"light": "/assets/brand/logo-wordmark.svg"
|
|
@@ -118,7 +118,10 @@
|
|
|
118
118
|
{
|
|
119
119
|
"group": "Essentials",
|
|
120
120
|
"icon": "cube",
|
|
121
|
-
"pages": [
|
|
121
|
+
"pages": [
|
|
122
|
+
"clients/client",
|
|
123
|
+
"clients/transports"
|
|
124
|
+
]
|
|
122
125
|
},
|
|
123
126
|
{
|
|
124
127
|
"group": "Core Operations",
|
|
@@ -144,7 +147,10 @@
|
|
|
144
147
|
{
|
|
145
148
|
"group": "Authentication",
|
|
146
149
|
"icon": "user-shield",
|
|
147
|
-
"pages": [
|
|
150
|
+
"pages": [
|
|
151
|
+
"clients/auth/oauth",
|
|
152
|
+
"clients/auth/bearer"
|
|
153
|
+
]
|
|
148
154
|
}
|
|
149
155
|
]
|
|
150
156
|
},
|
|
@@ -222,7 +228,10 @@
|
|
|
222
228
|
"tab": "Documentation"
|
|
223
229
|
},
|
|
224
230
|
{
|
|
225
|
-
"pages": [
|
|
231
|
+
"pages": [
|
|
232
|
+
"updates",
|
|
233
|
+
"changelog"
|
|
234
|
+
],
|
|
226
235
|
"tab": "What's New"
|
|
227
236
|
},
|
|
228
237
|
{
|
|
@@ -247,6 +256,7 @@
|
|
|
247
256
|
"python-sdk/fastmcp-cli-install-claude_code",
|
|
248
257
|
"python-sdk/fastmcp-cli-install-claude_desktop",
|
|
249
258
|
"python-sdk/fastmcp-cli-install-cursor",
|
|
259
|
+
"python-sdk/fastmcp-cli-install-gemini_cli",
|
|
250
260
|
"python-sdk/fastmcp-cli-install-mcp_json",
|
|
251
261
|
"python-sdk/fastmcp-cli-install-shared"
|
|
252
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
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: gemini_cli
|
|
3
|
+
sidebarTitle: gemini_cli
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `fastmcp.cli.install.gemini_cli`
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Gemini CLI integration for FastMCP install using Cyclopts.
|
|
10
|
+
|
|
11
|
+
## Functions
|
|
12
|
+
|
|
13
|
+
### `find_gemini_command` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/install/gemini_cli.py#L20" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
find_gemini_command() -> str | None
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
Find the Gemini CLI command.
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### `check_gemini_cli_available` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/install/gemini_cli.py#L64" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
24
|
+
|
|
25
|
+
```python
|
|
26
|
+
check_gemini_cli_available() -> bool
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
Check if Gemini CLI is available.
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### `install_gemini_cli` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/install/gemini_cli.py#L69" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
34
|
+
|
|
35
|
+
```python
|
|
36
|
+
install_gemini_cli(file: Path, server_object: str | None, name: str) -> bool
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
Install FastMCP server in Gemini CLI.
|
|
41
|
+
|
|
42
|
+
**Args:**
|
|
43
|
+
- `file`: Path to the server file
|
|
44
|
+
- `server_object`: Optional server object name (for \:object suffix)
|
|
45
|
+
- `name`: Name for the server in Gemini CLI
|
|
46
|
+
- `with_editable`: Optional list of directories to install in editable mode
|
|
47
|
+
- `with_packages`: Optional list of additional packages to install
|
|
48
|
+
- `env_vars`: Optional dictionary of environment variables
|
|
49
|
+
- `python_version`: Optional Python version to use
|
|
50
|
+
- `with_requirements`: Optional requirements file to install from
|
|
51
|
+
- `project`: Optional project directory to run within
|
|
52
|
+
|
|
53
|
+
**Returns:**
|
|
54
|
+
- True if installation was successful, False otherwise
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
### `gemini_cli_command` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/install/gemini_cli.py#L151" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
gemini_cli_command(server_spec: str) -> None
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
Install an MCP server in Gemini CLI.
|
|
65
|
+
|
|
66
|
+
**Args:**
|
|
67
|
+
- `server_spec`: Python file to install, optionally with \:object suffix
|
|
68
|
+
|
|
@@ -35,7 +35,7 @@ Generate MCP configuration JSON for manual installation.
|
|
|
35
35
|
- True if generation was successful, False otherwise
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
### `mcp_json_command` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/install/mcp_json.py#
|
|
38
|
+
### `mcp_json_command` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/install/mcp_json.py#L98" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
39
39
|
|
|
40
40
|
```python
|
|
41
41
|
mcp_json_command(server_spec: str) -> None
|
|
@@ -10,7 +10,7 @@ FastMCP run command implementation with enhanced type hints.
|
|
|
10
10
|
|
|
11
11
|
## Functions
|
|
12
12
|
|
|
13
|
-
### `is_url` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#
|
|
13
|
+
### `is_url` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#L25" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
14
14
|
|
|
15
15
|
```python
|
|
16
16
|
is_url(path: str) -> bool
|
|
@@ -20,35 +20,7 @@ is_url(path: str) -> bool
|
|
|
20
20
|
Check if a string is a URL.
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
### `
|
|
24
|
-
|
|
25
|
-
```python
|
|
26
|
-
run_with_uv(server_spec: str, python_version: str | None = None, with_packages: list[str] | None = None, with_requirements: Path | None = None, project: Path | None = None, transport: TransportType | None = None, host: str | None = None, port: int | None = None, path: str | None = None, log_level: LogLevelType | None = None, show_banner: bool = True, editable: str | list[str] | None = None) -> None
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
Run a MCP server using uv run subprocess.
|
|
31
|
-
|
|
32
|
-
This function is called when we need to set up a Python environment with specific
|
|
33
|
-
dependencies before running the server. The config parsing and merging should already
|
|
34
|
-
be done by the caller.
|
|
35
|
-
|
|
36
|
-
**Args:**
|
|
37
|
-
- `server_spec`: Python file, object specification (file\:obj), config file, or URL
|
|
38
|
-
- `python_version`: Python version to use (e.g. "3.10")
|
|
39
|
-
- `with_packages`: Additional packages to install
|
|
40
|
-
- `with_requirements`: Requirements file to use
|
|
41
|
-
- `project`: Run the command within the given project directory
|
|
42
|
-
- `transport`: Transport protocol to use
|
|
43
|
-
- `host`: Host to bind to when using http transport
|
|
44
|
-
- `port`: Port to bind to when using http transport
|
|
45
|
-
- `path`: Path to bind to when using http transport
|
|
46
|
-
- `log_level`: Log level
|
|
47
|
-
- `show_banner`: Whether to show the server banner
|
|
48
|
-
- `editable`: Editable package paths
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
### `create_client_server` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#L115" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
23
|
+
### `create_client_server` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#L31" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
52
24
|
|
|
53
25
|
```python
|
|
54
26
|
create_client_server(url: str) -> Any
|
|
@@ -64,7 +36,7 @@ Create a FastMCP server from a client URL.
|
|
|
64
36
|
- A FastMCP server instance
|
|
65
37
|
|
|
66
38
|
|
|
67
|
-
### `create_mcp_config_server` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#
|
|
39
|
+
### `create_mcp_config_server` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#L51" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
68
40
|
|
|
69
41
|
```python
|
|
70
42
|
create_mcp_config_server(mcp_config_path: Path) -> FastMCP[None]
|
|
@@ -74,7 +46,7 @@ create_mcp_config_server(mcp_config_path: Path) -> FastMCP[None]
|
|
|
74
46
|
Create a FastMCP server from a MCPConfig.
|
|
75
47
|
|
|
76
48
|
|
|
77
|
-
### `load_mcp_server_config` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#
|
|
49
|
+
### `load_mcp_server_config` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#L62" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
78
50
|
|
|
79
51
|
```python
|
|
80
52
|
load_mcp_server_config(config_path: Path) -> MCPServerConfig
|
|
@@ -90,7 +62,7 @@ Load a FastMCP configuration from a fastmcp.json file.
|
|
|
90
62
|
- MCPServerConfig object
|
|
91
63
|
|
|
92
64
|
|
|
93
|
-
### `run_command` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#
|
|
65
|
+
### `run_command` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#L79" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
94
66
|
|
|
95
67
|
```python
|
|
96
68
|
run_command(server_spec: str, transport: TransportType | None = None, host: str | None = None, port: int | None = None, path: str | None = None, log_level: LogLevelType | None = None, server_args: list[str] | None = None, show_banner: bool = True, use_direct_import: bool = False, skip_source: bool = False) -> None
|
|
@@ -112,7 +84,7 @@ Run a MCP server or connect to a remote one.
|
|
|
112
84
|
- `skip_source`: Whether to skip source preparation step
|
|
113
85
|
|
|
114
86
|
|
|
115
|
-
### `run_v1_server` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#
|
|
87
|
+
### `run_v1_server` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/run.py#L200" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
116
88
|
|
|
117
89
|
```python
|
|
118
90
|
run_v1_server(server: FastMCP1x, host: str | None = None, port: int | None = None, transport: TransportType | None = None) -> None
|
|
@@ -374,7 +374,7 @@ containing the prompt messages and any additional metadata.
|
|
|
374
374
|
#### `complete_mcp` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/client.py#L744" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
375
375
|
|
|
376
376
|
```python
|
|
377
|
-
complete_mcp(self, ref: mcp.types.
|
|
377
|
+
complete_mcp(self, ref: mcp.types.ResourceTemplateReference | mcp.types.PromptReference, argument: dict[str, str]) -> mcp.types.CompleteResult
|
|
378
378
|
```
|
|
379
379
|
|
|
380
380
|
Send a completion request and return the complete MCP protocol result.
|
|
@@ -394,7 +394,7 @@ containing the completion and any additional metadata.
|
|
|
394
394
|
#### `complete` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/client/client.py#L767" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
395
395
|
|
|
396
396
|
```python
|
|
397
|
-
complete(self, ref: mcp.types.
|
|
397
|
+
complete(self, ref: mcp.types.ResourceTemplateReference | mcp.types.PromptReference, argument: dict[str, str]) -> mcp.types.Completion
|
|
398
398
|
```
|
|
399
399
|
|
|
400
400
|
Send a completion request to the server.
|
|
@@ -57,7 +57,7 @@ to_mcp_prompt(self, **overrides: Any) -> MCPPrompt
|
|
|
57
57
|
Convert the prompt to an MCP prompt.
|
|
58
58
|
|
|
59
59
|
|
|
60
|
-
#### `from_function` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/prompts/prompt.py#
|
|
60
|
+
#### `from_function` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/prompts/prompt.py#L115" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
61
61
|
|
|
62
62
|
```python
|
|
63
63
|
from_function(fn: Callable[..., PromptResult | Awaitable[PromptResult]], name: str | None = None, title: str | None = None, description: str | None = None, tags: set[str] | None = None, enabled: bool | None = None, meta: dict[str, Any] | None = None) -> FunctionPrompt
|
|
@@ -72,7 +72,7 @@ The function can return:
|
|
|
72
72
|
- A sequence of any of the above
|
|
73
73
|
|
|
74
74
|
|
|
75
|
-
#### `render` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/prompts/prompt.py#
|
|
75
|
+
#### `render` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/prompts/prompt.py#L143" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
76
76
|
|
|
77
77
|
```python
|
|
78
78
|
render(self, arguments: dict[str, Any] | None = None) -> list[PromptMessage]
|
|
@@ -81,7 +81,7 @@ render(self, arguments: dict[str, Any] | None = None) -> list[PromptMessage]
|
|
|
81
81
|
Render the prompt with arguments.
|
|
82
82
|
|
|
83
83
|
|
|
84
|
-
### `FunctionPrompt` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/prompts/prompt.py#
|
|
84
|
+
### `FunctionPrompt` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/prompts/prompt.py#L151" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
85
85
|
|
|
86
86
|
|
|
87
87
|
A prompt that is a function.
|
|
@@ -89,7 +89,7 @@ A prompt that is a function.
|
|
|
89
89
|
|
|
90
90
|
**Methods:**
|
|
91
91
|
|
|
92
|
-
#### `from_function` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/prompts/prompt.py#
|
|
92
|
+
#### `from_function` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/prompts/prompt.py#L157" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
93
93
|
|
|
94
94
|
```python
|
|
95
95
|
from_function(cls, fn: Callable[..., PromptResult | Awaitable[PromptResult]], name: str | None = None, title: str | None = None, description: str | None = None, tags: set[str] | None = None, enabled: bool | None = None, meta: dict[str, Any] | None = None) -> FunctionPrompt
|
|
@@ -104,7 +104,7 @@ The function can return:
|
|
|
104
104
|
- A sequence of any of the above
|
|
105
105
|
|
|
106
106
|
|
|
107
|
-
#### `render` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/prompts/prompt.py#
|
|
107
|
+
#### `render` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/prompts/prompt.py#L317" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
108
108
|
|
|
109
109
|
```python
|
|
110
110
|
render(self, arguments: dict[str, Any] | None = None) -> list[PromptMessage]
|