fastmcp 2.10.4__tar.gz → 2.10.6__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.10.4 → fastmcp-2.10.6}/.github/labeler.yml +4 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/.github/workflows/run-static.yml +2 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/.github/workflows/run-tests.yml +25 -2
- {fastmcp-2.10.4 → fastmcp-2.10.6}/.gitignore +3 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/.pre-commit-config.yaml +6 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/PKG-INFO +2 -2
- {fastmcp-2.10.4 → fastmcp-2.10.6}/README.md +1 -1
- fastmcp-2.10.6/README_OPENAPI.md +246 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/changelog.mdx +139 -0
- fastmcp-2.10.6/docs/clients/transports.mdx +310 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/docs.json +56 -19
- fastmcp-2.10.6/docs/integrations/eunomia-authorization.mdx +134 -0
- fastmcp-2.10.6/docs/integrations/fastapi.mdx +229 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/integrations/mcp-json-configuration.mdx +59 -49
- {fastmcp-2.10.4/docs/servers → fastmcp-2.10.6/docs/integrations}/openapi.mdx +88 -190
- fastmcp-2.10.6/docs/integrations/starlette.mdx +213 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/patterns/cli.mdx +21 -19
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-cli-claude.mdx +2 -2
- fastmcp-2.10.6/docs/python-sdk/fastmcp-cli-cli.mdx +79 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-cli-install-__init__.mdx +9 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-cli-install-claude_code.mdx +68 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-cli-install-claude_desktop.mdx +55 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-cli-install-cursor.mdx +78 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-cli-install-mcp_config.mdx +46 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-cli-install-shared.mdx +31 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-cli-run.mdx +10 -8
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-client-auth-bearer.mdx +2 -2
- fastmcp-2.10.6/docs/python-sdk/fastmcp-client-auth-oauth.mdx +152 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-client-client.mdx +499 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-client-elicitation.mdx +18 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-client-logging.mdx +20 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-client-messages.mdx +107 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-client-oauth_callback.mdx +5 -5
- fastmcp-2.10.6/docs/python-sdk/fastmcp-client-progress.mdx +25 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-client-roots.mdx +2 -2
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-client-sampling.mdx +1 -1
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-client-transports.mdx +110 -14
- fastmcp-2.10.6/docs/python-sdk/fastmcp-exceptions.mdx +65 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-mcp_config.mdx +150 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-prompts-prompt.mdx +114 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +89 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-resources-resource.mdx +120 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-resources-resource_manager.mdx +77 -7
- fastmcp-2.10.6/docs/python-sdk/fastmcp-resources-template.mdx +143 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-resources-types.mdx +134 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-server-auth-auth.mdx +30 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +152 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-server-auth-providers-bearer_env.mdx +2 -2
- fastmcp-2.10.6/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +96 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-server-context.mdx +293 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-server-dependencies.mdx +3 -3
- fastmcp-2.10.6/docs/python-sdk/fastmcp-server-elicitation.mdx +54 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-server-http.mdx +8 -8
- fastmcp-2.10.6/docs/python-sdk/fastmcp-server-low_level.mdx +18 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-server-middleware-error_handling.mdx +23 -3
- fastmcp-2.10.6/docs/python-sdk/fastmcp-server-middleware-logging.mdx +51 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +108 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-server-middleware-rate_limiting.mdx +97 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-server-middleware-timing.mdx +105 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-server-openapi.mdx +91 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-server-proxy.mdx +299 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-server-server.mdx +225 -37
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-settings.mdx +13 -7
- fastmcp-2.10.6/docs/python-sdk/fastmcp-tools-tool.mdx +114 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-tools-tool_manager.mdx +104 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-tools-tool_transform.mdx +241 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-utilities-cache.mdx +30 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-utilities-cli.mdx +25 -0
- fastmcp-2.10.6/docs/python-sdk/fastmcp-utilities-components.mdx +99 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-utilities-exceptions.mdx +2 -2
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-utilities-http.mdx +1 -1
- fastmcp-2.10.6/docs/python-sdk/fastmcp-utilities-inspect.mdx +94 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-utilities-json_schema.mdx +1 -1
- fastmcp-2.10.6/docs/python-sdk/fastmcp-utilities-json_schema_type.mdx +110 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-utilities-logging.mdx +2 -2
- fastmcp-2.10.6/docs/python-sdk/fastmcp-utilities-openapi.mdx +180 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-utilities-tests.mdx +12 -2
- fastmcp-2.10.6/docs/python-sdk/fastmcp-utilities-types.mdx +137 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/servers/composition.mdx +1 -1
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/servers/middleware.mdx +7 -7
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/servers/proxy.mdx +29 -10
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/servers/sampling.mdx +1 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/servers/server.mdx +25 -3
- {fastmcp-2.10.4 → fastmcp-2.10.6}/pyproject.toml +9 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/__init__.py +7 -2
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/cli/install/__init__.py +2 -2
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/cli/install/claude_code.py +35 -6
- fastmcp-2.10.4/src/fastmcp/cli/install/mcp_config.py → fastmcp-2.10.6/src/fastmcp/cli/install/mcp_json.py +10 -7
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/prompts/prompt_manager.py +1 -1
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/resources/resource_manager.py +2 -2
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/context.py +3 -0
- fastmcp-2.10.6/src/fastmcp/server/middleware/__init__.py +11 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/middleware/middleware.py +8 -34
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/openapi.py +140 -53
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/proxy.py +51 -4
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/server.py +26 -8
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/settings.py +10 -12
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/tools/tool.py +5 -3
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/tools/tool_manager.py +1 -1
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/tools/tool_transform.py +10 -3
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/utilities/cli.py +6 -6
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/utilities/components.py +43 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/utilities/openapi.py +201 -20
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/cli/test_install.py +2 -2
- fastmcp-2.10.6/tests/conftest.py +9 -0
- fastmcp-2.10.6/tests/integration_tests/conftest.py +28 -0
- fastmcp-2.10.6/tests/integration_tests/test_github_mcp_remote.py +117 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/middleware/test_middleware.py +146 -0
- fastmcp-2.10.6/tests/server/openapi/test_deepobject_style.py +281 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/openapi/test_openapi_path_parameters.py +148 -0
- fastmcp-2.10.6/tests/server/openapi/test_optional_parameters.py +100 -0
- fastmcp-2.10.6/tests/server/openapi/test_parameter_collisions.py +258 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/proxy/test_proxy_client.py +1 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/proxy/test_proxy_server.py +158 -0
- fastmcp-2.10.6/tests/server/proxy/test_stateful_proxy_client.py +120 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/test_mount.py +6 -3
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/tools/test_tool.py +82 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/tools/test_tool_transform.py +85 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/utilities/openapi/test_openapi_output_schemas.py +40 -0
- fastmcp-2.10.4/docs/clients/transports.mdx +0 -449
- fastmcp-2.10.4/docs/deployment/asgi.mdx +0 -220
- fastmcp-2.10.4/docs/integrations/eunomia-authorization.mdx +0 -108
- fastmcp-2.10.4/docs/python-sdk/fastmcp-cli-cli.mdx +0 -87
- fastmcp-2.10.4/docs/python-sdk/fastmcp-client-auth-oauth.mdx +0 -102
- fastmcp-2.10.4/docs/python-sdk/fastmcp-client-client.mdx +0 -94
- fastmcp-2.10.4/docs/python-sdk/fastmcp-client-logging.mdx +0 -14
- fastmcp-2.10.4/docs/python-sdk/fastmcp-client-progress.mdx +0 -8
- fastmcp-2.10.4/docs/python-sdk/fastmcp-exceptions.mdx +0 -65
- fastmcp-2.10.4/docs/python-sdk/fastmcp-prompts-prompt.mdx +0 -84
- fastmcp-2.10.4/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +0 -43
- fastmcp-2.10.4/docs/python-sdk/fastmcp-resources-resource.mdx +0 -90
- fastmcp-2.10.4/docs/python-sdk/fastmcp-resources-template.mdx +0 -104
- fastmcp-2.10.4/docs/python-sdk/fastmcp-resources-types.mdx +0 -83
- fastmcp-2.10.4/docs/python-sdk/fastmcp-server-auth-auth.mdx +0 -10
- fastmcp-2.10.4/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +0 -69
- fastmcp-2.10.4/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +0 -15
- fastmcp-2.10.4/docs/python-sdk/fastmcp-server-context.mdx +0 -118
- fastmcp-2.10.4/docs/python-sdk/fastmcp-server-middleware-logging.mdx +0 -29
- fastmcp-2.10.4/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +0 -56
- fastmcp-2.10.4/docs/python-sdk/fastmcp-server-middleware-rate_limiting.mdx +0 -47
- fastmcp-2.10.4/docs/python-sdk/fastmcp-server-middleware-timing.mdx +0 -29
- fastmcp-2.10.4/docs/python-sdk/fastmcp-server-openapi.mdx +0 -58
- fastmcp-2.10.4/docs/python-sdk/fastmcp-server-proxy.mdx +0 -101
- fastmcp-2.10.4/docs/python-sdk/fastmcp-tools-tool.mdx +0 -68
- fastmcp-2.10.4/docs/python-sdk/fastmcp-tools-tool_manager.mdx +0 -58
- fastmcp-2.10.4/docs/python-sdk/fastmcp-tools-tool_transform.mdx +0 -139
- fastmcp-2.10.4/docs/python-sdk/fastmcp-utilities-cache.mdx +0 -30
- fastmcp-2.10.4/docs/python-sdk/fastmcp-utilities-components.mdx +0 -52
- fastmcp-2.10.4/docs/python-sdk/fastmcp-utilities-inspect.mdx +0 -41
- fastmcp-2.10.4/docs/python-sdk/fastmcp-utilities-openapi.mdx +0 -118
- fastmcp-2.10.4/docs/python-sdk/fastmcp-utilities-types.mdx +0 -112
- fastmcp-2.10.4/src/fastmcp/server/middleware/__init__.py +0 -19
- fastmcp-2.10.4/tests/test_servers/fastmcp_server.py +0 -58
- fastmcp-2.10.4/tests/test_servers/sse.py +0 -6
- fastmcp-2.10.4/tests/test_servers/stdio.py +0 -6
- {fastmcp-2.10.4 → fastmcp-2.10.6}/.ccignore +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/.cursor/rules/core-mcp-objects.mdc +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/.github/dependabot.yml +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/.github/release.yml +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/.github/workflows/labeler.yml +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/.github/workflows/publish.yml +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/AGENTS.md +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/CLAUDE.md +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/LICENSE +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/Windows_Notes.md +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/.cursor/rules/mintlify.mdc +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/assets/favicon.svg +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/assets/images/tutorial-rest-api-result.png +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/assets/updates/release-2-7.png +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/clients/auth/bearer.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/clients/auth/oauth.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/clients/client.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/clients/elicitation.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/clients/logging.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/clients/messages.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/clients/progress.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/clients/prompts.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/clients/resources.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/clients/roots.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/clients/sampling.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/clients/tools.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/community/README.md +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/community/showcase.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/css/banner.css +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/css/python-sdk.css +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/css/style.css +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/css/version-badge.css +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/deployment/running-server.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/getting-started/installation.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/getting-started/quickstart.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/getting-started/welcome.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/integrations/anthropic.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/integrations/chatgpt.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/integrations/claude-code.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/integrations/claude-desktop.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/integrations/cursor-install-mcp.png +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/integrations/cursor.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/integrations/gemini.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/integrations/openai.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/patterns/contrib.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/patterns/decorating-methods.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/patterns/http-requests.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/patterns/testing.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/patterns/tool-transformation.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-cli-__init__.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-client-__init__.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-client-auth-__init__.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-prompts-__init__.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-resources-__init__.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-server-__init__.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-server-auth-__init__.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-server-auth-providers-__init__.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-server-middleware-__init__.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-server-middleware.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-tools-__init__.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-utilities-__init__.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/servers/auth/bearer.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/servers/context.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/servers/elicitation.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/servers/logging.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/servers/progress.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/servers/prompts.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/servers/resources.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/servers/tools.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/snippets/local-focus.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/snippets/version-badge.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/snippets/youtube-embed.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/tutorials/create-mcp-server.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/tutorials/mcp.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/tutorials/rest-api.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/docs/updates.mdx +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/atproto_mcp/README.md +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/atproto_mcp/demo.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/atproto_mcp/pyproject.toml +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/__main__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/_atproto/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/_atproto/_client.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/_atproto/_posts.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/_atproto/_profile.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/_atproto/_read.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/_atproto/_social.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/py.typed +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/server.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/settings.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/types.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/complex_inputs.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/config_server.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/desktop.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/echo.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/get_file.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/in_memory_proxy_example.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/memory.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/mount_example.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/sampling.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/screenshot.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/serializer.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/simple_echo.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/smart_home/README.md +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/smart_home/pyproject.toml +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/smart_home/src/smart_home/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/smart_home/src/smart_home/__main__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/smart_home/src/smart_home/hub.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/smart_home/src/smart_home/lights/server.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/smart_home/src/smart_home/py.typed +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/smart_home/src/smart_home/settings.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/smart_home/uv.lock +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/tags_example.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/examples/text_me.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/justfile +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/cli/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/cli/claude.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/cli/cli.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/cli/install/claude_desktop.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/cli/install/cursor.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/cli/install/shared.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/cli/run.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/client/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/client/auth/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/client/auth/bearer.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/client/auth/oauth.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/client/client.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/client/elicitation.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/client/logging.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/client/messages.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/client/oauth_callback.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/client/progress.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/client/roots.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/client/sampling.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/client/transports.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/contrib/README.md +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/contrib/component_manager/README.md +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/contrib/component_manager/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/contrib/component_manager/component_service.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/contrib/component_manager/example.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/exceptions.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/mcp_config.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/prompts/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/prompts/prompt.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/py.typed +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/resources/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/resources/resource.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/resources/template.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/resources/types.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/auth/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/auth/auth.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/auth/providers/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/auth/providers/bearer.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/auth/providers/bearer_env.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/auth/providers/in_memory.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/dependencies.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/elicitation.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/http.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/low_level.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/middleware/error_handling.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/middleware/logging.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/middleware/rate_limiting.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/server/middleware/timing.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/tools/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/utilities/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/utilities/cache.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/utilities/exceptions.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/utilities/http.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/utilities/inspect.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/utilities/json_schema.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/utilities/json_schema_type.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/utilities/logging.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/utilities/tests.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/src/fastmcp/utilities/types.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/auth/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/auth/providers/test_bearer.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/auth/providers/test_bearer_env.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/auth/providers/test_token_verifier.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/auth/test_oauth_client.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/cli/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/cli/test_cli.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/cli/test_cursor.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/cli/test_run.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/cli/test_shared.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/client/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/client/test_client.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/client/test_elicitation.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/client/test_logs.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/client/test_notifications.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/client/test_openapi.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/client/test_progress.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/client/test_roots.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/client/test_sampling.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/client/test_sse.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/client/test_stdio.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/client/test_streamable_http.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/contrib/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/contrib/test_bulk_tool_caller.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/contrib/test_component_manager.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/contrib/test_mcp_mixin.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/deprecated/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/deprecated/test_deprecated.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/deprecated/test_mount_import_arg_order.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/deprecated/test_mount_separators.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/deprecated/test_proxy_client.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/deprecated/test_resource_prefixes.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/deprecated/test_route_type_ignore.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/deprecated/test_settings.py +0 -0
- {fastmcp-2.10.4/tests/prompts → fastmcp-2.10.6/tests/integration_tests}/__init__.py +0 -0
- {fastmcp-2.10.4/tests/resources → fastmcp-2.10.6/tests/prompts}/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/prompts/test_prompt.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/prompts/test_prompt_manager.py +0 -0
- {fastmcp-2.10.4/tests/server → fastmcp-2.10.6/tests/resources}/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/resources/test_file_resources.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/resources/test_function_resources.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/resources/test_resource_manager.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/resources/test_resource_template.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/resources/test_resources.py +0 -0
- {fastmcp-2.10.4/tests/server/http → fastmcp-2.10.6/tests/server}/__init__.py +0 -0
- {fastmcp-2.10.4/tests/server/middleware → fastmcp-2.10.6/tests/server/http}/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/http/test_auth_setup.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/http/test_bearer_auth_backend.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/http/test_custom_routes.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/http/test_http_dependencies.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/http/test_http_middleware.py +0 -0
- {fastmcp-2.10.4/tests/server/openapi → fastmcp-2.10.6/tests/server/middleware}/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/middleware/test_error_handling.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/middleware/test_logging.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/middleware/test_rate_limiting.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/middleware/test_timing.py +0 -0
- {fastmcp-2.10.4/tests/server/proxy → fastmcp-2.10.6/tests/server/openapi}/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/openapi/conftest.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/openapi/test_advanced_behavior.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/openapi/test_basic_functionality.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/openapi/test_configuration.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/openapi/test_description_propagation.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/openapi/test_explode_integration.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/openapi/test_openapi_compatibility.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/openapi/test_route_map_fn.py +0 -0
- {fastmcp-2.10.4/tests/tools → fastmcp-2.10.6/tests/server/proxy}/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/test_app_state.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/test_auth_integration.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/test_context.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/test_file_server.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/test_import_server.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/test_logging.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/test_resource_prefix_formats.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/test_run_server.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/test_server.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/test_server_interactions.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/test_tool_annotations.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/server/test_tool_exclude_args.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/test_examples.py +0 -0
- /fastmcp-2.10.4/tests/conftest.py → /fastmcp-2.10.6/tests/tools/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/tools/test_tool_manager.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/utilities/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/utilities/openapi/conftest.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/utilities/openapi/test_openapi.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/utilities/openapi/test_openapi_advanced.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/utilities/openapi/test_openapi_fastapi.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/utilities/test_cache.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/utilities/test_inspect.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/utilities/test_json_schema.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/utilities/test_json_schema_type.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/utilities/test_logging.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/utilities/test_mcp_config.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/utilities/test_tests.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/utilities/test_typeadapter.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/tests/utilities/test_types.py +0 -0
- {fastmcp-2.10.4 → fastmcp-2.10.6}/uv.lock +0 -0
|
@@ -46,5 +46,28 @@ jobs:
|
|
|
46
46
|
- name: Install FastMCP
|
|
47
47
|
run: uv sync --locked
|
|
48
48
|
|
|
49
|
-
- name: Run tests
|
|
50
|
-
run: uv run pytest tests
|
|
49
|
+
- name: Run tests (excluding integration)
|
|
50
|
+
run: uv run pytest tests -m "not integration"
|
|
51
|
+
|
|
52
|
+
run_integration_tests:
|
|
53
|
+
name: "Run integration tests"
|
|
54
|
+
runs-on: ubuntu-latest
|
|
55
|
+
timeout-minutes: 10
|
|
56
|
+
|
|
57
|
+
steps:
|
|
58
|
+
- uses: actions/checkout@v4
|
|
59
|
+
|
|
60
|
+
- name: Install uv
|
|
61
|
+
uses: astral-sh/setup-uv@v6
|
|
62
|
+
with:
|
|
63
|
+
enable-cache: true
|
|
64
|
+
cache-dependency-glob: "uv.lock"
|
|
65
|
+
python-version: "3.10"
|
|
66
|
+
|
|
67
|
+
- name: Install FastMCP
|
|
68
|
+
run: uv sync --locked
|
|
69
|
+
|
|
70
|
+
- name: Run integration tests
|
|
71
|
+
run: uv run pytest tests -m "integration"
|
|
72
|
+
env:
|
|
73
|
+
FASTMCP_GITHUB_TOKEN: ${{ secrets.FASTMCP_GITHUB_TOKEN }}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fastmcp
|
|
3
|
-
Version: 2.10.
|
|
3
|
+
Version: 2.10.6
|
|
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
|
|
@@ -38,7 +38,7 @@ Description-Content-Type: text/markdown
|
|
|
38
38
|
|
|
39
39
|
<strong>The fast, Pythonic way to build MCP servers and clients.</strong>
|
|
40
40
|
|
|
41
|
-
*FastMCP is made with
|
|
41
|
+
*FastMCP is made with ☕️ by [Prefect](https://www.prefect.io/)*
|
|
42
42
|
|
|
43
43
|
[](https://gofastmcp.com)
|
|
44
44
|
[](https://pypi.org/project/fastmcp)
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
<strong>The fast, Pythonic way to build MCP servers and clients.</strong>
|
|
7
7
|
|
|
8
|
-
*FastMCP is made with
|
|
8
|
+
*FastMCP is made with ☕️ by [Prefect](https://www.prefect.io/)*
|
|
9
9
|
|
|
10
10
|
[](https://gofastmcp.com)
|
|
11
11
|
[](https://pypi.org/project/fastmcp)
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
# FastMCP OpenAPI Integration
|
|
2
|
+
|
|
3
|
+
This document explains how FastMCP's OpenAPI integration works, what features are supported, and how to extend it. The OpenAPI functionality is split across two main files:
|
|
4
|
+
|
|
5
|
+
- `server/openapi.py` - High-level FastMCP server implementation and MCP component creation
|
|
6
|
+
- `utilities/openapi.py` - Low-level OpenAPI parsing and intermediate representation
|
|
7
|
+
|
|
8
|
+
## Architecture Overview
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
OpenAPI Spec → Parse → HTTPRoute IR → Create MCP Components → FastMCP Server
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### 1. Parsing Phase (`utilities/openapi.py`)
|
|
15
|
+
|
|
16
|
+
OpenAPI specifications are parsed into an intermediate representation (IR) that normalizes differences between OpenAPI 3.0 and 3.1:
|
|
17
|
+
|
|
18
|
+
- **Input**: Raw OpenAPI spec (dict)
|
|
19
|
+
- **Output**: List of `HTTPRoute` objects with normalized parameter information
|
|
20
|
+
- **Key Classes**:
|
|
21
|
+
- `HTTPRoute` - Represents a single operation
|
|
22
|
+
- `ParameterInfo` - Represents a parameter with location, style, explode, etc.
|
|
23
|
+
- `RequestBodyInfo` - Represents request body information
|
|
24
|
+
- `ResponseInfo` - Represents response information
|
|
25
|
+
|
|
26
|
+
### 2. Component Creation Phase (`server/openapi.py`)
|
|
27
|
+
|
|
28
|
+
HTTPRoute objects are converted into FastMCP components based on route mapping rules:
|
|
29
|
+
|
|
30
|
+
- **Tools** (`OpenAPITool`) - HTTP operations that can be called
|
|
31
|
+
- **Resources** (`OpenAPIResource`) - HTTP endpoints that return data
|
|
32
|
+
- **Resource Templates** (`OpenAPIResourceTemplate`) - Parameterized resources
|
|
33
|
+
|
|
34
|
+
## Parameter Handling
|
|
35
|
+
|
|
36
|
+
FastMCP supports various OpenAPI parameter serialization styles and formats:
|
|
37
|
+
|
|
38
|
+
### Supported Parameter Locations
|
|
39
|
+
- `query` - Query string parameters
|
|
40
|
+
- `path` - Path parameters
|
|
41
|
+
- `header` - HTTP headers
|
|
42
|
+
- `cookie` - Cookie parameters (parsed but not used in requests)
|
|
43
|
+
|
|
44
|
+
### Supported Parameter Styles
|
|
45
|
+
|
|
46
|
+
#### Query Parameters
|
|
47
|
+
- **`form`** (default) - Standard query parameter format
|
|
48
|
+
- `explode=true` (default): `?tags=red&tags=blue`
|
|
49
|
+
- `explode=false`: `?tags=red,blue`
|
|
50
|
+
- **`deepObject`** - Object parameters with bracket notation
|
|
51
|
+
- `explode=true`: `?filter[name]=John&filter[age]=30`
|
|
52
|
+
- `explode=false`: Falls back to JSON string (non-standard, logs warning)
|
|
53
|
+
|
|
54
|
+
#### Path Parameters
|
|
55
|
+
- **`simple`** (default) - Comma-separated for arrays: `/users/1,2,3`
|
|
56
|
+
|
|
57
|
+
#### Header Parameters
|
|
58
|
+
- **`simple`** (default) - Standard header format
|
|
59
|
+
|
|
60
|
+
### Parameter Type Support
|
|
61
|
+
|
|
62
|
+
#### Arrays
|
|
63
|
+
- String arrays with `explode=true/false`
|
|
64
|
+
- Number arrays with `explode=true/false`
|
|
65
|
+
- Boolean arrays with `explode=true/false`
|
|
66
|
+
- Complex object arrays (basic support, may not handle all cases)
|
|
67
|
+
|
|
68
|
+
#### Objects
|
|
69
|
+
- Objects with `deepObject` style and `explode=true`
|
|
70
|
+
- Objects with other styles fall back to JSON serialization
|
|
71
|
+
|
|
72
|
+
#### Primitives
|
|
73
|
+
- Strings, numbers, booleans
|
|
74
|
+
- Enums
|
|
75
|
+
- Default values
|
|
76
|
+
|
|
77
|
+
## Request Body Handling
|
|
78
|
+
|
|
79
|
+
### Supported Content Types
|
|
80
|
+
- `application/json` - JSON request bodies
|
|
81
|
+
|
|
82
|
+
### Schema Support
|
|
83
|
+
- Object schemas with properties
|
|
84
|
+
- Array schemas
|
|
85
|
+
- Primitive schemas
|
|
86
|
+
- Schema references (`$ref` to local schemas only)
|
|
87
|
+
- Required properties
|
|
88
|
+
- Default values
|
|
89
|
+
|
|
90
|
+
## Response Handling
|
|
91
|
+
|
|
92
|
+
### Content Type Detection
|
|
93
|
+
- `application/json` - Parsed as JSON
|
|
94
|
+
- `text/*` - Returned as text
|
|
95
|
+
- `application/xml` - Returned as text
|
|
96
|
+
- Other types - Returned as binary
|
|
97
|
+
|
|
98
|
+
### Output Schema Generation
|
|
99
|
+
- Success response schemas (200, 201, 202, 204)
|
|
100
|
+
- Object response wrapping for MCP compliance
|
|
101
|
+
- Schema compression (removes unused `$defs`)
|
|
102
|
+
|
|
103
|
+
## Route Mapping
|
|
104
|
+
|
|
105
|
+
Routes are mapped to MCP component types using `RouteMap` configurations:
|
|
106
|
+
|
|
107
|
+
```python
|
|
108
|
+
RouteMap(
|
|
109
|
+
methods=["GET", "POST"], # HTTP methods to match
|
|
110
|
+
pattern=r"/api/users/.*", # Regex pattern for path
|
|
111
|
+
mcp_type=MCPType.RESOURCE_TEMPLATE, # Target component type
|
|
112
|
+
tags={"user"}, # OpenAPI tags to match (AND condition)
|
|
113
|
+
mcp_tags={"fastmcp-user"} # Tags to add to created components
|
|
114
|
+
)
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Default Behavior
|
|
118
|
+
- All routes become **Tools** by default
|
|
119
|
+
- Use route maps to override specific patterns
|
|
120
|
+
|
|
121
|
+
### Component Types
|
|
122
|
+
- `MCPType.TOOL` - Callable operations
|
|
123
|
+
- `MCPType.RESOURCE` - Static data endpoints
|
|
124
|
+
- `MCPType.RESOURCE_TEMPLATE` - Parameterized data endpoints
|
|
125
|
+
- `MCPType.EXCLUDE` - Skip route entirely
|
|
126
|
+
|
|
127
|
+
## Known Limitations & Edge Cases
|
|
128
|
+
|
|
129
|
+
### Parameter Edge Cases
|
|
130
|
+
1. **Parameter Name Collisions** - When path/query parameters have same names as request body properties, non-body parameters get `__location` suffixes
|
|
131
|
+
2. **Complex Array Serialization** - Limited support for arrays containing objects
|
|
132
|
+
3. **Cookie Parameters** - Parsed but not used in requests
|
|
133
|
+
4. **Non-standard Combinations** - e.g., `deepObject` with `explode=false`
|
|
134
|
+
|
|
135
|
+
### Request Body Edge Cases
|
|
136
|
+
1. **Content Type Priority** - Only first available content type is used
|
|
137
|
+
2. **Nested Objects** - Deep nesting may not serialize correctly
|
|
138
|
+
3. **Binary Content** - No support for file uploads or binary data
|
|
139
|
+
|
|
140
|
+
### Response Edge Cases
|
|
141
|
+
1. **Multiple Content Types** - Only JSON-compatible types are used for output schemas
|
|
142
|
+
2. **Error Responses** - Not used for MCP output schema generation
|
|
143
|
+
3. **Response Headers** - Not captured or exposed
|
|
144
|
+
|
|
145
|
+
### Schema Edge Cases
|
|
146
|
+
1. **External References** - `$ref` to external files not supported
|
|
147
|
+
2. **Circular References** - May cause issues in schema processing
|
|
148
|
+
3. **Polymorphism** - `oneOf`/`anyOf`/`allOf` limited support
|
|
149
|
+
|
|
150
|
+
## Debugging Tips
|
|
151
|
+
|
|
152
|
+
### Common Issues
|
|
153
|
+
1. **"Unknown tool/resource"** - Check route mapping configuration
|
|
154
|
+
2. **Parameter not found** - Check for name collisions or incorrect style/explode
|
|
155
|
+
3. **Invalid request format** - Check parameter serialization and content types
|
|
156
|
+
4. **Schema validation errors** - Check for external refs or complex schemas
|
|
157
|
+
|
|
158
|
+
### Debugging Tools
|
|
159
|
+
```python
|
|
160
|
+
# Parse routes to inspect intermediate representation
|
|
161
|
+
routes = parse_openapi_to_http_routes(openapi_spec)
|
|
162
|
+
for route in routes:
|
|
163
|
+
print(f"{route.method} {route.path}")
|
|
164
|
+
for param in route.parameters:
|
|
165
|
+
print(f" {param.name} ({param.location}): style={param.style}, explode={param.explode}")
|
|
166
|
+
|
|
167
|
+
# Check component creation
|
|
168
|
+
server = FastMCP.from_openapi(openapi_spec, client)
|
|
169
|
+
tools = await server.get_tools()
|
|
170
|
+
print(f"Created {len(tools)} tools: {list(tools.keys())}")
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Logging
|
|
174
|
+
- Set `FASTMCP_LOG_LEVEL=DEBUG` to see detailed parameter processing
|
|
175
|
+
- Look for warnings about non-standard parameter combinations
|
|
176
|
+
- Check for schema parsing errors in logs
|
|
177
|
+
|
|
178
|
+
## Extension Points
|
|
179
|
+
|
|
180
|
+
### Adding New Parameter Styles
|
|
181
|
+
1. Add style handling in `utilities/openapi.py` - `ParameterInfo` class
|
|
182
|
+
2. Implement serialization logic in `server/openapi.py` - `OpenAPITool.run()`
|
|
183
|
+
3. Add tests for parsing and serialization
|
|
184
|
+
|
|
185
|
+
### Adding New Content Types
|
|
186
|
+
1. Extend request body handling in `OpenAPITool.run()`
|
|
187
|
+
2. Add response parsing logic for new types
|
|
188
|
+
3. Update content type priority in utilities
|
|
189
|
+
|
|
190
|
+
### Custom Route Mapping
|
|
191
|
+
Use `route_map_fn` for complex routing logic:
|
|
192
|
+
|
|
193
|
+
```python
|
|
194
|
+
def custom_mapper(route: HTTPRoute, current_type: MCPType) -> MCPType:
|
|
195
|
+
if route.path.startswith("/admin"):
|
|
196
|
+
return MCPType.EXCLUDE
|
|
197
|
+
return current_type
|
|
198
|
+
|
|
199
|
+
server = FastMCP.from_openapi(spec, client, route_map_fn=custom_mapper)
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## Testing Patterns
|
|
203
|
+
|
|
204
|
+
### Unit Tests
|
|
205
|
+
- Test parameter parsing with various styles/explode combinations
|
|
206
|
+
- Test route mapping with different patterns and tags
|
|
207
|
+
- Test schema generation and compression
|
|
208
|
+
|
|
209
|
+
### Integration Tests
|
|
210
|
+
- Mock HTTP client to verify actual request parameters
|
|
211
|
+
- Test end-to-end component creation and execution
|
|
212
|
+
- Test error handling and edge cases
|
|
213
|
+
|
|
214
|
+
### Example Test Pattern
|
|
215
|
+
```python
|
|
216
|
+
async def test_parameter_style():
|
|
217
|
+
# 1. Create OpenAPI spec with specific parameter configuration
|
|
218
|
+
spec = {"openapi": "3.1.0", ...}
|
|
219
|
+
|
|
220
|
+
# 2. Parse and create components
|
|
221
|
+
routes = parse_openapi_to_http_routes(spec)
|
|
222
|
+
tool = OpenAPITool(mock_client, routes[0], ...)
|
|
223
|
+
|
|
224
|
+
# 3. Execute and verify request parameters
|
|
225
|
+
await tool.run({"param": "value"})
|
|
226
|
+
actual_params = mock_client.request.call_args.kwargs["params"]
|
|
227
|
+
assert actual_params == expected_params
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## Testing
|
|
231
|
+
|
|
232
|
+
OpenAPI functionality is tested across multiple files in `tests/server/openapi/`:
|
|
233
|
+
|
|
234
|
+
- `test_basic_functionality.py` - Core component creation and execution
|
|
235
|
+
- `test_explode_integration.py` - Parameter explode behavior
|
|
236
|
+
- `test_deepobject_style.py` - DeepObject style parameter encoding
|
|
237
|
+
- `test_parameter_collisions.py` - Parameter name collision handling
|
|
238
|
+
- `test_openapi_path_parameters.py` - Path parameter serialization
|
|
239
|
+
- `test_configuration.py` - Route mapping and MCP names
|
|
240
|
+
- `test_description_propagation.py` - Schema and description handling
|
|
241
|
+
|
|
242
|
+
When adding new OpenAPI features, create focused test files rather than adding to existing monolithic files.
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
*This document should be updated when new OpenAPI features are added or when edge cases are discovered and addressed.*
|
|
@@ -2,6 +2,145 @@
|
|
|
2
2
|
icon: "list-check"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
+
<Update label="v2.10.5" description="2025-07-11">
|
|
6
|
+
|
|
7
|
+
## [v2.10.5: Middle Management](https://github.com/jlowin/fastmcp/releases/tag/v2.10.5)
|
|
8
|
+
|
|
9
|
+
A maintenance release focused on OpenAPI refinements and middleware fixes, plus console improvements.
|
|
10
|
+
|
|
11
|
+
## What's Changed
|
|
12
|
+
### Enhancements 🔧
|
|
13
|
+
* Fix Claude Code CLI detection for npm global installations by [@jlowin](https://github.com/jlowin) in [#1106](https://github.com/jlowin/fastmcp/pull/1106)
|
|
14
|
+
* Fix OpenAPI parameter name collisions with location suffixing by [@jlowin](https://github.com/jlowin) in [#1107](https://github.com/jlowin/fastmcp/pull/1107)
|
|
15
|
+
* Add mirrored component support for proxy servers by [@jlowin](https://github.com/jlowin) in [#1105](https://github.com/jlowin/fastmcp/pull/1105)
|
|
16
|
+
### Fixes 🐞
|
|
17
|
+
* Fix OpenAPI deepObject style parameter encoding by [@jlowin](https://github.com/jlowin) in [#1122](https://github.com/jlowin/fastmcp/pull/1122)
|
|
18
|
+
* xfail when github token is not set ('' or None) by [@jlowin](https://github.com/jlowin) in [#1123](https://github.com/jlowin/fastmcp/pull/1123)
|
|
19
|
+
* fix: replace oneOf with anyOf in OpenAPI output schemas by [@MagnusS0](https://github.com/MagnusS0) in [#1119](https://github.com/jlowin/fastmcp/pull/1119)
|
|
20
|
+
* Fix middleware list result types by [@jlowin](https://github.com/jlowin) in [#1125](https://github.com/jlowin/fastmcp/pull/1125)
|
|
21
|
+
* Improve console width for logo by [@jlowin](https://github.com/jlowin) in [#1126](https://github.com/jlowin/fastmcp/pull/1126)
|
|
22
|
+
### Docs 📚
|
|
23
|
+
* Improve transport + integration docs by [@jlowin](https://github.com/jlowin) in [#1103](https://github.com/jlowin/fastmcp/pull/1103)
|
|
24
|
+
* Update proxy.mdx by [@coldfire-x](https://github.com/coldfire-x) in [#1108](https://github.com/jlowin/fastmcp/pull/1108)
|
|
25
|
+
### Other Changes 🦾
|
|
26
|
+
* Update github remote server tests with secret by [@jlowin](https://github.com/jlowin) in [#1112](https://github.com/jlowin/fastmcp/pull/1112)
|
|
27
|
+
|
|
28
|
+
## New Contributors
|
|
29
|
+
* [@coldfire-x](https://github.com/coldfire-x) made their first contribution in [#1108](https://github.com/jlowin/fastmcp/pull/1108)
|
|
30
|
+
* [@MagnusS0](https://github.com/MagnusS0) made their first contribution in [#1119](https://github.com/jlowin/fastmcp/pull/1119)
|
|
31
|
+
|
|
32
|
+
**Full Changelog**: [v2.10.4...v2.10.5](https://github.com/jlowin/fastmcp/compare/v2.10.4...v2.10.5)
|
|
33
|
+
|
|
34
|
+
</Update>
|
|
35
|
+
|
|
36
|
+
<Update label="v2.10.4" description="2025-07-09">
|
|
37
|
+
|
|
38
|
+
## [v2.10.4: Transport-ation](https://github.com/jlowin/fastmcp/releases/tag/v2.10.4)
|
|
39
|
+
|
|
40
|
+
A quick fix to ensure the CLI accepts "streamable-http" as a valid transport option.
|
|
41
|
+
|
|
42
|
+
## What's Changed
|
|
43
|
+
### Fixes 🐞
|
|
44
|
+
* Ensure the CLI accepts "streamable-http" as a valid transport by [@jlowin](https://github.com/jlowin) in [#1099](https://github.com/jlowin/fastmcp/pull/1099)
|
|
45
|
+
|
|
46
|
+
**Full Changelog**: [v2.10.3...v2.10.4](https://github.com/jlowin/fastmcp/compare/v2.10.3...v2.10.4)
|
|
47
|
+
|
|
48
|
+
</Update>
|
|
49
|
+
|
|
50
|
+
<Update label="v2.10.3" description="2025-07-09">
|
|
51
|
+
|
|
52
|
+
## [v2.10.3: CLI Me a River](https://github.com/jlowin/fastmcp/releases/tag/v2.10.3)
|
|
53
|
+
|
|
54
|
+
A major CLI overhaul featuring a complete refactor from typer to cyclopts, new IDE integrations, and comprehensive OpenAPI improvements.
|
|
55
|
+
|
|
56
|
+
## What's Changed
|
|
57
|
+
### New Features 🎉
|
|
58
|
+
* Refactor CLI from typer to cyclopts and add comprehensive tests by [@jlowin](https://github.com/jlowin) in [#1062](https://github.com/jlowin/fastmcp/pull/1062)
|
|
59
|
+
* Add output schema support for OpenAPI tools by [@jlowin](https://github.com/jlowin) in [#1073](https://github.com/jlowin/fastmcp/pull/1073)
|
|
60
|
+
### Enhancements 🔧
|
|
61
|
+
* Add Cursor support via CLI integration by [@jlowin](https://github.com/jlowin) in [#1052](https://github.com/jlowin/fastmcp/pull/1052)
|
|
62
|
+
* Add Claude Code install integration by [@jlowin](https://github.com/jlowin) in [#1053](https://github.com/jlowin/fastmcp/pull/1053)
|
|
63
|
+
* Generate MCP JSON config output from CLI as new `fastmcp install` command by [@jlowin](https://github.com/jlowin) in [#1056](https://github.com/jlowin/fastmcp/pull/1056)
|
|
64
|
+
* Use isawaitable instead of iscoroutine by [@jlowin](https://github.com/jlowin) in [#1059](https://github.com/jlowin/fastmcp/pull/1059)
|
|
65
|
+
* feat: Add `--path` Option to CLI for HTTP/SSE Route by [@davidbk-legit](https://github.com/davidbk-legit) in [#1087](https://github.com/jlowin/fastmcp/pull/1087)
|
|
66
|
+
* Fix concurrent proxy client operations with session isolation by [@jlowin](https://github.com/jlowin) in [#1083](https://github.com/jlowin/fastmcp/pull/1083)
|
|
67
|
+
### Fixes 🐞
|
|
68
|
+
* Refactor Client context management to avoid concurrency issue by [@hopeful0](https://github.com/hopeful0) in [#1054](https://github.com/jlowin/fastmcp/pull/1054)
|
|
69
|
+
* Keep json schema $defs on transform by [@strawgate](https://github.com/strawgate) in [#1066](https://github.com/jlowin/fastmcp/pull/1066)
|
|
70
|
+
* Ensure fastmcp version copy is plaintext by [@jlowin](https://github.com/jlowin) in [#1071](https://github.com/jlowin/fastmcp/pull/1071)
|
|
71
|
+
* Fix single-element list unwrapping in tool content by [@jlowin](https://github.com/jlowin) in [#1074](https://github.com/jlowin/fastmcp/pull/1074)
|
|
72
|
+
* Fix max recursion error when pruning OpenAPI definitions by [@dimitribarbot](https://github.com/dimitribarbot) in [#1092](https://github.com/jlowin/fastmcp/pull/1092)
|
|
73
|
+
* Fix OpenAPI tool name registration when modified by mcp_component_fn by [@jlowin](https://github.com/jlowin) in [#1096](https://github.com/jlowin/fastmcp/pull/1096)
|
|
74
|
+
### Docs 📚
|
|
75
|
+
* Docs: add example of more concise way to use bearer auth by [@neilconway](https://github.com/neilconway) in [#1055](https://github.com/jlowin/fastmcp/pull/1055)
|
|
76
|
+
* Update favicon by [@jlowin](https://github.com/jlowin) in [#1058](https://github.com/jlowin/fastmcp/pull/1058)
|
|
77
|
+
* Update environment note by [@jlowin](https://github.com/jlowin) in [#1075](https://github.com/jlowin/fastmcp/pull/1075)
|
|
78
|
+
* Add fastmcp version --copy documentation by [@jlowin](https://github.com/jlowin) in [#1076](https://github.com/jlowin/fastmcp/pull/1076)
|
|
79
|
+
### Other Changes 🦾
|
|
80
|
+
* Remove asserts and add documentation following #1054 by [@jlowin](https://github.com/jlowin) in [#1057](https://github.com/jlowin/fastmcp/pull/1057)
|
|
81
|
+
* Add --copy flag for fastmcp version by [@jlowin](https://github.com/jlowin) in [#1063](https://github.com/jlowin/fastmcp/pull/1063)
|
|
82
|
+
* Fix docstring format for fastmcp.client.Client by [@neilconway](https://github.com/neilconway) in [#1094](https://github.com/jlowin/fastmcp/pull/1094)
|
|
83
|
+
|
|
84
|
+
## New Contributors
|
|
85
|
+
* [@neilconway](https://github.com/neilconway) made their first contribution in [#1055](https://github.com/jlowin/fastmcp/pull/1055)
|
|
86
|
+
* [@davidbk-legit](https://github.com/davidbk-legit) made their first contribution in [#1087](https://github.com/jlowin/fastmcp/pull/1087)
|
|
87
|
+
* [@dimitribarbot](https://github.com/dimitribarbot) made their first contribution in [#1092](https://github.com/jlowin/fastmcp/pull/1092)
|
|
88
|
+
|
|
89
|
+
**Full Changelog**: [v2.10.2...v2.10.3](https://github.com/jlowin/fastmcp/compare/v2.10.2...v2.10.3)
|
|
90
|
+
|
|
91
|
+
</Update>
|
|
92
|
+
|
|
93
|
+
<Update label="v2.10.2" description="2025-07-05">
|
|
94
|
+
|
|
95
|
+
## [v2.10.2: Forward March](https://github.com/jlowin/fastmcp/releases/tag/v2.10.2)
|
|
96
|
+
|
|
97
|
+
The headline feature of this release is the ability to "forward" advanced MCP interactions like logging, progress, and elicitation through proxy servers. If the remote server requests an elicitation, the proxy client will pass that request to the new, "ultimate" client.
|
|
98
|
+
|
|
99
|
+
## What's Changed
|
|
100
|
+
### New Features 🎉
|
|
101
|
+
* Proxy support advanced MCP features by [@hopeful0](https://github.com/hopeful0) in [#1022](https://github.com/jlowin/fastmcp/pull/1022)
|
|
102
|
+
### Enhancements 🔧
|
|
103
|
+
* Re-add splash screen by [@jlowin](https://github.com/jlowin) in [#1027](https://github.com/jlowin/fastmcp/pull/1027)
|
|
104
|
+
* Reduce banner padding by [@jlowin](https://github.com/jlowin) in [#1030](https://github.com/jlowin/fastmcp/pull/1030)
|
|
105
|
+
* Allow per-server timeouts in MCPConfig by [@cegersdoerfer](https://github.com/cegersdoerfer) in [#1031](https://github.com/jlowin/fastmcp/pull/1031)
|
|
106
|
+
* Support 'scp' claim for OAuth scopes in BearerAuthProvider by [@jlowin](https://github.com/jlowin) in [#1033](https://github.com/jlowin/fastmcp/pull/1033)
|
|
107
|
+
* Add path expansion to image/audio/file by [@jlowin](https://github.com/jlowin) in [#1038](https://github.com/jlowin/fastmcp/pull/1038)
|
|
108
|
+
* Ensure multi-client configurations use new ProxyClient by [@jlowin](https://github.com/jlowin) in [#1045](https://github.com/jlowin/fastmcp/pull/1045)
|
|
109
|
+
### Fixes 🐞
|
|
110
|
+
* Expose stateless_http kwarg for mcp.run() by [@jlowin](https://github.com/jlowin) in [#1018](https://github.com/jlowin/fastmcp/pull/1018)
|
|
111
|
+
* Avoid propagating logs by [@jlowin](https://github.com/jlowin) in [#1042](https://github.com/jlowin/fastmcp/pull/1042)
|
|
112
|
+
### Docs 📚
|
|
113
|
+
* Clean up docs by [@jlowin](https://github.com/jlowin) in [#1028](https://github.com/jlowin/fastmcp/pull/1028)
|
|
114
|
+
* Docs: clarify server URL paths for ChatGPT integration by [@thap2331](https://github.com/thap2331) in [#1017](https://github.com/jlowin/fastmcp/pull/1017)
|
|
115
|
+
### Other Changes 🦾
|
|
116
|
+
* Split giant openapi test file into smaller files by [@jlowin](https://github.com/jlowin) in [#1034](https://github.com/jlowin/fastmcp/pull/1034)
|
|
117
|
+
* Add comprehensive OpenAPI 3.0 vs 3.1 compatibility tests by [@jlowin](https://github.com/jlowin) in [#1035](https://github.com/jlowin/fastmcp/pull/1035)
|
|
118
|
+
* Update banner and use console.log by [@jlowin](https://github.com/jlowin) in [#1041](https://github.com/jlowin/fastmcp/pull/1041)
|
|
119
|
+
|
|
120
|
+
## New Contributors
|
|
121
|
+
* [@cegersdoerfer](https://github.com/cegersdoerfer) made their first contribution in [#1031](https://github.com/jlowin/fastmcp/pull/1031)
|
|
122
|
+
* [@hopeful0](https://github.com/hopeful0) made their first contribution in [#1022](https://github.com/jlowin/fastmcp/pull/1022)
|
|
123
|
+
* [@thap2331](https://github.com/thap2331) made their first contribution in [#1017](https://github.com/jlowin/fastmcp/pull/1017)
|
|
124
|
+
|
|
125
|
+
**Full Changelog**: [v2.10.1...v2.10.2](https://github.com/jlowin/fastmcp/compare/v2.10.1...v2.10.2)
|
|
126
|
+
|
|
127
|
+
</Update>
|
|
128
|
+
|
|
129
|
+
<Update label="v2.10.1" description="2025-07-02">
|
|
130
|
+
|
|
131
|
+
## [v2.10.1: Revert to Sender](https://github.com/jlowin/fastmcp/releases/tag/v2.10.1)
|
|
132
|
+
|
|
133
|
+
A quick patch to revert the CLI banner that was added in v2.10.0.
|
|
134
|
+
|
|
135
|
+
## What's Changed
|
|
136
|
+
### Docs 📚
|
|
137
|
+
* Update changelog.mdx by [@jlowin](https://github.com/jlowin) in [#1009](https://github.com/jlowin/fastmcp/pull/1009)
|
|
138
|
+
* Revert "Add CLI banner" by [@jlowin](https://github.com/jlowin) in [#1011](https://github.com/jlowin/fastmcp/pull/1011)
|
|
139
|
+
|
|
140
|
+
**Full Changelog**: [v2.10.0...v2.10.1](https://github.com/jlowin/fastmcp/compare/v2.10.0...v2.10.1)
|
|
141
|
+
|
|
142
|
+
</Update>
|
|
143
|
+
|
|
5
144
|
<Update label="v2.10.0" description="2024-07-01">
|
|
6
145
|
|
|
7
146
|
## [v2.10.0: Great Spec-tations](https://github.com/jlowin/fastmcp/releases/tag/v2.10.0)
|