fastmcp 2.10.0__tar.gz → 2.10.1__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.0 → fastmcp-2.10.1}/PKG-INFO +1 -1
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/changelog.mdx +102 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/patterns/cli.mdx +0 -1
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/cli/cli.py +1 -16
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/cli/run.py +0 -4
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/server.py +4 -49
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/cli/test_cli.py +2 -3
- fastmcp-2.10.0/src/fastmcp/utilities/cli.py +0 -106
- {fastmcp-2.10.0 → fastmcp-2.10.1}/.ccignore +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/.cursor/rules/core-mcp-objects.mdc +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/.github/dependabot.yml +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/.github/labeler.yml +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/.github/release.yml +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/.github/workflows/labeler.yml +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/.github/workflows/publish.yml +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/.github/workflows/run-static.yml +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/.github/workflows/run-tests.yml +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/.gitignore +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/.pre-commit-config.yaml +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/AGENTS.md +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/CLAUDE.md +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/LICENSE +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/README.md +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/Windows_Notes.md +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/.cursor/rules/mintlify.mdc +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/assets/demo-inspector.png +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/assets/favicon.ico +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/assets/images/tutorial-rest-api-result.png +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/assets/logo.png +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/assets/updates/release-2-7.png +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/clients/auth/bearer.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/clients/auth/oauth.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/clients/client.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/clients/elicitation.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/clients/logging.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/clients/messages.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/clients/progress.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/clients/prompts.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/clients/resources.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/clients/roots.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/clients/sampling.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/clients/tools.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/clients/transports.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/community/README.md +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/community/showcase.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/css/banner.css +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/css/python-sdk.css +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/css/style.css +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/css/version-badge.css +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/deployment/asgi.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/deployment/running-server.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/docs.json +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/getting-started/installation.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/getting-started/quickstart.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/getting-started/welcome.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/integrations/anthropic.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/integrations/chatgpt.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/integrations/claude-code.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/integrations/claude-desktop.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/integrations/contrib.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/integrations/eunomia-authorization.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/integrations/gemini.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/integrations/openai.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/patterns/decorating-methods.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/patterns/http-requests.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/patterns/testing.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/patterns/tool-transformation.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-cli-__init__.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-cli-claude.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-cli-cli.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-cli-run.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-client-__init__.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-client-auth-__init__.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-client-auth-bearer.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-client-auth-oauth.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-client-client.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-client-logging.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-client-oauth_callback.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-client-progress.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-client-roots.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-client-sampling.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-client-transports.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-exceptions.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-prompts-__init__.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-prompts-prompt.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-resources-__init__.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-resources-resource.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-resources-resource_manager.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-resources-template.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-resources-types.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-__init__.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-auth-__init__.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-auth-auth.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-auth-providers-__init__.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-auth-providers-bearer_env.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-context.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-dependencies.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-http.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-middleware-__init__.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-middleware-error_handling.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-middleware-logging.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-middleware-rate_limiting.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-middleware-timing.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-middleware.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-openapi.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-proxy.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-server-server.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-settings.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-tools-__init__.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-tools-tool.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-tools-tool_manager.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-tools-tool_transform.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-utilities-__init__.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-utilities-cache.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-utilities-components.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-utilities-exceptions.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-utilities-http.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-utilities-inspect.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-utilities-json_schema.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-utilities-logging.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-utilities-openapi.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-utilities-tests.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/python-sdk/fastmcp-utilities-types.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/servers/auth/bearer.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/servers/composition.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/servers/context.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/servers/elicitation.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/servers/logging.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/servers/middleware.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/servers/openapi.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/servers/progress.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/servers/prompts.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/servers/proxy.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/servers/resources.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/servers/sampling.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/servers/server.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/servers/tools.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/snippets/version-badge.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/snippets/youtube-embed.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/tutorials/create-mcp-server.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/tutorials/mcp.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/tutorials/rest-api.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/docs/updates.mdx +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/atproto_mcp/README.md +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/atproto_mcp/demo.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/atproto_mcp/pyproject.toml +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/atproto_mcp/src/atproto_mcp/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/atproto_mcp/src/atproto_mcp/__main__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_client.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_posts.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_profile.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_read.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_social.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/atproto_mcp/src/atproto_mcp/py.typed +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/atproto_mcp/src/atproto_mcp/server.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/atproto_mcp/src/atproto_mcp/settings.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/atproto_mcp/src/atproto_mcp/types.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/complex_inputs.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/config_server.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/desktop.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/echo.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/get_file.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/in_memory_proxy_example.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/memory.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/mount_example.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/sampling.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/screenshot.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/serializer.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/simple_echo.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/smart_home/README.md +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/smart_home/pyproject.toml +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/smart_home/src/smart_home/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/smart_home/src/smart_home/__main__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/smart_home/src/smart_home/hub.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/smart_home/src/smart_home/lights/server.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/smart_home/src/smart_home/py.typed +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/smart_home/src/smart_home/settings.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/smart_home/uv.lock +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/tags_example.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/examples/text_me.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/justfile +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/pyproject.toml +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/cli/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/cli/claude.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/client/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/client/auth/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/client/auth/bearer.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/client/auth/oauth.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/client/client.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/client/elicitation.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/client/logging.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/client/messages.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/client/oauth_callback.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/client/progress.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/client/roots.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/client/sampling.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/client/transports.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/contrib/README.md +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/contrib/component_manager/README.md +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/contrib/component_manager/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/contrib/component_manager/component_service.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/contrib/component_manager/example.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/exceptions.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/prompts/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/prompts/prompt.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/prompts/prompt_manager.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/py.typed +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/resources/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/resources/resource.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/resources/resource_manager.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/resources/template.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/resources/types.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/auth/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/auth/auth.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/auth/providers/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/auth/providers/bearer.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/auth/providers/bearer_env.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/auth/providers/in_memory.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/context.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/dependencies.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/elicitation.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/http.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/low_level.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/middleware/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/middleware/error_handling.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/middleware/logging.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/middleware/middleware.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/middleware/rate_limiting.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/middleware/timing.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/openapi.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/server/proxy.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/settings.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/tools/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/tools/tool.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/tools/tool_manager.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/tools/tool_transform.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/utilities/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/utilities/cache.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/utilities/components.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/utilities/exceptions.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/utilities/http.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/utilities/inspect.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/utilities/json_schema.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/utilities/json_schema_type.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/utilities/logging.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/utilities/mcp_config.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/utilities/openapi.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/utilities/tests.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/src/fastmcp/utilities/types.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/auth/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/auth/providers/test_bearer.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/auth/providers/test_bearer_env.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/auth/providers/test_token_verifier.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/auth/test_oauth_client.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/cli/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/cli/test_run.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/client/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/client/test_client.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/client/test_elicitation.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/client/test_logs.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/client/test_notifications.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/client/test_openapi.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/client/test_progress.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/client/test_roots.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/client/test_sampling.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/client/test_sse.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/client/test_stdio.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/client/test_streamable_http.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/conftest.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/contrib/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/contrib/test_bulk_tool_caller.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/contrib/test_component_manager.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/contrib/test_mcp_mixin.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/deprecated/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/deprecated/test_deprecated.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/deprecated/test_mount_import_arg_order.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/deprecated/test_mount_separators.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/deprecated/test_resource_prefixes.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/deprecated/test_route_type_ignore.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/deprecated/test_settings.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/prompts/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/prompts/test_prompt.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/prompts/test_prompt_manager.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/resources/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/resources/test_file_resources.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/resources/test_function_resources.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/resources/test_resource_manager.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/resources/test_resource_template.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/resources/test_resources.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/http/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/http/test_auth_setup.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/http/test_bearer_auth_backend.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/http/test_custom_routes.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/http/test_http_dependencies.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/http/test_http_middleware.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/middleware/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/middleware/test_error_handling.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/middleware/test_logging.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/middleware/test_middleware.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/middleware/test_rate_limiting.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/middleware/test_timing.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/openapi/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/openapi/test_explode_integration.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/openapi/test_openapi.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/openapi/test_openapi_path_parameters.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/openapi/test_route_map_fn.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/test_app_state.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/test_auth_integration.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/test_context.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/test_file_server.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/test_import_server.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/test_logging.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/test_mount.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/test_proxy.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/test_resource_prefix_formats.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/test_run_server.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/test_server.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/test_server_interactions.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/test_tool_annotations.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/server/test_tool_exclude_args.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/test_examples.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/test_servers/fastmcp_server.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/test_servers/sse.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/test_servers/stdio.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/tools/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/tools/test_tool.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/tools/test_tool_manager.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/tools/test_tool_transform.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/utilities/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/utilities/openapi/conftest.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/utilities/openapi/test_openapi.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/utilities/openapi/test_openapi_advanced.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/utilities/openapi/test_openapi_fastapi.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/utilities/test_cache.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/utilities/test_inspect.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/utilities/test_json_schema.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/utilities/test_json_schema_type.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/utilities/test_logging.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/utilities/test_mcp_config.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/utilities/test_tests.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/utilities/test_typeadapter.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/tests/utilities/test_types.py +0 -0
- {fastmcp-2.10.0 → fastmcp-2.10.1}/uv.lock +0 -0
|
@@ -2,6 +2,108 @@
|
|
|
2
2
|
icon: "list-check"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
+
<Update label="v2.10.0" description="2024-07-01">
|
|
6
|
+
|
|
7
|
+
## [v2.10.0: Great Spec-tations](https://github.com/jlowin/fastmcp/releases/tag/v2.10.0)
|
|
8
|
+
|
|
9
|
+
FastMCP 2.10 brings full compliance with the 6/18/2025 MCP spec update, introducing elicitation support for dynamic server-client communication and output schemas for structured tool responses. Please note that due to these changes, this release also includes a breaking change to the return signature of `client.call_tool()`.
|
|
10
|
+
|
|
11
|
+
### Elicitation Support
|
|
12
|
+
Elicitation allows MCP servers to request additional information from clients during tool execution, enabling more interactive and dynamic server behavior. This opens up new possibilities for tools that need user input or confirmation during execution.
|
|
13
|
+
|
|
14
|
+
### Output Schemas
|
|
15
|
+
Tools can now define structured output schemas, ensuring that responses conform to expected formats and making tool integration more predictable and type-safe.
|
|
16
|
+
|
|
17
|
+
## What's Changed
|
|
18
|
+
### New Features 🎉
|
|
19
|
+
* MCP 6/18/25: Add output schema to tools by [@jlowin](https://github.com/jlowin) in [#901](https://github.com/jlowin/fastmcp/pull/901)
|
|
20
|
+
* MCP 6/18/25: Elicitation support by [@jlowin](https://github.com/jlowin) in [#889](https://github.com/jlowin/fastmcp/pull/889)
|
|
21
|
+
### Enhancements 🔧
|
|
22
|
+
* Update types + tests for SDK changes by [@jlowin](https://github.com/jlowin) in [#888](https://github.com/jlowin/fastmcp/pull/888)
|
|
23
|
+
* MCP 6/18/25: Update auth primitives by [@jlowin](https://github.com/jlowin) in [#966](https://github.com/jlowin/fastmcp/pull/966)
|
|
24
|
+
* Add OpenAPI extensions support to HTTPRoute by [@maddymanu](https://github.com/maddymanu) in [#977](https://github.com/jlowin/fastmcp/pull/977)
|
|
25
|
+
* Add title field support to FastMCP components by [@jlowin](https://github.com/jlowin) in [#982](https://github.com/jlowin/fastmcp/pull/982)
|
|
26
|
+
* Support implicit Elicitation acceptance by [@jlowin](https://github.com/jlowin) in [#983](https://github.com/jlowin/fastmcp/pull/983)
|
|
27
|
+
* Support 'no response' elicitation requests by [@jlowin](https://github.com/jlowin) in [#992](https://github.com/jlowin/fastmcp/pull/992)
|
|
28
|
+
* Add Support for Configurable Algorithms by [@sstene1](https://github.com/sstene1) in [#997](https://github.com/jlowin/fastmcp/pull/997)
|
|
29
|
+
### Fixes 🐞
|
|
30
|
+
* Improve stdio error handling to raise connection failures immediately by [@jlowin](https://github.com/jlowin) in [#984](https://github.com/jlowin/fastmcp/pull/984)
|
|
31
|
+
* Fix type hints for FunctionResource:fn by [@CfirTsabari](https://github.com/CfirTsabari) in [#986](https://github.com/jlowin/fastmcp/pull/986)
|
|
32
|
+
* Update link to OpenAI MCP example by [@mossbanay](https://github.com/mossbanay) in [#985](https://github.com/jlowin/fastmcp/pull/985)
|
|
33
|
+
* Fix output schema generation edge case by [@jlowin](https://github.com/jlowin) in [#995](https://github.com/jlowin/fastmcp/pull/995)
|
|
34
|
+
* Refactor array parameter formatting to reduce code duplication by [@jlowin](https://github.com/jlowin) in [#1007](https://github.com/jlowin/fastmcp/pull/1007)
|
|
35
|
+
* Fix OpenAPI array parameter explode handling by [@jlowin](https://github.com/jlowin) in [#1008](https://github.com/jlowin/fastmcp/pull/1008)
|
|
36
|
+
### Breaking Changes 🛫
|
|
37
|
+
* MCP 6/18/25: Upgrade to mcp 1.10 by [@jlowin](https://github.com/jlowin) in [#887](https://github.com/jlowin/fastmcp/pull/887)
|
|
38
|
+
### Docs 📚
|
|
39
|
+
* Update middleware imports and documentation by [@jlowin](https://github.com/jlowin) in [#999](https://github.com/jlowin/fastmcp/pull/999)
|
|
40
|
+
* Update OpenAI docs by [@jlowin](https://github.com/jlowin) in [#1001](https://github.com/jlowin/fastmcp/pull/1001)
|
|
41
|
+
* Add CLI banner by [@jlowin](https://github.com/jlowin) in [#1005](https://github.com/jlowin/fastmcp/pull/1005)
|
|
42
|
+
### Examples & Contrib 💡
|
|
43
|
+
* Component Manager by [@gorocode](https://github.com/gorocode) in [#976](https://github.com/jlowin/fastmcp/pull/976)
|
|
44
|
+
### Other Changes 🦾
|
|
45
|
+
* Minor auth improvements by [@jlowin](https://github.com/jlowin) in [#967](https://github.com/jlowin/fastmcp/pull/967)
|
|
46
|
+
* Add .ccignore for copychat by [@jlowin](https://github.com/jlowin) in [#1000](https://github.com/jlowin/fastmcp/pull/1000)
|
|
47
|
+
|
|
48
|
+
## New Contributors
|
|
49
|
+
* [@maddymanu](https://github.com/maddymanu) made their first contribution in [#977](https://github.com/jlowin/fastmcp/pull/977)
|
|
50
|
+
* [@github0hello](https://github.com/github0hello) made their first contribution in [#979](https://github.com/jlowin/fastmcp/pull/979)
|
|
51
|
+
* [@tommitt](https://github.com/tommitt) made their first contribution in [#975](https://github.com/jlowin/fastmcp/pull/975)
|
|
52
|
+
* [@CfirTsabari](https://github.com/CfirTsabari) made their first contribution in [#986](https://github.com/jlowin/fastmcp/pull/986)
|
|
53
|
+
* [@mossbanay](https://github.com/mossbanay) made their first contribution in [#985](https://github.com/jlowin/fastmcp/pull/985)
|
|
54
|
+
* [@sstene1](https://github.com/sstene1) made their first contribution in [#997](https://github.com/jlowin/fastmcp/pull/997)
|
|
55
|
+
|
|
56
|
+
**Full Changelog**: [v2.9.2...v2.10.0](https://github.com/jlowin/fastmcp/compare/v2.9.2...v2.10.0)
|
|
57
|
+
|
|
58
|
+
</Update>
|
|
59
|
+
|
|
60
|
+
<Update label="v2.9.2" description="2024-06-26">
|
|
61
|
+
|
|
62
|
+
## [v2.9.2: Safety Pin](https://github.com/jlowin/fastmcp/releases/tag/v2.9.2)
|
|
63
|
+
|
|
64
|
+
This is a patch release to pin `mcp` below 1.10, which includes changes related to the 6/18/2025 MCP spec update and could potentially break functionality for some FastMCP users.
|
|
65
|
+
|
|
66
|
+
## What's Changed
|
|
67
|
+
### Docs 📚
|
|
68
|
+
* Fix version badge for messages by [@jlowin](https://github.com/jlowin) in [#960](https://github.com/jlowin/fastmcp/pull/960)
|
|
69
|
+
### Dependencies 📦
|
|
70
|
+
* Pin mcp dependency by [@jlowin](https://github.com/jlowin) in [#962](https://github.com/jlowin/fastmcp/pull/962)
|
|
71
|
+
|
|
72
|
+
**Full Changelog**: [v2.9.1...v2.9.2](https://github.com/jlowin/fastmcp/compare/v2.9.1...v2.9.2)
|
|
73
|
+
|
|
74
|
+
</Update>
|
|
75
|
+
|
|
76
|
+
<Update label="v2.9.1" description="2024-06-26">
|
|
77
|
+
|
|
78
|
+
## [v2.9.1: Call Me Maybe](https://github.com/jlowin/fastmcp/releases/tag/v2.9.1)
|
|
79
|
+
|
|
80
|
+
FastMCP 2.9.1 introduces automatic MCP list change notifications, allowing servers to notify clients when tools, resources, or prompts are dynamically updated. This enables more responsive and adaptive MCP integrations.
|
|
81
|
+
|
|
82
|
+
## What's Changed
|
|
83
|
+
### New Features 🎉
|
|
84
|
+
* Add automatic MCP list change notifications and client message handling by [@jlowin](https://github.com/jlowin) in [#939](https://github.com/jlowin/fastmcp/pull/939)
|
|
85
|
+
### Enhancements 🔧
|
|
86
|
+
* Add debug logging to bearer token authentication by [@jlowin](https://github.com/jlowin) in [#952](https://github.com/jlowin/fastmcp/pull/952)
|
|
87
|
+
### Fixes 🐞
|
|
88
|
+
* Fix duplicate error logging in exception handlers by [@jlowin](https://github.com/jlowin) in [#938](https://github.com/jlowin/fastmcp/pull/938)
|
|
89
|
+
* Fix parameter location enum handling in OpenAPI parser by [@jlowin](https://github.com/jlowin) in [#953](https://github.com/jlowin/fastmcp/pull/953)
|
|
90
|
+
* Fix external schema reference handling in OpenAPI parser by [@jlowin](https://github.com/jlowin) in [#954](https://github.com/jlowin/fastmcp/pull/954)
|
|
91
|
+
### Docs 📚
|
|
92
|
+
* Update changelog for 2.9 release by [@jlowin](https://github.com/jlowin) in [#929](https://github.com/jlowin/fastmcp/pull/929)
|
|
93
|
+
* Regenerate API references by [@zzstoatzz](https://github.com/zzstoatzz) in [#935](https://github.com/jlowin/fastmcp/pull/935)
|
|
94
|
+
* Regenerate API references by [@zzstoatzz](https://github.com/zzstoatzz) in [#947](https://github.com/jlowin/fastmcp/pull/947)
|
|
95
|
+
* Regenerate API references by [@zzstoatzz](https://github.com/zzstoatzz) in [#949](https://github.com/jlowin/fastmcp/pull/949)
|
|
96
|
+
### Examples & Contrib 💡
|
|
97
|
+
* Add `create_thread` tool to bsky MCP server by [@zzstoatzz](https://github.com/zzstoatzz) in [#927](https://github.com/jlowin/fastmcp/pull/927)
|
|
98
|
+
* Update `mount_example.py` to work with current fastmcp API by [@rajephon](https://github.com/rajephon) in [#957](https://github.com/jlowin/fastmcp/pull/957)
|
|
99
|
+
|
|
100
|
+
## New Contributors
|
|
101
|
+
* [@rajephon](https://github.com/rajephon) made their first contribution in [#957](https://github.com/jlowin/fastmcp/pull/957)
|
|
102
|
+
|
|
103
|
+
**Full Changelog**: [v2.9.0...v2.9.1](https://github.com/jlowin/fastmcp/compare/v2.9.0...v2.9.1)
|
|
104
|
+
|
|
105
|
+
</Update>
|
|
106
|
+
|
|
5
107
|
<Update label="v2.9.0" description="2024-06-23">
|
|
6
108
|
|
|
7
109
|
## [v2.9.0: Stuck in the Middleware With You](https://github.com/jlowin/fastmcp/releases/tag/v2.9.0)
|
|
@@ -46,7 +46,6 @@ This command runs the server directly in your current Python environment. You ar
|
|
|
46
46
|
| Host | `--host` | Host to bind to when using http transport (default: 127.0.0.1) |
|
|
47
47
|
| Port | `--port`, `-p` | Port to bind to when using http transport (default: 8000) |
|
|
48
48
|
| Log Level | `--log-level`, `-l` | Log level (DEBUG, INFO, WARNING, ERROR, CRITICAL) |
|
|
49
|
-
| No Banner | `--no-banner` | Disable the startup banner display |
|
|
50
49
|
|
|
51
50
|
|
|
52
51
|
#### Server Specification
|
|
@@ -64,7 +64,6 @@ def _build_uv_command(
|
|
|
64
64
|
server_spec: str,
|
|
65
65
|
with_editable: Path | None = None,
|
|
66
66
|
with_packages: list[str] | None = None,
|
|
67
|
-
no_banner: bool = False,
|
|
68
67
|
) -> list[str]:
|
|
69
68
|
"""Build the uv run command that runs a MCP server through mcp run."""
|
|
70
69
|
cmd = ["uv"]
|
|
@@ -81,10 +80,6 @@ def _build_uv_command(
|
|
|
81
80
|
|
|
82
81
|
# Add mcp run command
|
|
83
82
|
cmd.extend(["fastmcp", "run", server_spec])
|
|
84
|
-
|
|
85
|
-
if no_banner:
|
|
86
|
-
cmd.append("--no-banner")
|
|
87
|
-
|
|
88
83
|
return cmd
|
|
89
84
|
|
|
90
85
|
|
|
@@ -197,9 +192,7 @@ def dev(
|
|
|
197
192
|
if inspector_version:
|
|
198
193
|
inspector_cmd += f"@{inspector_version}"
|
|
199
194
|
|
|
200
|
-
uv_cmd = _build_uv_command(
|
|
201
|
-
server_spec, with_editable, with_packages, no_banner=True
|
|
202
|
-
)
|
|
195
|
+
uv_cmd = _build_uv_command(server_spec, with_editable, with_packages)
|
|
203
196
|
|
|
204
197
|
# Run the MCP Inspector command with shell=True on Windows
|
|
205
198
|
shell = sys.platform == "win32"
|
|
@@ -268,13 +261,6 @@ def run(
|
|
|
268
261
|
help="Log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)",
|
|
269
262
|
),
|
|
270
263
|
] = None,
|
|
271
|
-
no_banner: Annotated[
|
|
272
|
-
bool,
|
|
273
|
-
typer.Option(
|
|
274
|
-
"--no-banner",
|
|
275
|
-
help="Don't show the server banner",
|
|
276
|
-
),
|
|
277
|
-
] = False,
|
|
278
264
|
) -> None:
|
|
279
265
|
"""Run a MCP server or connect to a remote one.
|
|
280
266
|
|
|
@@ -311,7 +297,6 @@ def run(
|
|
|
311
297
|
port=port,
|
|
312
298
|
log_level=log_level,
|
|
313
299
|
server_args=server_args,
|
|
314
|
-
show_banner=not no_banner,
|
|
315
300
|
)
|
|
316
301
|
except Exception as e:
|
|
317
302
|
logger.error(
|
|
@@ -169,7 +169,6 @@ def run_command(
|
|
|
169
169
|
port: int | None = None,
|
|
170
170
|
log_level: str | None = None,
|
|
171
171
|
server_args: list[str] | None = None,
|
|
172
|
-
show_banner: bool = True,
|
|
173
172
|
) -> None:
|
|
174
173
|
"""Run a MCP server or connect to a remote one.
|
|
175
174
|
|
|
@@ -202,9 +201,6 @@ def run_command(
|
|
|
202
201
|
if log_level:
|
|
203
202
|
kwargs["log_level"] = log_level
|
|
204
203
|
|
|
205
|
-
if not show_banner:
|
|
206
|
-
kwargs["show_banner"] = False
|
|
207
|
-
|
|
208
204
|
try:
|
|
209
205
|
server.run(**kwargs)
|
|
210
206
|
except Exception as e:
|
|
@@ -60,7 +60,6 @@ from fastmcp.settings import Settings
|
|
|
60
60
|
from fastmcp.tools import ToolManager
|
|
61
61
|
from fastmcp.tools.tool import FunctionTool, Tool, ToolResult
|
|
62
62
|
from fastmcp.utilities.cache import TimedCache
|
|
63
|
-
from fastmcp.utilities.cli import print_server_banner
|
|
64
63
|
from fastmcp.utilities.components import FastMCPComponent
|
|
65
64
|
from fastmcp.utilities.logging import get_logger
|
|
66
65
|
from fastmcp.utilities.mcp_config import MCPConfig
|
|
@@ -286,7 +285,6 @@ class FastMCP(Generic[LifespanResultT]):
|
|
|
286
285
|
async def run_async(
|
|
287
286
|
self,
|
|
288
287
|
transport: Transport | None = None,
|
|
289
|
-
show_banner: bool = True,
|
|
290
288
|
**transport_kwargs: Any,
|
|
291
289
|
) -> None:
|
|
292
290
|
"""Run the FastMCP server asynchronously.
|
|
@@ -300,23 +298,15 @@ class FastMCP(Generic[LifespanResultT]):
|
|
|
300
298
|
raise ValueError(f"Unknown transport: {transport}")
|
|
301
299
|
|
|
302
300
|
if transport == "stdio":
|
|
303
|
-
await self.run_stdio_async(
|
|
304
|
-
show_banner=show_banner,
|
|
305
|
-
**transport_kwargs,
|
|
306
|
-
)
|
|
301
|
+
await self.run_stdio_async(**transport_kwargs)
|
|
307
302
|
elif transport in {"http", "sse", "streamable-http"}:
|
|
308
|
-
await self.run_http_async(
|
|
309
|
-
transport=transport,
|
|
310
|
-
show_banner=show_banner,
|
|
311
|
-
**transport_kwargs,
|
|
312
|
-
)
|
|
303
|
+
await self.run_http_async(transport=transport, **transport_kwargs)
|
|
313
304
|
else:
|
|
314
305
|
raise ValueError(f"Unknown transport: {transport}")
|
|
315
306
|
|
|
316
307
|
def run(
|
|
317
308
|
self,
|
|
318
309
|
transport: Transport | None = None,
|
|
319
|
-
show_banner: bool = True,
|
|
320
310
|
**transport_kwargs: Any,
|
|
321
311
|
) -> None:
|
|
322
312
|
"""Run the FastMCP server. Note this is a synchronous function.
|
|
@@ -325,14 +315,7 @@ class FastMCP(Generic[LifespanResultT]):
|
|
|
325
315
|
transport: Transport protocol to use ("stdio", "sse", or "streamable-http")
|
|
326
316
|
"""
|
|
327
317
|
|
|
328
|
-
anyio.run(
|
|
329
|
-
partial(
|
|
330
|
-
self.run_async,
|
|
331
|
-
transport,
|
|
332
|
-
show_banner=show_banner,
|
|
333
|
-
**transport_kwargs,
|
|
334
|
-
)
|
|
335
|
-
)
|
|
318
|
+
anyio.run(partial(self.run_async, transport, **transport_kwargs))
|
|
336
319
|
|
|
337
320
|
def _setup_handlers(self) -> None:
|
|
338
321
|
"""Set up core MCP protocol handlers."""
|
|
@@ -1338,16 +1321,8 @@ class FastMCP(Generic[LifespanResultT]):
|
|
|
1338
1321
|
enabled=enabled,
|
|
1339
1322
|
)
|
|
1340
1323
|
|
|
1341
|
-
async def run_stdio_async(self
|
|
1324
|
+
async def run_stdio_async(self) -> None:
|
|
1342
1325
|
"""Run the server using stdio transport."""
|
|
1343
|
-
|
|
1344
|
-
# Display server banner
|
|
1345
|
-
if show_banner:
|
|
1346
|
-
print_server_banner(
|
|
1347
|
-
server=self,
|
|
1348
|
-
transport="stdio",
|
|
1349
|
-
)
|
|
1350
|
-
|
|
1351
1326
|
async with stdio_server() as (read_stream, write_stream):
|
|
1352
1327
|
logger.info(f"Starting MCP server {self.name!r} with transport 'stdio'")
|
|
1353
1328
|
await self._mcp_server.run(
|
|
@@ -1360,7 +1335,6 @@ class FastMCP(Generic[LifespanResultT]):
|
|
|
1360
1335
|
|
|
1361
1336
|
async def run_http_async(
|
|
1362
1337
|
self,
|
|
1363
|
-
show_banner: bool = True,
|
|
1364
1338
|
transport: Literal["http", "streamable-http", "sse"] = "http",
|
|
1365
1339
|
host: str | None = None,
|
|
1366
1340
|
port: int | None = None,
|
|
@@ -1379,7 +1353,6 @@ class FastMCP(Generic[LifespanResultT]):
|
|
|
1379
1353
|
path: Path for the endpoint (defaults to settings.streamable_http_path or settings.sse_path)
|
|
1380
1354
|
uvicorn_config: Additional configuration for the Uvicorn server
|
|
1381
1355
|
"""
|
|
1382
|
-
|
|
1383
1356
|
host = host or self._deprecated_settings.host
|
|
1384
1357
|
port = port or self._deprecated_settings.port
|
|
1385
1358
|
default_log_level_to_use = (
|
|
@@ -1388,23 +1361,6 @@ class FastMCP(Generic[LifespanResultT]):
|
|
|
1388
1361
|
|
|
1389
1362
|
app = self.http_app(path=path, transport=transport, middleware=middleware)
|
|
1390
1363
|
|
|
1391
|
-
# Get the path for the server URL
|
|
1392
|
-
server_path = (
|
|
1393
|
-
app.state.path.lstrip("/")
|
|
1394
|
-
if hasattr(app, "state") and hasattr(app.state, "path")
|
|
1395
|
-
else path or ""
|
|
1396
|
-
)
|
|
1397
|
-
|
|
1398
|
-
# Display server banner
|
|
1399
|
-
if show_banner:
|
|
1400
|
-
print_server_banner(
|
|
1401
|
-
server=self,
|
|
1402
|
-
transport=transport,
|
|
1403
|
-
host=host,
|
|
1404
|
-
port=port,
|
|
1405
|
-
path=server_path,
|
|
1406
|
-
)
|
|
1407
|
-
|
|
1408
1364
|
_uvicorn_config_from_user = uvicorn_config or {}
|
|
1409
1365
|
|
|
1410
1366
|
config_kwargs: dict[str, Any] = {
|
|
@@ -1422,7 +1378,6 @@ class FastMCP(Generic[LifespanResultT]):
|
|
|
1422
1378
|
logger.info(
|
|
1423
1379
|
f"Starting MCP server {self.name!r} with transport {transport!r} on http://{host}:{port}/{path}"
|
|
1424
1380
|
)
|
|
1425
|
-
|
|
1426
1381
|
await server.serve()
|
|
1427
1382
|
|
|
1428
1383
|
async def run_sse_async(
|
|
@@ -209,9 +209,9 @@ class TestDevCommand:
|
|
|
209
209
|
assert result.exit_code == 0
|
|
210
210
|
mock_run.assert_called_once()
|
|
211
211
|
|
|
212
|
-
# Check dependencies were passed correctly
|
|
212
|
+
# Check dependencies were passed correctly
|
|
213
213
|
mock_build_uv.assert_called_once_with(
|
|
214
|
-
str(temp_python_file), None, ["extra_dep"]
|
|
214
|
+
str(temp_python_file), None, ["extra_dep"]
|
|
215
215
|
)
|
|
216
216
|
|
|
217
217
|
def test_dev_command_with_ui_port(self, temp_python_file):
|
|
@@ -468,5 +468,4 @@ class TestRunCommand:
|
|
|
468
468
|
port=None,
|
|
469
469
|
log_level=None,
|
|
470
470
|
server_args=["--config", "config.json"],
|
|
471
|
-
show_banner=True,
|
|
472
471
|
)
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from importlib.metadata import version
|
|
4
|
-
from typing import TYPE_CHECKING, Any
|
|
5
|
-
|
|
6
|
-
from rich.console import Console, Group
|
|
7
|
-
from rich.panel import Panel
|
|
8
|
-
from rich.table import Table
|
|
9
|
-
from rich.text import Text
|
|
10
|
-
|
|
11
|
-
import fastmcp
|
|
12
|
-
|
|
13
|
-
if TYPE_CHECKING:
|
|
14
|
-
from typing import Literal
|
|
15
|
-
|
|
16
|
-
from fastmcp import FastMCP
|
|
17
|
-
|
|
18
|
-
LOGO_ASCII = r"""
|
|
19
|
-
_ __ ___ ______ __ __ _____________ ____ ____
|
|
20
|
-
_ __ ___ / ____/___ ______/ /_/ |/ / ____/ __ \ |___ \ / __ \
|
|
21
|
-
_ __ ___ / /_ / __ `/ ___/ __/ /|_/ / / / /_/ / ___/ / / / / /
|
|
22
|
-
_ __ ___ / __/ / /_/ (__ ) /_/ / / / /___/ ____/ / __/_/ /_/ /
|
|
23
|
-
_ __ ___ /_/ \__,_/____/\__/_/ /_/\____/_/ /_____(_)____/
|
|
24
|
-
|
|
25
|
-
""".lstrip("\n")
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
def print_server_banner(
|
|
29
|
-
server: FastMCP[Any],
|
|
30
|
-
transport: Literal["stdio", "http", "sse", "streamable-http"],
|
|
31
|
-
*,
|
|
32
|
-
host: str | None = None,
|
|
33
|
-
port: int | None = None,
|
|
34
|
-
path: str | None = None,
|
|
35
|
-
) -> None:
|
|
36
|
-
"""Print a formatted banner with server information and logo.
|
|
37
|
-
|
|
38
|
-
Args:
|
|
39
|
-
transport: The transport protocol being used
|
|
40
|
-
server_name: Optional server name to display
|
|
41
|
-
host: Host address (for HTTP transports)
|
|
42
|
-
port: Port number (for HTTP transports)
|
|
43
|
-
path: Server path (for HTTP transports)
|
|
44
|
-
"""
|
|
45
|
-
|
|
46
|
-
console = Console()
|
|
47
|
-
|
|
48
|
-
# Create the logo text
|
|
49
|
-
logo_text = Text(LOGO_ASCII, style="bold green")
|
|
50
|
-
|
|
51
|
-
# Create the information table
|
|
52
|
-
info_table = Table.grid(padding=(0, 1))
|
|
53
|
-
info_table.add_column(style="bold cyan", justify="left")
|
|
54
|
-
info_table.add_column(style="white", justify="left")
|
|
55
|
-
|
|
56
|
-
match transport:
|
|
57
|
-
case "http" | "streamable-http":
|
|
58
|
-
display_transport = "Streamable-HTTP"
|
|
59
|
-
case "sse":
|
|
60
|
-
display_transport = "SSE"
|
|
61
|
-
case "stdio":
|
|
62
|
-
display_transport = "STDIO"
|
|
63
|
-
|
|
64
|
-
info_table.add_row("Transport:", display_transport)
|
|
65
|
-
|
|
66
|
-
# Show connection info based on transport
|
|
67
|
-
if transport in ("http", "streamable-http", "sse"):
|
|
68
|
-
if host and port:
|
|
69
|
-
server_url = f"http://{host}:{port}"
|
|
70
|
-
if path:
|
|
71
|
-
server_url += f"/{path.lstrip('/')}"
|
|
72
|
-
info_table.add_row("Server URL:", server_url)
|
|
73
|
-
|
|
74
|
-
# Add documentation link
|
|
75
|
-
info_table.add_row()
|
|
76
|
-
info_table.add_row("Docs:", "https://gofastmcp.com")
|
|
77
|
-
info_table.add_row("Hosting:", "https://fastmcp.cloud")
|
|
78
|
-
|
|
79
|
-
# Add version information with explicit style overrides
|
|
80
|
-
info_table.add_row()
|
|
81
|
-
info_table.add_row(
|
|
82
|
-
"FastMCP version:",
|
|
83
|
-
Text(fastmcp.__version__, style="dim white", no_wrap=True),
|
|
84
|
-
)
|
|
85
|
-
info_table.add_row(
|
|
86
|
-
"MCP version:",
|
|
87
|
-
Text(version("mcp"), style="dim white", no_wrap=True),
|
|
88
|
-
)
|
|
89
|
-
# Create panel with logo and information using Group
|
|
90
|
-
panel_content = Group(logo_text, "", info_table)
|
|
91
|
-
|
|
92
|
-
# Use server name in title if provided
|
|
93
|
-
title = "FastMCP 2.0"
|
|
94
|
-
if server.name != "FastMCP":
|
|
95
|
-
title += f" - {server.name}"
|
|
96
|
-
|
|
97
|
-
panel = Panel(
|
|
98
|
-
panel_content,
|
|
99
|
-
title=title,
|
|
100
|
-
title_align="left",
|
|
101
|
-
border_style="dim",
|
|
102
|
-
padding=(2, 10),
|
|
103
|
-
expand=False,
|
|
104
|
-
)
|
|
105
|
-
|
|
106
|
-
console.print(panel)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|