fastmcp 2.10.5__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.5 → fastmcp-2.10.6}/.github/workflows/run-static.yml +2 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/.github/workflows/run-tests.yml +23 -2
- {fastmcp-2.10.5 → fastmcp-2.10.6}/.pre-commit-config.yaml +6 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/PKG-INFO +2 -2
- {fastmcp-2.10.5 → fastmcp-2.10.6}/README.md +1 -1
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/changelog.mdx +139 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/docs.json +40 -7
- fastmcp-2.10.6/docs/integrations/eunomia-authorization.mdx +134 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/integrations/mcp-json-configuration.mdx +59 -49
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/patterns/cli.mdx +21 -19
- {fastmcp-2.10.5 → 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.5 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-cli-run.mdx +10 -8
- {fastmcp-2.10.5 → 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.5 → 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.5 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-client-roots.mdx +2 -2
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-client-sampling.mdx +1 -1
- {fastmcp-2.10.5 → 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.5 → 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.5 → 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.5 → 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.5 → 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.5 → 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.5 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-server-server.mdx +225 -37
- {fastmcp-2.10.5 → 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.5 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-utilities-exceptions.mdx +2 -2
- {fastmcp-2.10.5 → 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.5 → 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.5 → 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.5 → 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.5 → fastmcp-2.10.6}/docs/servers/sampling.mdx +1 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/pyproject.toml +9 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/__init__.py +7 -2
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/cli/install/__init__.py +2 -2
- fastmcp-2.10.5/src/fastmcp/cli/install/mcp_config.py → fastmcp-2.10.6/src/fastmcp/cli/install/mcp_json.py +10 -7
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/prompts/prompt_manager.py +1 -1
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/resources/resource_manager.py +2 -2
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/context.py +3 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/openapi.py +25 -12
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/proxy.py +42 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/server.py +2 -3
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/settings.py +10 -12
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/tools/tool.py +5 -3
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/tools/tool_manager.py +1 -1
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/tools/tool_transform.py +10 -3
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/utilities/openapi.py +96 -10
- {fastmcp-2.10.5 → 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.5 → fastmcp-2.10.6}/tests/integration_tests/test_github_mcp_remote.py +1 -0
- {fastmcp-2.10.5 → 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.5 → fastmcp-2.10.6}/tests/server/proxy/test_proxy_client.py +1 -0
- fastmcp-2.10.6/tests/server/proxy/test_stateful_proxy_client.py +120 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/test_mount.py +6 -3
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/tools/test_tool.py +82 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/tools/test_tool_transform.py +85 -0
- fastmcp-2.10.5/docs/integrations/eunomia-authorization.mdx +0 -108
- fastmcp-2.10.5/docs/python-sdk/fastmcp-cli-cli.mdx +0 -87
- fastmcp-2.10.5/docs/python-sdk/fastmcp-client-auth-oauth.mdx +0 -102
- fastmcp-2.10.5/docs/python-sdk/fastmcp-client-client.mdx +0 -94
- fastmcp-2.10.5/docs/python-sdk/fastmcp-client-logging.mdx +0 -14
- fastmcp-2.10.5/docs/python-sdk/fastmcp-client-progress.mdx +0 -8
- fastmcp-2.10.5/docs/python-sdk/fastmcp-exceptions.mdx +0 -65
- fastmcp-2.10.5/docs/python-sdk/fastmcp-prompts-prompt.mdx +0 -84
- fastmcp-2.10.5/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +0 -43
- fastmcp-2.10.5/docs/python-sdk/fastmcp-resources-resource.mdx +0 -90
- fastmcp-2.10.5/docs/python-sdk/fastmcp-resources-template.mdx +0 -104
- fastmcp-2.10.5/docs/python-sdk/fastmcp-resources-types.mdx +0 -83
- fastmcp-2.10.5/docs/python-sdk/fastmcp-server-auth-auth.mdx +0 -10
- fastmcp-2.10.5/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +0 -69
- fastmcp-2.10.5/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +0 -15
- fastmcp-2.10.5/docs/python-sdk/fastmcp-server-context.mdx +0 -118
- fastmcp-2.10.5/docs/python-sdk/fastmcp-server-middleware-logging.mdx +0 -29
- fastmcp-2.10.5/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +0 -56
- fastmcp-2.10.5/docs/python-sdk/fastmcp-server-middleware-rate_limiting.mdx +0 -47
- fastmcp-2.10.5/docs/python-sdk/fastmcp-server-middleware-timing.mdx +0 -29
- fastmcp-2.10.5/docs/python-sdk/fastmcp-server-openapi.mdx +0 -58
- fastmcp-2.10.5/docs/python-sdk/fastmcp-server-proxy.mdx +0 -101
- fastmcp-2.10.5/docs/python-sdk/fastmcp-tools-tool.mdx +0 -68
- fastmcp-2.10.5/docs/python-sdk/fastmcp-tools-tool_manager.mdx +0 -58
- fastmcp-2.10.5/docs/python-sdk/fastmcp-tools-tool_transform.mdx +0 -139
- fastmcp-2.10.5/docs/python-sdk/fastmcp-utilities-cache.mdx +0 -30
- fastmcp-2.10.5/docs/python-sdk/fastmcp-utilities-components.mdx +0 -52
- fastmcp-2.10.5/docs/python-sdk/fastmcp-utilities-inspect.mdx +0 -41
- fastmcp-2.10.5/docs/python-sdk/fastmcp-utilities-openapi.mdx +0 -118
- fastmcp-2.10.5/docs/python-sdk/fastmcp-utilities-types.mdx +0 -112
- fastmcp-2.10.5/tests/conftest.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/.ccignore +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/.cursor/rules/core-mcp-objects.mdc +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/.github/dependabot.yml +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/.github/labeler.yml +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/.github/release.yml +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/.github/workflows/labeler.yml +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/.github/workflows/publish.yml +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/.gitignore +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/AGENTS.md +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/CLAUDE.md +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/LICENSE +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/README_OPENAPI.md +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/Windows_Notes.md +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/.cursor/rules/mintlify.mdc +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/assets/favicon.svg +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/assets/images/tutorial-rest-api-result.png +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/assets/updates/release-2-7.png +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/clients/auth/bearer.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/clients/auth/oauth.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/clients/client.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/clients/elicitation.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/clients/logging.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/clients/messages.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/clients/progress.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/clients/prompts.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/clients/resources.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/clients/roots.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/clients/sampling.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/clients/tools.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/clients/transports.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/community/README.md +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/community/showcase.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/css/banner.css +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/css/python-sdk.css +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/css/style.css +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/css/version-badge.css +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/deployment/running-server.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/getting-started/installation.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/getting-started/quickstart.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/getting-started/welcome.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/integrations/anthropic.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/integrations/chatgpt.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/integrations/claude-code.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/integrations/claude-desktop.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/integrations/cursor-install-mcp.png +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/integrations/cursor.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/integrations/fastapi.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/integrations/gemini.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/integrations/openai.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/integrations/openapi.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/integrations/starlette.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/patterns/contrib.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/patterns/decorating-methods.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/patterns/http-requests.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/patterns/testing.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/patterns/tool-transformation.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-cli-__init__.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-client-__init__.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-client-auth-__init__.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-prompts-__init__.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-resources-__init__.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-server-__init__.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-server-auth-__init__.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-server-auth-providers-__init__.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-server-middleware-__init__.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-server-middleware.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-tools-__init__.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-utilities-__init__.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/servers/auth/bearer.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/servers/composition.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/servers/context.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/servers/elicitation.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/servers/logging.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/servers/middleware.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/servers/progress.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/servers/prompts.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/servers/proxy.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/servers/resources.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/servers/server.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/servers/tools.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/snippets/local-focus.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/snippets/version-badge.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/snippets/youtube-embed.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/tutorials/create-mcp-server.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/tutorials/mcp.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/tutorials/rest-api.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/docs/updates.mdx +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/atproto_mcp/README.md +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/atproto_mcp/demo.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/atproto_mcp/pyproject.toml +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/__main__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/_atproto/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/_atproto/_client.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/_atproto/_posts.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/_atproto/_profile.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/_atproto/_read.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/_atproto/_social.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/py.typed +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/server.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/settings.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/atproto_mcp/src/atproto_mcp/types.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/complex_inputs.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/config_server.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/desktop.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/echo.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/get_file.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/in_memory_proxy_example.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/memory.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/mount_example.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/sampling.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/screenshot.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/serializer.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/simple_echo.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/smart_home/README.md +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/smart_home/pyproject.toml +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/smart_home/src/smart_home/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/smart_home/src/smart_home/__main__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/smart_home/src/smart_home/hub.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/smart_home/src/smart_home/lights/server.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/smart_home/src/smart_home/py.typed +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/smart_home/src/smart_home/settings.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/smart_home/uv.lock +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/tags_example.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/examples/text_me.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/justfile +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/cli/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/cli/claude.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/cli/cli.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/cli/install/claude_code.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/cli/install/claude_desktop.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/cli/install/cursor.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/cli/install/shared.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/cli/run.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/client/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/client/auth/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/client/auth/bearer.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/client/auth/oauth.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/client/client.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/client/elicitation.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/client/logging.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/client/messages.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/client/oauth_callback.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/client/progress.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/client/roots.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/client/sampling.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/client/transports.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/contrib/README.md +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/contrib/component_manager/README.md +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/contrib/component_manager/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/contrib/component_manager/component_service.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/contrib/component_manager/example.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/exceptions.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/mcp_config.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/prompts/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/prompts/prompt.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/py.typed +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/resources/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/resources/resource.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/resources/template.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/resources/types.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/auth/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/auth/auth.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/auth/providers/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/auth/providers/bearer.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/auth/providers/bearer_env.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/auth/providers/in_memory.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/dependencies.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/elicitation.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/http.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/low_level.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/middleware/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/middleware/error_handling.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/middleware/logging.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/middleware/middleware.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/middleware/rate_limiting.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/server/middleware/timing.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/tools/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/utilities/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/utilities/cache.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/utilities/cli.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/utilities/components.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/utilities/exceptions.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/utilities/http.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/utilities/inspect.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/utilities/json_schema.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/utilities/json_schema_type.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/utilities/logging.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/utilities/tests.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/src/fastmcp/utilities/types.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/auth/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/auth/providers/test_bearer.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/auth/providers/test_bearer_env.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/auth/providers/test_token_verifier.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/auth/test_oauth_client.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/cli/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/cli/test_cli.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/cli/test_cursor.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/cli/test_run.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/cli/test_shared.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/client/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/client/test_client.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/client/test_elicitation.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/client/test_logs.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/client/test_notifications.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/client/test_openapi.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/client/test_progress.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/client/test_roots.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/client/test_sampling.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/client/test_sse.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/client/test_stdio.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/client/test_streamable_http.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/contrib/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/contrib/test_bulk_tool_caller.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/contrib/test_component_manager.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/contrib/test_mcp_mixin.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/deprecated/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/deprecated/test_deprecated.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/deprecated/test_mount_import_arg_order.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/deprecated/test_mount_separators.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/deprecated/test_proxy_client.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/deprecated/test_resource_prefixes.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/deprecated/test_route_type_ignore.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/deprecated/test_settings.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/integration_tests/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/prompts/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/prompts/test_prompt.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/prompts/test_prompt_manager.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/resources/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/resources/test_file_resources.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/resources/test_function_resources.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/resources/test_resource_manager.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/resources/test_resource_template.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/resources/test_resources.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/http/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/http/test_auth_setup.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/http/test_bearer_auth_backend.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/http/test_custom_routes.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/http/test_http_dependencies.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/http/test_http_middleware.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/middleware/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/middleware/test_error_handling.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/middleware/test_logging.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/middleware/test_middleware.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/middleware/test_rate_limiting.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/middleware/test_timing.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/openapi/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/openapi/conftest.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/openapi/test_advanced_behavior.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/openapi/test_basic_functionality.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/openapi/test_configuration.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/openapi/test_deepobject_style.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/openapi/test_description_propagation.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/openapi/test_explode_integration.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/openapi/test_openapi_compatibility.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/openapi/test_parameter_collisions.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/openapi/test_route_map_fn.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/proxy/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/proxy/test_proxy_server.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/test_app_state.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/test_auth_integration.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/test_context.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/test_file_server.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/test_import_server.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/test_logging.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/test_resource_prefix_formats.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/test_run_server.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/test_server.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/test_server_interactions.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/test_tool_annotations.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/server/test_tool_exclude_args.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/test_examples.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/tools/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/tools/test_tool_manager.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/utilities/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/utilities/openapi/conftest.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/utilities/openapi/test_openapi.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/utilities/openapi/test_openapi_advanced.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/utilities/openapi/test_openapi_fastapi.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/utilities/openapi/test_openapi_output_schemas.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/utilities/test_cache.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/utilities/test_inspect.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/utilities/test_json_schema.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/utilities/test_json_schema_type.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/utilities/test_logging.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/utilities/test_mcp_config.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/utilities/test_tests.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/utilities/test_typeadapter.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/tests/utilities/test_types.py +0 -0
- {fastmcp-2.10.5 → fastmcp-2.10.6}/uv.lock +0 -0
|
@@ -46,7 +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"
|
|
51
72
|
env:
|
|
52
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)
|
|
@@ -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)
|
|
@@ -65,7 +65,10 @@
|
|
|
65
65
|
{
|
|
66
66
|
"group": "Essentials",
|
|
67
67
|
"icon": "cube",
|
|
68
|
-
"pages": [
|
|
68
|
+
"pages": [
|
|
69
|
+
"servers/server",
|
|
70
|
+
"deployment/running-server"
|
|
71
|
+
]
|
|
69
72
|
},
|
|
70
73
|
{
|
|
71
74
|
"group": "Core Components",
|
|
@@ -93,7 +96,9 @@
|
|
|
93
96
|
{
|
|
94
97
|
"group": "Authentication",
|
|
95
98
|
"icon": "shield-check",
|
|
96
|
-
"pages": [
|
|
99
|
+
"pages": [
|
|
100
|
+
"servers/auth/bearer"
|
|
101
|
+
]
|
|
97
102
|
}
|
|
98
103
|
]
|
|
99
104
|
},
|
|
@@ -103,7 +108,10 @@
|
|
|
103
108
|
{
|
|
104
109
|
"group": "Essentials",
|
|
105
110
|
"icon": "cube",
|
|
106
|
-
"pages": [
|
|
111
|
+
"pages": [
|
|
112
|
+
"clients/client",
|
|
113
|
+
"clients/transports"
|
|
114
|
+
]
|
|
107
115
|
},
|
|
108
116
|
{
|
|
109
117
|
"group": "Core Operations",
|
|
@@ -129,7 +137,10 @@
|
|
|
129
137
|
{
|
|
130
138
|
"group": "Authentication",
|
|
131
139
|
"icon": "user-shield",
|
|
132
|
-
"pages": [
|
|
140
|
+
"pages": [
|
|
141
|
+
"clients/auth/oauth",
|
|
142
|
+
"clients/auth/bearer"
|
|
143
|
+
]
|
|
133
144
|
}
|
|
134
145
|
]
|
|
135
146
|
},
|
|
@@ -174,12 +185,17 @@
|
|
|
174
185
|
},
|
|
175
186
|
{
|
|
176
187
|
"anchor": "What's New",
|
|
177
|
-
"pages": [
|
|
188
|
+
"pages": [
|
|
189
|
+
"updates",
|
|
190
|
+
"changelog"
|
|
191
|
+
]
|
|
178
192
|
},
|
|
179
193
|
{
|
|
180
194
|
"anchor": "Community",
|
|
181
195
|
"icon": "users",
|
|
182
|
-
"pages": [
|
|
196
|
+
"pages": [
|
|
197
|
+
"community/showcase"
|
|
198
|
+
]
|
|
183
199
|
}
|
|
184
200
|
]
|
|
185
201
|
},
|
|
@@ -191,6 +207,7 @@
|
|
|
191
207
|
"icon": "python",
|
|
192
208
|
"pages": [
|
|
193
209
|
"python-sdk/fastmcp-exceptions",
|
|
210
|
+
"python-sdk/fastmcp-mcp_config",
|
|
194
211
|
"python-sdk/fastmcp-settings",
|
|
195
212
|
{
|
|
196
213
|
"group": "fastmcp.cli",
|
|
@@ -198,6 +215,17 @@
|
|
|
198
215
|
"python-sdk/fastmcp-cli-__init__",
|
|
199
216
|
"python-sdk/fastmcp-cli-claude",
|
|
200
217
|
"python-sdk/fastmcp-cli-cli",
|
|
218
|
+
{
|
|
219
|
+
"group": "install",
|
|
220
|
+
"pages": [
|
|
221
|
+
"python-sdk/fastmcp-cli-install-__init__",
|
|
222
|
+
"python-sdk/fastmcp-cli-install-claude_code",
|
|
223
|
+
"python-sdk/fastmcp-cli-install-claude_desktop",
|
|
224
|
+
"python-sdk/fastmcp-cli-install-cursor",
|
|
225
|
+
"python-sdk/fastmcp-cli-install-mcp_config",
|
|
226
|
+
"python-sdk/fastmcp-cli-install-shared"
|
|
227
|
+
]
|
|
228
|
+
},
|
|
201
229
|
"python-sdk/fastmcp-cli-run"
|
|
202
230
|
]
|
|
203
231
|
},
|
|
@@ -214,7 +242,9 @@
|
|
|
214
242
|
]
|
|
215
243
|
},
|
|
216
244
|
"python-sdk/fastmcp-client-client",
|
|
245
|
+
"python-sdk/fastmcp-client-elicitation",
|
|
217
246
|
"python-sdk/fastmcp-client-logging",
|
|
247
|
+
"python-sdk/fastmcp-client-messages",
|
|
218
248
|
"python-sdk/fastmcp-client-oauth_callback",
|
|
219
249
|
"python-sdk/fastmcp-client-progress",
|
|
220
250
|
"python-sdk/fastmcp-client-roots",
|
|
@@ -262,7 +292,9 @@
|
|
|
262
292
|
},
|
|
263
293
|
"python-sdk/fastmcp-server-context",
|
|
264
294
|
"python-sdk/fastmcp-server-dependencies",
|
|
295
|
+
"python-sdk/fastmcp-server-elicitation",
|
|
265
296
|
"python-sdk/fastmcp-server-http",
|
|
297
|
+
"python-sdk/fastmcp-server-low_level",
|
|
266
298
|
{
|
|
267
299
|
"group": "middleware",
|
|
268
300
|
"pages": [
|
|
@@ -293,13 +325,14 @@
|
|
|
293
325
|
"pages": [
|
|
294
326
|
"python-sdk/fastmcp-utilities-__init__",
|
|
295
327
|
"python-sdk/fastmcp-utilities-cache",
|
|
328
|
+
"python-sdk/fastmcp-utilities-cli",
|
|
296
329
|
"python-sdk/fastmcp-utilities-components",
|
|
297
330
|
"python-sdk/fastmcp-utilities-exceptions",
|
|
298
331
|
"python-sdk/fastmcp-utilities-http",
|
|
299
332
|
"python-sdk/fastmcp-utilities-inspect",
|
|
300
333
|
"python-sdk/fastmcp-utilities-json_schema",
|
|
334
|
+
"python-sdk/fastmcp-utilities-json_schema_type",
|
|
301
335
|
"python-sdk/fastmcp-utilities-logging",
|
|
302
|
-
"python-sdk/fastmcp-utilities-mcp_config",
|
|
303
336
|
"python-sdk/fastmcp-utilities-openapi",
|
|
304
337
|
"python-sdk/fastmcp-utilities-tests",
|
|
305
338
|
"python-sdk/fastmcp-utilities-types"
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Eunomia Authorization 🤝 FastMCP
|
|
3
|
+
sidebarTitle: Eunomia Auth
|
|
4
|
+
description: Add policy-based authorization to your FastMCP servers
|
|
5
|
+
icon: shield-check
|
|
6
|
+
tag: NEW
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Add **policy-based authorization** to your FastMCP servers with one-line code addition with the **[Eunomia][eunomia-github] authorization middleware**.
|
|
10
|
+
|
|
11
|
+
Control which tools, resources and prompts MCP clients can view and execute on your server. Define dynamic JSON-based policies and obtain a comprehensive audit log of all access attempts and violations.
|
|
12
|
+
|
|
13
|
+
## How it Works
|
|
14
|
+
|
|
15
|
+
Exploiting FastMCP's [Middleware][fastmcp-middleare], the Eunomia middleware intercepts all MCP requests to your server and, then, automatically maps MCP methods to authorization checks.
|
|
16
|
+
|
|
17
|
+
### Listing Operations
|
|
18
|
+
|
|
19
|
+
The middleware behaves as a filter for listing operations (`tools/list`, `resources/list`, `prompts/list`), hiding to the client components that are not authorized by the defined policies.
|
|
20
|
+
|
|
21
|
+
```mermaid
|
|
22
|
+
sequenceDiagram
|
|
23
|
+
participant MCPClient as MCP Client
|
|
24
|
+
participant EunomiaMiddleware as Eunomia Middleware
|
|
25
|
+
participant MCPServer as FastMCP Server
|
|
26
|
+
participant EunomiaServer as Eunomia Server
|
|
27
|
+
|
|
28
|
+
MCPClient->>EunomiaMiddleware: MCP Listing Request (e.g., tools/list)
|
|
29
|
+
EunomiaMiddleware->>MCPServer: MCP Listing Request
|
|
30
|
+
MCPServer-->>EunomiaMiddleware: MCP Listing Response
|
|
31
|
+
EunomiaMiddleware->>EunomiaServer: Authorization Checks
|
|
32
|
+
EunomiaServer->>EunomiaMiddleware: Authorization Decisions
|
|
33
|
+
EunomiaMiddleware-->>MCPClient: Filtered MCP Listing Response
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Execution Operations
|
|
37
|
+
|
|
38
|
+
The middleware behaves as a firewall for execution operations (`tools/call`, `resources/read`, `prompts/get`), blocking operations that are not authorized by the defined policies.
|
|
39
|
+
|
|
40
|
+
```mermaid
|
|
41
|
+
sequenceDiagram
|
|
42
|
+
participant MCPClient as MCP Client
|
|
43
|
+
participant EunomiaMiddleware as Eunomia Middleware
|
|
44
|
+
participant MCPServer as FastMCP Server
|
|
45
|
+
participant EunomiaServer as Eunomia Server
|
|
46
|
+
|
|
47
|
+
MCPClient->>EunomiaMiddleware: MCP Execution Request (e.g., tools/call)
|
|
48
|
+
EunomiaMiddleware->>EunomiaServer: Authorization Check
|
|
49
|
+
EunomiaServer->>EunomiaMiddleware: Authorization Decision
|
|
50
|
+
EunomiaMiddleware-->>MCPClient: MCP Unauthorized Error (if denied)
|
|
51
|
+
EunomiaMiddleware->>MCPServer: MCP Execution Request (if allowed)
|
|
52
|
+
MCPServer-->>EunomiaMiddleware: MCP Execution Response (if allowed)
|
|
53
|
+
EunomiaMiddleware-->>MCPClient: MCP Execution Response (if allowed)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Add Authorization to Your Server
|
|
57
|
+
|
|
58
|
+
<Note>
|
|
59
|
+
Eunomia is an AI-specific standalone authorization server that handles policy decisions. You must have an Eunomia server running alongside your FastMCP server for the middleware to function.
|
|
60
|
+
|
|
61
|
+
Run it in the background with Docker:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
docker run -d -p 8000:8000 ttommitt/eunomia-server:latest
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
</Note>
|
|
68
|
+
|
|
69
|
+
### Create a Server with Authorization
|
|
70
|
+
|
|
71
|
+
First, install the `eunomia-mcp` package:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
pip install eunomia-mcp
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Then create a FastMCP server and add the Eunomia middleware in one line:
|
|
78
|
+
|
|
79
|
+
```python server.py
|
|
80
|
+
from fastmcp import FastMCP
|
|
81
|
+
from eunomia_mcp import EunomiaMcpMiddleware
|
|
82
|
+
|
|
83
|
+
mcp = FastMCP("Secure FastMCP Server 🔒")
|
|
84
|
+
|
|
85
|
+
@mcp.tool()
|
|
86
|
+
def add(a: int, b: int) -> int:
|
|
87
|
+
"""Add two numbers"""
|
|
88
|
+
return a + b
|
|
89
|
+
|
|
90
|
+
middleware = EunomiaMcpMiddleware()
|
|
91
|
+
app = mcp.add_middleware(middleware)
|
|
92
|
+
|
|
93
|
+
if __name__ == "__main__":
|
|
94
|
+
mcp.run()
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Configure Access Policies
|
|
98
|
+
|
|
99
|
+
Use the `eunomia-mcp` CLI in your terminal to manage your authorization policies:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# Create a default policy configuration file
|
|
103
|
+
eunomia-mcp init
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
This creates a policy file you can customize to control access to your MCP tools and resources.
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# Once ready, validate your policy
|
|
110
|
+
eunomia-mcp validate mcp_policies.json
|
|
111
|
+
|
|
112
|
+
# And push it to the Eunomia server
|
|
113
|
+
eunomia-mcp push mcp_policies.json
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Run the Server
|
|
117
|
+
|
|
118
|
+
Start your FastMCP server normally:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
python server.py
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
The middleware will now intercept all MCP requests and check them against your policies. Requests include agent identification through headers like `X-Agent-ID`, `X-User-ID`, `User-Agent`, or `Authorization` and an automatic mapping of MCP methods to authorization resources and actions.
|
|
125
|
+
|
|
126
|
+
<Tip>
|
|
127
|
+
For detailed policy configuration, custom authentication, and advanced
|
|
128
|
+
deployment patterns, visit the [Eunomia MCP Middleware
|
|
129
|
+
repository][eunomia-mcp-github].
|
|
130
|
+
</Tip>
|
|
131
|
+
|
|
132
|
+
[eunomia-github]: https://github.com/whataboutyou-ai/eunomia
|
|
133
|
+
[eunomia-mcp-github]: https://github.com/whataboutyou-ai/eunomia/tree/main/pkgs/extensions/mcp
|
|
134
|
+
[fastmcp-middleare]: /servers/middleware
|
|
@@ -98,23 +98,25 @@ Generate configuration and output to stdout (useful for piping):
|
|
|
98
98
|
fastmcp install mcp-json server.py
|
|
99
99
|
```
|
|
100
100
|
|
|
101
|
-
This outputs the server configuration JSON
|
|
101
|
+
This outputs the server configuration JSON with the server name as the root key:
|
|
102
102
|
|
|
103
103
|
```json
|
|
104
104
|
{
|
|
105
|
-
"
|
|
106
|
-
|
|
107
|
-
"
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
105
|
+
"My Server": {
|
|
106
|
+
"command": "uv",
|
|
107
|
+
"args": [
|
|
108
|
+
"run",
|
|
109
|
+
"--with",
|
|
110
|
+
"fastmcp",
|
|
111
|
+
"fastmcp",
|
|
112
|
+
"run",
|
|
113
|
+
"/absolute/path/to/server.py"
|
|
114
|
+
]
|
|
115
|
+
}
|
|
114
116
|
}
|
|
115
117
|
```
|
|
116
118
|
|
|
117
|
-
To use this in a client configuration file, add it
|
|
119
|
+
To use this in a client configuration file, add it to the `mcpServers` object in your client's configuration:
|
|
118
120
|
|
|
119
121
|
```json
|
|
120
122
|
{
|
|
@@ -134,6 +136,10 @@ To use this in a client configuration file, add it under a server name in the `m
|
|
|
134
136
|
}
|
|
135
137
|
```
|
|
136
138
|
|
|
139
|
+
<Note>
|
|
140
|
+
Different MCP clients may have specific configuration requirements or formatting needs. Always consult your client's documentation to ensure proper integration.
|
|
141
|
+
</Note>
|
|
142
|
+
|
|
137
143
|
## Configuration Options
|
|
138
144
|
|
|
139
145
|
### Server Naming
|
|
@@ -177,8 +183,8 @@ mcp = FastMCP(
|
|
|
177
183
|
```bash
|
|
178
184
|
# Individual environment variables
|
|
179
185
|
fastmcp install mcp-json server.py \
|
|
180
|
-
--env
|
|
181
|
-
--env
|
|
186
|
+
--env API_KEY=your-secret-key \
|
|
187
|
+
--env DEBUG=true
|
|
182
188
|
|
|
183
189
|
# Load from .env file
|
|
184
190
|
fastmcp install mcp-json server.py --env-file .env
|
|
@@ -219,15 +225,17 @@ fastmcp install mcp-json dice_server.py
|
|
|
219
225
|
Output:
|
|
220
226
|
```json
|
|
221
227
|
{
|
|
222
|
-
"
|
|
223
|
-
|
|
224
|
-
"
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
228
|
+
"Dice Server": {
|
|
229
|
+
"command": "uv",
|
|
230
|
+
"args": [
|
|
231
|
+
"run",
|
|
232
|
+
"--with",
|
|
233
|
+
"fastmcp",
|
|
234
|
+
"fastmcp",
|
|
235
|
+
"run",
|
|
236
|
+
"/home/user/dice_server.py"
|
|
237
|
+
]
|
|
238
|
+
}
|
|
231
239
|
}
|
|
232
240
|
```
|
|
233
241
|
|
|
@@ -238,29 +246,31 @@ fastmcp install mcp-json api_server.py \
|
|
|
238
246
|
--name "Production API Server" \
|
|
239
247
|
--with requests \
|
|
240
248
|
--with python-dotenv \
|
|
241
|
-
--env
|
|
242
|
-
--env
|
|
249
|
+
--env API_BASE_URL=https://api.example.com \
|
|
250
|
+
--env TIMEOUT=30
|
|
243
251
|
```
|
|
244
252
|
|
|
245
253
|
Output:
|
|
246
254
|
```json
|
|
247
255
|
{
|
|
248
|
-
"
|
|
249
|
-
|
|
250
|
-
"
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
"
|
|
263
|
-
|
|
256
|
+
"Production API Server": {
|
|
257
|
+
"command": "uv",
|
|
258
|
+
"args": [
|
|
259
|
+
"run",
|
|
260
|
+
"--with",
|
|
261
|
+
"fastmcp",
|
|
262
|
+
"--with",
|
|
263
|
+
"python-dotenv",
|
|
264
|
+
"--with",
|
|
265
|
+
"requests",
|
|
266
|
+
"fastmcp",
|
|
267
|
+
"run",
|
|
268
|
+
"/home/user/api_server.py"
|
|
269
|
+
],
|
|
270
|
+
"env": {
|
|
271
|
+
"API_BASE_URL": "https://api.example.com",
|
|
272
|
+
"TIMEOUT": "30"
|
|
273
|
+
}
|
|
264
274
|
}
|
|
265
275
|
}
|
|
266
276
|
```
|
|
@@ -278,7 +288,7 @@ Use in shell scripts:
|
|
|
278
288
|
```bash
|
|
279
289
|
#!/bin/bash
|
|
280
290
|
CONFIG=$(fastmcp install mcp-json server.py --name "CI Server")
|
|
281
|
-
echo "$CONFIG" | jq '.command'
|
|
291
|
+
echo "$CONFIG" | jq '."CI Server".command'
|
|
282
292
|
# Output: "uv"
|
|
283
293
|
```
|
|
284
294
|
|
|
@@ -306,22 +316,22 @@ Use the JSON configuration with any application that supports the MCP protocol
|
|
|
306
316
|
|
|
307
317
|
## Configuration Format
|
|
308
318
|
|
|
309
|
-
The generated configuration
|
|
319
|
+
The generated configuration outputs a server object with the server name as the root key:
|
|
310
320
|
|
|
311
321
|
```json
|
|
312
322
|
{
|
|
313
|
-
"
|
|
314
|
-
"<
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
"
|
|
318
|
-
"<ENV_VAR>": "<value>"
|
|
319
|
-
}
|
|
323
|
+
"<server-name>": {
|
|
324
|
+
"command": "<executable>",
|
|
325
|
+
"args": ["<arg1>", "<arg2>", "..."],
|
|
326
|
+
"env": {
|
|
327
|
+
"<ENV_VAR>": "<value>"
|
|
320
328
|
}
|
|
321
329
|
}
|
|
322
330
|
}
|
|
323
331
|
```
|
|
324
332
|
|
|
333
|
+
To use this in an MCP client, add it to the client's `mcpServers` configuration object.
|
|
334
|
+
|
|
325
335
|
**Fields:**
|
|
326
336
|
- `command`: The executable to run (always `uv` for FastMCP servers)
|
|
327
337
|
- `args`: Command-line arguments including dependencies and server path
|