fastmcp 2.13.0rc3__tar.gz → 2.13.0.2__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.
Files changed (660) hide show
  1. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.github/workflows/run-tests.yml +25 -0
  2. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/PKG-INFO +3 -3
  3. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/changelog.mdx +34 -0
  4. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/docs.json +26 -12
  5. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/azure.mdx +11 -3
  6. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-cli-cli.mdx +1 -1
  7. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-resources-types.mdx +9 -9
  8. fastmcp-2.13.0.2/docs/python-sdk/fastmcp-server-auth-jwt_issuer.mdx +104 -0
  9. fastmcp-2.13.0.2/docs/python-sdk/fastmcp-server-auth-middleware.mdx +26 -0
  10. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-oauth_proxy.mdx +26 -24
  11. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-oidc_proxy.mdx +2 -2
  12. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-providers-auth0.mdx +1 -1
  13. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-providers-aws.mdx +4 -4
  14. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-providers-azure.mdx +16 -6
  15. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-providers-github.mdx +3 -3
  16. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-providers-google.mdx +3 -3
  17. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-providers-workos.mdx +6 -6
  18. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-context.mdx +68 -28
  19. fastmcp-2.13.0.2/docs/python-sdk/fastmcp-server-middleware-tool_injection.mdx +91 -0
  20. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-server.mdx +54 -54
  21. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-settings.mdx +11 -11
  22. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-tools-tool_manager.mdx +10 -10
  23. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-cli.mdx +1 -1
  24. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/updates.mdx +18 -0
  25. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/azure_oauth/server.py +8 -3
  26. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/get_file.py +6 -0
  27. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/memory.py +7 -5
  28. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/pyproject.toml +25 -3
  29. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/cli/cli.py +2 -2
  30. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/client/auth/oauth.py +7 -6
  31. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/client/client.py +10 -10
  32. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/client/sampling.py +1 -1
  33. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/client/transports.py +34 -34
  34. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/contrib/component_manager/__init__.py +1 -1
  35. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/contrib/component_manager/component_manager.py +2 -2
  36. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/experimental/sampling/handlers/openai.py +2 -2
  37. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/experimental/server/openapi/__init__.py +5 -8
  38. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/experimental/server/openapi/components.py +11 -7
  39. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/experimental/utilities/openapi/__init__.py +10 -15
  40. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/experimental/utilities/openapi/director.py +1 -1
  41. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/experimental/utilities/openapi/json_schema_converter.py +2 -2
  42. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/experimental/utilities/openapi/parser.py +3 -5
  43. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/mcp_config.py +2 -3
  44. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/prompts/prompt.py +9 -13
  45. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/resources/resource.py +1 -3
  46. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/resources/resource_manager.py +1 -1
  47. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/__init__.py +1 -1
  48. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/auth.py +2 -2
  49. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/oidc_proxy.py +2 -2
  50. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/providers/azure.py +48 -25
  51. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/providers/bearer.py +1 -1
  52. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/providers/in_memory.py +2 -2
  53. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/providers/introspection.py +2 -2
  54. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/providers/jwt.py +17 -18
  55. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/providers/supabase.py +1 -1
  56. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/providers/workos.py +2 -2
  57. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/context.py +8 -10
  58. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/dependencies.py +5 -6
  59. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/http.py +2 -3
  60. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/middleware/caching.py +1 -1
  61. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/middleware/error_handling.py +8 -8
  62. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/openapi.py +10 -6
  63. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/proxy.py +5 -4
  64. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/server.py +27 -29
  65. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/tools/__init__.py +1 -1
  66. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/tools/tool.py +12 -12
  67. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/tools/tool_transform.py +6 -6
  68. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/cli.py +5 -6
  69. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/inspect.py +2 -2
  70. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/json_schema_type.py +4 -4
  71. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/logging.py +14 -18
  72. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/mcp_server_config/v1/environments/base.py +1 -2
  73. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -1
  74. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/openapi.py +9 -9
  75. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/tests.py +2 -4
  76. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/providers/test_azure.py +103 -38
  77. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/utilities/test_inspect.py +4 -4
  78. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/uv.lock +97 -249
  79. fastmcp-2.13.0rc3/docs/python-sdk/fastmcp-server-auth-jwt_issuer.mdx +0 -195
  80. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.ccignore +0 -0
  81. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.cursor/rules/core-mcp-objects.mdc +0 -0
  82. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.cursor/worktrees.json +0 -0
  83. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
  84. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  85. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
  86. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.github/copilot-instructions.md +0 -0
  87. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.github/dependabot.yml +0 -0
  88. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.github/pull_request_template.md +0 -0
  89. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.github/release.yml +0 -0
  90. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.github/workflows/auto-close-duplicates.yml +0 -0
  91. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.github/workflows/auto-close-needs-mre.yml +0 -0
  92. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.github/workflows/martian-issue-triage.yml +0 -0
  93. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.github/workflows/marvin-dedupe-issues.yml +0 -0
  94. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.github/workflows/marvin-label-triage.yml +0 -0
  95. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.github/workflows/marvin.yml +0 -0
  96. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.github/workflows/publish.yml +0 -0
  97. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.github/workflows/run-static.yml +0 -0
  98. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.github/workflows/update-config-schema.yml +0 -0
  99. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.github/workflows/update-sdk-docs.yml +0 -0
  100. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.gitignore +0 -0
  101. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/.pre-commit-config.yaml +0 -0
  102. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/AGENTS.md +0 -0
  103. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/CLAUDE.md +0 -0
  104. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/CODE_OF_CONDUCT.md +0 -0
  105. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/LICENSE +0 -0
  106. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/README.md +0 -0
  107. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/SECURITY.md +0 -0
  108. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/.ccignore +0 -0
  109. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/.cursor/rules/mintlify.mdc +0 -0
  110. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/brand/blue-logo.png +0 -0
  111. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/brand/f-watercolor-waves-dark.png +0 -0
  112. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/brand/f-watercolor-waves.png +0 -0
  113. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/brand/favicon.svg +0 -0
  114. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/brand/thumbnail-background.png +0 -0
  115. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/brand/wordmark-padded.png +0 -0
  116. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/brand/wordmark-watercolor-rainbow-dark.png +0 -0
  117. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/brand/wordmark-watercolor-rainbow.png +0 -0
  118. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/brand/wordmark-watercolor-waves-dark.png +0 -0
  119. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/brand/wordmark-watercolor-waves.png +0 -0
  120. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/brand/wordmark-white-padded.png +0 -0
  121. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/brand/wordmark-white.png +0 -0
  122. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/brand/wordmark.png +0 -0
  123. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/images/fastmcp_cloud/connect.png +0 -0
  124. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/images/fastmcp_cloud/create_project.png +0 -0
  125. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/images/fastmcp_cloud/deployment.png +0 -0
  126. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/images/fastmcp_cloud/quickstart.png +0 -0
  127. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/images/oauth-proxy-consent-screen.png +0 -0
  128. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/images/tutorial-rest-api-result.png +0 -0
  129. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/schemas/mcp_server_config/latest.json +0 -0
  130. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/schemas/mcp_server_config/v1.json +0 -0
  131. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/assets/updates/release-2-7.png +0 -0
  132. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/clients/auth/bearer.mdx +0 -0
  133. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/clients/auth/oauth.mdx +0 -0
  134. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/clients/client.mdx +0 -0
  135. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/clients/elicitation.mdx +0 -0
  136. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/clients/logging.mdx +0 -0
  137. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/clients/messages.mdx +0 -0
  138. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/clients/progress.mdx +0 -0
  139. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/clients/prompts.mdx +0 -0
  140. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/clients/resources.mdx +0 -0
  141. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/clients/roots.mdx +0 -0
  142. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/clients/sampling.mdx +0 -0
  143. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/clients/tools.mdx +0 -0
  144. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/clients/transports.mdx +0 -0
  145. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/community/README.md +0 -0
  146. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/community/showcase.mdx +0 -0
  147. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/css/banner.css +0 -0
  148. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/css/python-sdk.css +0 -0
  149. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/css/style.css +0 -0
  150. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/css/version-badge.css +0 -0
  151. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/deployment/fastmcp-cloud.mdx +0 -0
  152. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/deployment/http.mdx +0 -0
  153. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/deployment/running-server.mdx +0 -0
  154. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/deployment/server-configuration.mdx +0 -0
  155. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/development/contributing.mdx +0 -0
  156. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/development/releases.mdx +0 -0
  157. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/development/tests.mdx +0 -0
  158. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/development/upgrade-guide.mdx +0 -0
  159. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/getting-started/installation.mdx +0 -0
  160. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/getting-started/quickstart.mdx +0 -0
  161. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/getting-started/welcome.mdx +0 -0
  162. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/anthropic.mdx +0 -0
  163. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/auth0.mdx +0 -0
  164. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/authkit.mdx +0 -0
  165. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/aws-cognito.mdx +0 -0
  166. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/chatgpt.mdx +0 -0
  167. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/claude-code.mdx +0 -0
  168. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/claude-desktop.mdx +0 -0
  169. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/cursor-install-mcp.png +0 -0
  170. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/cursor.mdx +0 -0
  171. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/descope.mdx +0 -0
  172. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/eunomia-authorization.mdx +0 -0
  173. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/fastapi.mdx +0 -0
  174. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/gemini-cli.mdx +0 -0
  175. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/gemini.mdx +0 -0
  176. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/github.mdx +0 -0
  177. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/google.mdx +0 -0
  178. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/images/authkit/enable_dcr.png +0 -0
  179. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/images/permit/abac_condition_example.png +0 -0
  180. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/images/permit/abac_policy_example.png +0 -0
  181. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/images/permit/policy_mapping.png +0 -0
  182. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/images/permit/role_assignement.png +0 -0
  183. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/mcp-json-configuration.mdx +0 -0
  184. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/openai.mdx +0 -0
  185. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/openapi.mdx +0 -0
  186. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/permit.mdx +0 -0
  187. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/scalekit.mdx +0 -0
  188. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/integrations/workos.mdx +0 -0
  189. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/patterns/cli.mdx +0 -0
  190. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/patterns/contrib.mdx +0 -0
  191. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/patterns/decorating-methods.mdx +0 -0
  192. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/patterns/testing.mdx +0 -0
  193. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/patterns/tool-transformation.mdx +0 -0
  194. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/public/schemas/fastmcp.json/latest.json +0 -0
  195. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/public/schemas/fastmcp.json/v1.json +0 -0
  196. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-cli-__init__.mdx +0 -0
  197. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-cli-install-__init__.mdx +0 -0
  198. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-cli-install-claude_code.mdx +0 -0
  199. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-cli-install-claude_desktop.mdx +0 -0
  200. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-cli-install-cursor.mdx +0 -0
  201. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-cli-install-gemini_cli.mdx +0 -0
  202. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-cli-install-mcp_json.mdx +0 -0
  203. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-cli-install-shared.mdx +0 -0
  204. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-cli-run.mdx +0 -0
  205. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-client-__init__.mdx +0 -0
  206. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-client-auth-__init__.mdx +0 -0
  207. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-client-auth-bearer.mdx +0 -0
  208. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-client-auth-oauth.mdx +0 -0
  209. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-client-client.mdx +0 -0
  210. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-client-elicitation.mdx +0 -0
  211. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-client-logging.mdx +0 -0
  212. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-client-messages.mdx +0 -0
  213. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-client-oauth_callback.mdx +0 -0
  214. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-client-progress.mdx +0 -0
  215. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-client-roots.mdx +0 -0
  216. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-client-sampling.mdx +0 -0
  217. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-client-transports.mdx +0 -0
  218. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-exceptions.mdx +0 -0
  219. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-mcp_config.mdx +0 -0
  220. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-prompts-__init__.mdx +0 -0
  221. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-prompts-prompt.mdx +0 -0
  222. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +0 -0
  223. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-resources-__init__.mdx +0 -0
  224. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-resources-resource.mdx +0 -0
  225. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-resources-resource_manager.mdx +0 -0
  226. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-resources-template.mdx +0 -0
  227. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-__init__.mdx +0 -0
  228. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-__init__.mdx +0 -0
  229. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-auth.mdx +0 -0
  230. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-providers-__init__.mdx +0 -0
  231. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +0 -0
  232. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-providers-descope.mdx +0 -0
  233. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +0 -0
  234. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-providers-introspection.mdx +0 -0
  235. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-providers-jwt.mdx +0 -0
  236. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-providers-scalekit.mdx +0 -0
  237. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-providers-supabase.mdx +0 -0
  238. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-auth-redirect_validation.mdx +0 -0
  239. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-dependencies.mdx +0 -0
  240. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-elicitation.mdx +0 -0
  241. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-http.mdx +0 -0
  242. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-low_level.mdx +0 -0
  243. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-middleware-__init__.mdx +0 -0
  244. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-middleware-caching.mdx +0 -0
  245. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-middleware-error_handling.mdx +0 -0
  246. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-middleware-logging.mdx +0 -0
  247. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +0 -0
  248. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-middleware-rate_limiting.mdx +0 -0
  249. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-middleware-timing.mdx +0 -0
  250. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-openapi.mdx +0 -0
  251. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-server-proxy.mdx +0 -0
  252. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-tools-__init__.mdx +0 -0
  253. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-tools-tool.mdx +0 -0
  254. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-tools-tool_transform.mdx +0 -0
  255. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-__init__.mdx +0 -0
  256. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-auth.mdx +0 -0
  257. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-components.mdx +0 -0
  258. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-exceptions.mdx +0 -0
  259. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-http.mdx +0 -0
  260. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-inspect.mdx +0 -0
  261. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-json_schema.mdx +0 -0
  262. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-json_schema_type.mdx +0 -0
  263. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-logging.mdx +0 -0
  264. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +0 -0
  265. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-__init__.mdx +0 -0
  266. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-__init__.mdx +0 -0
  267. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-__init__.mdx +0 -0
  268. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-base.mdx +0 -0
  269. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-uv.mdx +0 -0
  270. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-mcp_server_config.mdx +0 -0
  271. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-__init__.mdx +0 -0
  272. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-base.mdx +0 -0
  273. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-filesystem.mdx +0 -0
  274. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-openapi.mdx +0 -0
  275. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-tests.mdx +0 -0
  276. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-types.mdx +0 -0
  277. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/python-sdk/fastmcp-utilities-ui.mdx +0 -0
  278. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/auth/authentication.mdx +0 -0
  279. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/auth/full-oauth-server.mdx +0 -0
  280. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/auth/oauth-proxy.mdx +0 -0
  281. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/auth/oidc-proxy.mdx +0 -0
  282. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/auth/remote-oauth.mdx +0 -0
  283. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/auth/token-verification.mdx +0 -0
  284. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/composition.mdx +0 -0
  285. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/context.mdx +0 -0
  286. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/elicitation.mdx +0 -0
  287. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/icons.mdx +0 -0
  288. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/logging.mdx +0 -0
  289. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/middleware.mdx +0 -0
  290. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/progress.mdx +0 -0
  291. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/prompts.mdx +0 -0
  292. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/proxy.mdx +0 -0
  293. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/resources.mdx +0 -0
  294. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/sampling.mdx +0 -0
  295. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/server.mdx +0 -0
  296. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/storage-backends.mdx +0 -0
  297. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/servers/tools.mdx +0 -0
  298. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/snippets/local-focus.mdx +0 -0
  299. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/snippets/version-badge.mdx +0 -0
  300. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/snippets/youtube-embed.mdx +0 -0
  301. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/tutorials/create-mcp-server.mdx +0 -0
  302. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/tutorials/mcp.mdx +0 -0
  303. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/docs/tutorials/rest-api.mdx +0 -0
  304. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/atproto_mcp/README.md +0 -0
  305. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/atproto_mcp/demo.py +0 -0
  306. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/atproto_mcp/fastmcp.json +0 -0
  307. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/atproto_mcp/pyproject.toml +0 -0
  308. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/atproto_mcp/src/atproto_mcp/__init__.py +0 -0
  309. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/atproto_mcp/src/atproto_mcp/__main__.py +0 -0
  310. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/__init__.py +4 -4
  311. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_client.py +0 -0
  312. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_posts.py +0 -0
  313. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_profile.py +0 -0
  314. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_read.py +0 -0
  315. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_social.py +0 -0
  316. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/atproto_mcp/src/atproto_mcp/py.typed +0 -0
  317. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/atproto_mcp/src/atproto_mcp/server.py +0 -0
  318. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/atproto_mcp/src/atproto_mcp/settings.py +0 -0
  319. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/atproto_mcp/src/atproto_mcp/types.py +0 -0
  320. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/authkit_dcr/README.md +0 -0
  321. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/authkit_dcr/client.py +0 -0
  322. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/authkit_dcr/server.py +0 -0
  323. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/aws_oauth/README.md +0 -0
  324. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/aws_oauth/client.py +0 -0
  325. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/aws_oauth/requirements.txt +0 -0
  326. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/aws_oauth/server.py +0 -0
  327. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/azure_oauth/README.md +0 -0
  328. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/azure_oauth/client.py +0 -0
  329. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/github_oauth/README.md +0 -0
  330. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/github_oauth/client.py +0 -0
  331. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/github_oauth/server.py +0 -0
  332. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/google_oauth/README.md +0 -0
  333. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/google_oauth/client.py +0 -0
  334. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/google_oauth/server.py +0 -0
  335. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/scalekit_oauth/README.md +0 -0
  336. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/scalekit_oauth/client.py +0 -0
  337. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/scalekit_oauth/server.py +0 -0
  338. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/workos_oauth/README.md +0 -0
  339. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/workos_oauth/client.py +0 -0
  340. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/auth/workos_oauth/server.py +0 -0
  341. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/complex_inputs.py +0 -0
  342. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/config_server.py +0 -0
  343. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/desktop.py +0 -0
  344. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/echo.py +0 -0
  345. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/fastmcp_config/env_interpolation_example.json +0 -0
  346. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/fastmcp_config/fastmcp.json +0 -0
  347. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/fastmcp_config/full_example.fastmcp.json +0 -0
  348. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/fastmcp_config/server.py +0 -0
  349. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/fastmcp_config/simple.fastmcp.json +0 -0
  350. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/fastmcp_config_demo/README.md +0 -0
  351. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/fastmcp_config_demo/fastmcp.json +0 -0
  352. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/fastmcp_config_demo/server.py +0 -0
  353. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/in_memory_proxy_example.py +0 -0
  354. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/memory.fastmcp.json +0 -0
  355. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/mount_example.fastmcp.json +0 -0
  356. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/mount_example.py +0 -0
  357. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/sampling.py +0 -0
  358. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/sampling_fallback.py +0 -0
  359. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/screenshot.fastmcp.json +0 -0
  360. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/screenshot.py +0 -0
  361. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/serializer.py +0 -0
  362. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/simple_echo.py +0 -0
  363. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/smart_home/README.md +0 -0
  364. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/smart_home/hub.fastmcp.json +0 -0
  365. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/smart_home/lights.fastmcp.json +0 -0
  366. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/smart_home/pyproject.toml +0 -0
  367. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/smart_home/src/smart_home/__init__.py +0 -0
  368. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/smart_home/src/smart_home/__main__.py +0 -0
  369. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/smart_home/src/smart_home/hub.py +0 -0
  370. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
  371. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -0
  372. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/smart_home/src/smart_home/lights/server.py +0 -0
  373. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/smart_home/src/smart_home/py.typed +0 -0
  374. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/smart_home/src/smart_home/settings.py +0 -0
  375. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/tags_example.py +0 -0
  376. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/examples/text_me.py +0 -0
  377. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/justfile +0 -0
  378. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/logo.py +0 -0
  379. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/scripts/auto_close_duplicates.py +0 -0
  380. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/scripts/auto_close_needs_mre.py +0 -0
  381. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/__init__.py +2 -2
  382. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/cli/__init__.py +0 -0
  383. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/cli/install/__init__.py +0 -0
  384. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/cli/install/claude_code.py +0 -0
  385. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/cli/install/claude_desktop.py +0 -0
  386. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/cli/install/cursor.py +0 -0
  387. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/cli/install/gemini_cli.py +0 -0
  388. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/cli/install/mcp_json.py +0 -0
  389. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/cli/install/shared.py +0 -0
  390. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/cli/run.py +0 -0
  391. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/client/__init__.py +9 -9
  392. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/client/auth/__init__.py +0 -0
  393. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/client/auth/bearer.py +0 -0
  394. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/client/elicitation.py +0 -0
  395. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/client/logging.py +0 -0
  396. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/client/messages.py +0 -0
  397. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/client/oauth_callback.py +0 -0
  398. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/client/progress.py +0 -0
  399. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/client/roots.py +0 -0
  400. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/contrib/README.md +0 -0
  401. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  402. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  403. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  404. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  405. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/contrib/component_manager/README.md +0 -0
  406. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/contrib/component_manager/component_service.py +0 -0
  407. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/contrib/component_manager/example.py +0 -0
  408. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/contrib/mcp_mixin/README.md +0 -0
  409. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/contrib/mcp_mixin/__init__.py +2 -2
  410. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
  411. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  412. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/exceptions.py +0 -0
  413. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/experimental/sampling/__init__.py +0 -0
  414. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/experimental/sampling/handlers/__init__.py +0 -0
  415. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/experimental/sampling/handlers/base.py +0 -0
  416. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/experimental/server/openapi/README.md +0 -0
  417. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/experimental/server/openapi/routing.py +2 -2
  418. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/experimental/server/openapi/server.py +0 -0
  419. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/experimental/utilities/openapi/README.md +0 -0
  420. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/experimental/utilities/openapi/formatters.py +0 -0
  421. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/experimental/utilities/openapi/models.py +3 -3
  422. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/experimental/utilities/openapi/schemas.py +2 -2
  423. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/prompts/__init__.py +1 -1
  424. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/prompts/prompt_manager.py +0 -0
  425. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/py.typed +0 -0
  426. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/resources/__init__.py +5 -5
  427. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/resources/template.py +0 -0
  428. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/resources/types.py +0 -0
  429. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/__init__.py +5 -5
  430. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/handlers/authorize.py +0 -0
  431. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/jwt_issuer.py +0 -0
  432. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/middleware.py +0 -0
  433. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/oauth_proxy.py +0 -0
  434. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/providers/__init__.py +0 -0
  435. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/providers/auth0.py +0 -0
  436. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/providers/aws.py +0 -0
  437. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/providers/descope.py +0 -0
  438. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/providers/github.py +0 -0
  439. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/providers/google.py +0 -0
  440. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/providers/scalekit.py +0 -0
  441. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/auth/redirect_validation.py +0 -0
  442. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/elicitation.py +1 -1
  443. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/low_level.py +0 -0
  444. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/middleware/__init__.py +1 -1
  445. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/middleware/logging.py +0 -0
  446. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/middleware/middleware.py +1 -1
  447. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/middleware/rate_limiting.py +0 -0
  448. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/middleware/timing.py +0 -0
  449. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/middleware/tool_injection.py +0 -0
  450. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/server/sampling/handler.py +0 -0
  451. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/settings.py +0 -0
  452. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/tools/tool_manager.py +0 -0
  453. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/__init__.py +0 -0
  454. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/auth.py +0 -0
  455. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/components.py +0 -0
  456. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/exceptions.py +0 -0
  457. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/http.py +0 -0
  458. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/json_schema.py +0 -0
  459. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/mcp_config.py +0 -0
  460. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/mcp_server_config/__init__.py +3 -3
  461. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  462. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  463. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  464. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  465. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  466. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  467. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  468. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/types.py +0 -0
  469. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/src/fastmcp/utilities/ui.py +0 -0
  470. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/__init__.py +0 -0
  471. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/cli/__init__.py +0 -0
  472. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/cli/test_cli.py +0 -0
  473. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/cli/test_config.py +0 -0
  474. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/cli/test_cursor.py +0 -0
  475. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/cli/test_install.py +0 -0
  476. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/cli/test_mcp_server_config_integration.py +0 -0
  477. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/cli/test_mcp_server_config_schema.py +0 -0
  478. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/cli/test_project_prepare.py +0 -0
  479. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/cli/test_run.py +0 -0
  480. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/cli/test_run_config.py +0 -0
  481. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/cli/test_server_args.py +0 -0
  482. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/cli/test_shared.py +0 -0
  483. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/cli/test_with_argv.py +0 -0
  484. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/client/__init__.py +0 -0
  485. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/client/auth/__init__.py +0 -0
  486. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/client/auth/test_oauth_client.py +0 -0
  487. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/client/test_client.py +0 -0
  488. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/client/test_elicitation.py +0 -0
  489. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/client/test_logs.py +0 -0
  490. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/client/test_notifications.py +0 -0
  491. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/client/test_oauth_callback_xss.py +0 -0
  492. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/client/test_openapi_experimental.py +0 -0
  493. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/client/test_openapi_legacy.py +0 -0
  494. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/client/test_progress.py +0 -0
  495. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/client/test_roots.py +0 -0
  496. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/client/test_sampling.py +0 -0
  497. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/client/test_sse.py +0 -0
  498. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/client/test_stdio.py +0 -0
  499. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/client/test_streamable_http.py +0 -0
  500. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/client/transports/__init__.py +0 -0
  501. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/client/transports/test_uv_transport.py +0 -0
  502. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/conftest.py +0 -0
  503. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/contrib/__init__.py +0 -0
  504. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/contrib/test_bulk_tool_caller.py +0 -0
  505. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/contrib/test_component_manager.py +0 -0
  506. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/contrib/test_mcp_mixin.py +0 -0
  507. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/deprecated/__init__.py +0 -0
  508. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/deprecated/test_bearer_auth_provider.py +0 -0
  509. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/deprecated/test_dependencies.py +0 -0
  510. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/deprecated/test_deprecated.py +0 -0
  511. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/deprecated/test_mount_import_arg_order.py +0 -0
  512. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/deprecated/test_mount_separators.py +0 -0
  513. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/deprecated/test_output_schema_false.py +0 -0
  514. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/deprecated/test_proxy_client.py +0 -0
  515. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/deprecated/test_resource_prefixes.py +0 -0
  516. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/deprecated/test_route_type_ignore.py +0 -0
  517. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/deprecated/test_settings.py +0 -0
  518. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/README.md +0 -0
  519. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/__init__.py +0 -0
  520. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/README.md +0 -0
  521. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/__init__.py +0 -0
  522. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/conftest.py +0 -0
  523. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/server/__init__.py +0 -0
  524. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/server/openapi/__init__.py +0 -0
  525. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/server/openapi/test_comprehensive.py +0 -0
  526. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/server/openapi/test_deepobject_style.py +0 -0
  527. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/server/openapi/test_end_to_end_compatibility.py +0 -0
  528. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/server/openapi/test_openapi_features.py +0 -0
  529. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/server/openapi/test_openapi_performance.py +0 -0
  530. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/server/openapi/test_parameter_collisions.py +0 -0
  531. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/server/openapi/test_performance_comparison.py +0 -0
  532. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/server/openapi/test_server.py +0 -0
  533. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/utilities/__init__.py +0 -0
  534. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/utilities/openapi/__init__.py +0 -0
  535. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/utilities/openapi/conftest.py +0 -0
  536. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/utilities/openapi/test_allof_requestbody.py +0 -0
  537. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/utilities/openapi/test_direct_array_schemas.py +0 -0
  538. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/utilities/openapi/test_director.py +0 -0
  539. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/utilities/openapi/test_legacy_compatibility.py +0 -0
  540. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/utilities/openapi/test_models.py +0 -0
  541. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/utilities/openapi/test_nullable_fields.py +0 -0
  542. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/utilities/openapi/test_parser.py +0 -0
  543. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/utilities/openapi/test_schemas.py +0 -0
  544. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/openapi_parser/utilities/openapi/test_transitive_references.py +0 -0
  545. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/experimental/sampling/test_openai_handler.py +0 -0
  546. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/integration_tests/__init__.py +0 -0
  547. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/integration_tests/auth/__init__.py +0 -0
  548. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/integration_tests/auth/test_github_provider_integration.py +0 -0
  549. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/integration_tests/conftest.py +0 -0
  550. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/integration_tests/test_github_mcp_remote.py +0 -0
  551. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/prompts/__init__.py +0 -0
  552. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/prompts/test_prompt.py +0 -0
  553. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/prompts/test_prompt_manager.py +0 -0
  554. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/resources/__init__.py +0 -0
  555. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/resources/test_file_resources.py +0 -0
  556. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/resources/test_function_resources.py +0 -0
  557. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/resources/test_resource_manager.py +0 -0
  558. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/resources/test_resource_template.py +0 -0
  559. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/resources/test_resource_template_meta.py +0 -0
  560. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/resources/test_resources.py +0 -0
  561. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/__init__.py +0 -0
  562. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/__init__.py +0 -0
  563. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/providers/__init__.py +0 -0
  564. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/providers/test_auth0.py +0 -0
  565. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/providers/test_aws.py +0 -0
  566. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/providers/test_descope.py +0 -0
  567. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/providers/test_github.py +0 -0
  568. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/providers/test_google.py +0 -0
  569. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/providers/test_introspection.py +0 -0
  570. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/providers/test_scalekit.py +0 -0
  571. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/providers/test_supabase.py +0 -0
  572. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/providers/test_workos.py +0 -0
  573. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/test_auth_provider.py +0 -0
  574. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/test_enhanced_error_responses.py +0 -0
  575. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/test_jwt_issuer.py +0 -0
  576. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/test_jwt_provider.py +0 -0
  577. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/test_oauth_consent_flow.py +0 -0
  578. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/test_oauth_mounting.py +0 -0
  579. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/test_oauth_proxy.py +0 -0
  580. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/test_oauth_proxy_redirect_validation.py +0 -0
  581. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/test_oauth_proxy_storage.py +0 -0
  582. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/test_oidc_proxy.py +0 -0
  583. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/test_redirect_validation.py +0 -0
  584. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/test_remote_auth_provider.py +0 -0
  585. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/auth/test_static_token_verifier.py +0 -0
  586. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/http/__init__.py +0 -0
  587. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/http/test_bearer_auth_backend.py +0 -0
  588. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/http/test_custom_routes.py +0 -0
  589. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/http/test_http_auth_middleware.py +0 -0
  590. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/http/test_http_dependencies.py +0 -0
  591. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/http/test_http_middleware.py +0 -0
  592. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/middleware/__init__.py +0 -0
  593. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/middleware/test_caching.py +0 -0
  594. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/middleware/test_error_handling.py +0 -0
  595. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/middleware/test_initialization_middleware.py +0 -0
  596. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/middleware/test_logging.py +0 -0
  597. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/middleware/test_middleware.py +0 -0
  598. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/middleware/test_rate_limiting.py +0 -0
  599. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/middleware/test_timing.py +0 -0
  600. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/middleware/test_tool_injection.py +0 -0
  601. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/openapi/__init__.py +0 -0
  602. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/openapi/conftest.py +0 -0
  603. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/openapi/test_advanced_behavior.py +0 -0
  604. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/openapi/test_basic_functionality.py +0 -0
  605. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/openapi/test_configuration.py +0 -0
  606. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/openapi/test_deepobject_style.py +0 -0
  607. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/openapi/test_description_propagation.py +0 -0
  608. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/openapi/test_explode_integration.py +0 -0
  609. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/openapi/test_openapi_compatibility.py +0 -0
  610. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/openapi/test_openapi_path_parameters.py +0 -0
  611. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/openapi/test_optional_parameters.py +0 -0
  612. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/openapi/test_parameter_collisions.py +0 -0
  613. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/openapi/test_route_map_fn.py +0 -0
  614. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/proxy/__init__.py +0 -0
  615. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/proxy/test_proxy_client.py +0 -0
  616. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/proxy/test_proxy_server.py +0 -0
  617. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/proxy/test_stateful_proxy_client.py +0 -0
  618. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_app_state.py +0 -0
  619. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_auth_integration.py +0 -0
  620. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_context.py +0 -0
  621. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_experimental_openapi_feature_flag.py +0 -0
  622. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_file_server.py +0 -0
  623. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_icons.py +0 -0
  624. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_import_server.py +0 -0
  625. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_input_validation.py +0 -0
  626. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_log_level.py +0 -0
  627. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_logging.py +0 -0
  628. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_mount.py +0 -0
  629. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_resource_prefix_formats.py +0 -0
  630. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_run_server.py +0 -0
  631. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_server.py +0 -0
  632. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_server_interactions.py +0 -0
  633. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_server_lifespan.py +0 -0
  634. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_streamable_http_no_redirect.py +0 -0
  635. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_tool_annotations.py +0 -0
  636. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_tool_exclude_args.py +0 -0
  637. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/server/test_tool_transformation.py +0 -0
  638. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/test_examples.py +0 -0
  639. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/test_mcp_config.py +0 -0
  640. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/tools/__init__.py +0 -0
  641. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/tools/test_tool.py +0 -0
  642. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/tools/test_tool_future_annotations.py +0 -0
  643. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/tools/test_tool_manager.py +0 -0
  644. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/tools/test_tool_transform.py +0 -0
  645. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/utilities/__init__.py +0 -0
  646. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/utilities/openapi/__init__.py +0 -0
  647. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/utilities/openapi/conftest.py +0 -0
  648. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/utilities/openapi/test_nullable_fields.py +0 -0
  649. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/utilities/openapi/test_openapi.py +0 -0
  650. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/utilities/openapi/test_openapi_advanced.py +0 -0
  651. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/utilities/openapi/test_openapi_fastapi.py +0 -0
  652. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/utilities/openapi/test_openapi_output_schemas.py +0 -0
  653. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/utilities/test_cli.py +0 -0
  654. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/utilities/test_components.py +0 -0
  655. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/utilities/test_json_schema.py +0 -0
  656. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/utilities/test_json_schema_type.py +0 -0
  657. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/utilities/test_logging.py +0 -0
  658. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/utilities/test_tests.py +0 -0
  659. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/utilities/test_typeadapter.py +0 -0
  660. {fastmcp-2.13.0rc3 → fastmcp-2.13.0.2}/tests/utilities/test_types.py +0 -0
@@ -59,6 +59,31 @@ jobs:
59
59
  - name: Run client process tests separately
60
60
  run: uv run pytest --inline-snapshot=disable tests -m "client_process" -x
61
61
 
62
+ run_tests_lowest_direct:
63
+ name: "Run tests with lowest-direct dependencies"
64
+ runs-on: ubuntu-latest
65
+ timeout-minutes: 10
66
+
67
+ steps:
68
+ - uses: actions/checkout@v5
69
+
70
+ - name: Install uv
71
+ uses: astral-sh/setup-uv@v7
72
+ with:
73
+ enable-cache: true
74
+ cache-dependency-glob: "uv.lock"
75
+ python-version: "3.10"
76
+
77
+ - name: Install FastMCP with lowest-direct resolution
78
+ # run with lowest-direct to test against the minimum allowed dependency versions
79
+ run: uv sync --resolution lowest-direct
80
+
81
+ - name: Run tests (excluding integration and client_process)
82
+ run: uv run pytest --inline-snapshot=disable tests -m "not integration and not client_process" --numprocesses auto --maxprocesses 4 --dist worksteal
83
+
84
+ - name: Run client process tests separately
85
+ run: uv run pytest --inline-snapshot=disable tests -m "client_process" -x
86
+
62
87
  run_integration_tests:
63
88
  name: "Run integration tests"
64
89
  runs-on: ubuntu-latest
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastmcp
3
- Version: 2.13.0rc3
3
+ Version: 2.13.0.2
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
@@ -22,11 +22,11 @@ Requires-Dist: authlib>=1.5.2
22
22
  Requires-Dist: cyclopts>=3.0.0
23
23
  Requires-Dist: exceptiongroup>=1.2.2
24
24
  Requires-Dist: httpx>=0.28.1
25
+ Requires-Dist: jsonschema-path>=0.3.4
25
26
  Requires-Dist: mcp<2.0.0,>=1.17.0
26
- Requires-Dist: openapi-core>=0.19.5
27
27
  Requires-Dist: openapi-pydantic>=0.5.1
28
28
  Requires-Dist: platformdirs>=4.0.0
29
- Requires-Dist: py-key-value-aio[disk,keyring,memory]<0.3.0,>=0.2.6
29
+ Requires-Dist: py-key-value-aio[disk,keyring,memory]<0.3.0,>=0.2.8
30
30
  Requires-Dist: pydantic[email]>=2.11.7
31
31
  Requires-Dist: pyperclip>=1.9.0
32
32
  Requires-Dist: python-dotenv>=1.1.0
@@ -4,6 +4,40 @@ icon: "list-check"
4
4
  rss: true
5
5
  ---
6
6
 
7
+ <Update label="v2.13.0" description="2025-10-25">
8
+
9
+ **[v2.13.0: Cache Me If You Can](https://github.com/jlowin/fastmcp/releases/tag/v2.13.0)**
10
+
11
+ FastMCP 2.13 "Cache Me If You Can" represents a fundamental maturation of the framework. After months of community feedback on authentication and state management, this release delivers the infrastructure FastMCP needs to handle production workloads: persistent storage, response caching, and pragmatic OAuth improvements that reflect real-world deployment challenges.
12
+
13
+ 💾 **Pluggable storage backends** bring persistent state to FastMCP servers. Built on [py-key-value-aio](https://github.com/strawgate/py-key-value), a new library from FastMCP maintainer Bill Easton ([@strawgate](https://github.com/strawgate)), the storage layer provides encrypted disk storage by default, platform-aware token management, and a simple key-value interface for application state. We're excited to bring this elegantly designed library into the FastMCP ecosystem - it's both powerful and remarkably easy to use, including wrappers to add encryption, TTLs, caching, and more to backends ranging from Elasticsearch, Redis, DynamoDB, filesystem, in-memory, and more! OAuth providers now automatically persist tokens across restarts, and developers can store arbitrary state without reaching for external databases. This foundation enables long-running sessions, cached credentials, and stateful applications built on MCP.
14
+
15
+ 🔐 **OAuth maturity** brings months of production learnings into the framework. The new consent screen prevents confused deputy and authorization bypass attacks discovered in earlier versions while providing a clean UX with customizable branding. The OAuth proxy now issues its own tokens with automatic key derivation from client secrets, and RFC 7662 token introspection support enables enterprise auth flows. Path prefix mounting enables OAuth-protected servers to integrate into existing web applications under custom paths like `/api`, and MCP 1.17+ compliance with RFC 9728 ensures protocol compatibility. Combined with improved error handling and platform-aware token storage, OAuth is now production-ready and security-hardened for serious applications.
16
+
17
+ FastMCP now supports out-of-the-box authentication with:
18
+ - **[WorkOS](https://gofastmcp.com/integrations/workos)** and **[AuthKit](https://gofastmcp.com/integrations/authkit)**
19
+ - **[GitHub](https://gofastmcp.com/integrations/github)**
20
+ - **[Google](https://gofastmcp.com/integrations/google)**
21
+ - **[Azure](https://gofastmcp.com/integrations/azure)** (Entra ID)
22
+ - **[AWS Cognito](https://gofastmcp.com/integrations/aws-cognito)**
23
+ - **[Auth0](https://gofastmcp.com/integrations/auth0)**
24
+ - **[Descope](https://gofastmcp.com/integrations/descope)**
25
+ - **[Scalekit](https://gofastmcp.com/integrations/scalekit)**
26
+ - **[JWTs](https://gofastmcp.com/servers/auth/token-verification#jwt-token-verification)**
27
+ - **[RFC 7662 token introspection](https://gofastmcp.com/servers/auth/token-verification#token-introspection-protocol)**
28
+
29
+ ⚡ **Response Caching Middleware** dramatically improves performance for expensive operations. Cache tool and resource responses with configurable TTLs, reducing redundant API calls and speeding up repeated queries.
30
+
31
+ 🔄 **Server lifespans** provide proper initialization and cleanup hooks that run once per server instance instead of per client session. This fixes a long-standing source of confusion in the MCP SDK and enables proper resource management for database connections, background tasks, and other server-level state. Note: this is a breaking behavioral change if you were using the `lifespan` parameter.
32
+
33
+ ✨ **Developer experience improvements** include Pydantic input validation for better type safety, icon support for richer UX, RFC 6570 query parameters for resource templates, improved Context API methods (list_resources, list_prompts, get_prompt), and async file/directory resources.
34
+
35
+ This release includes contributions from **20** new contributors and represents the largest feature set in a while. Thank you to everyone who tested preview builds and filed issues - your feedback shaped these improvements!
36
+
37
+ **Full Changelog**: [v2.12.5...v2.13.0](https://github.com/jlowin/fastmcp/compare/v2.12.5...v2.13.0)
38
+
39
+ </Update>
40
+
7
41
  <Update label="v2.12.5" description="2025-10-17">
8
42
 
9
43
  **[v2.12.5: Safety Pin](https://github.com/jlowin/fastmcp/releases/tag/v2.12.5)**
@@ -20,7 +20,10 @@
20
20
  "primary": "#2d00f7"
21
21
  },
22
22
  "contextual": {
23
- "options": ["copy", "view"]
23
+ "options": [
24
+ "copy",
25
+ "view"
26
+ ]
24
27
  },
25
28
  "description": "The fast, Pythonic way to build MCP servers and clients.",
26
29
  "errors": {
@@ -146,7 +149,10 @@
146
149
  {
147
150
  "group": "Essentials",
148
151
  "icon": "cube",
149
- "pages": ["clients/client", "clients/transports"]
152
+ "pages": [
153
+ "clients/client",
154
+ "clients/transports"
155
+ ]
150
156
  },
151
157
  {
152
158
  "group": "Core Operations",
@@ -172,7 +178,10 @@
172
178
  {
173
179
  "group": "Authentication",
174
180
  "icon": "user-shield",
175
- "pages": ["clients/auth/oauth", "clients/auth/bearer"]
181
+ "pages": [
182
+ "clients/auth/oauth",
183
+ "clients/auth/bearer"
184
+ ]
176
185
  }
177
186
  ]
178
187
  },
@@ -226,7 +235,10 @@
226
235
  {
227
236
  "group": "API Integration",
228
237
  "icon": "globe",
229
- "pages": ["integrations/fastapi", "integrations/openapi"]
238
+ "pages": [
239
+ "integrations/fastapi",
240
+ "integrations/openapi"
241
+ ]
230
242
  }
231
243
  ]
232
244
  },
@@ -333,6 +345,7 @@
333
345
  "python-sdk/fastmcp-server-auth-__init__",
334
346
  "python-sdk/fastmcp-server-auth-auth",
335
347
  "python-sdk/fastmcp-server-auth-jwt_issuer",
348
+ "python-sdk/fastmcp-server-auth-middleware",
336
349
  "python-sdk/fastmcp-server-auth-oauth_proxy",
337
350
  "python-sdk/fastmcp-server-auth-oidc_proxy",
338
351
  {
@@ -371,7 +384,8 @@
371
384
  "python-sdk/fastmcp-server-middleware-logging",
372
385
  "python-sdk/fastmcp-server-middleware-middleware",
373
386
  "python-sdk/fastmcp-server-middleware-rate_limiting",
374
- "python-sdk/fastmcp-server-middleware-timing"
387
+ "python-sdk/fastmcp-server-middleware-timing",
388
+ "python-sdk/fastmcp-server-middleware-tool_injection"
375
389
  ]
376
390
  },
377
391
  "python-sdk/fastmcp-server-openapi",
@@ -458,17 +472,17 @@
458
472
  "search": {
459
473
  "prompt": "Search the docs..."
460
474
  },
461
- "theme": "almond",
462
- "thumbnails": {
463
- "appearance": "light",
464
- "background": "/assets/brand/thumbnail-background.png"
465
- },
466
475
  "styling": {
467
476
  "codeblocks": {
468
477
  "theme": {
469
- "light": "snazzy-light",
470
- "dark": "dark-plus"
478
+ "dark": "dark-plus",
479
+ "light": "snazzy-light"
471
480
  }
472
481
  }
482
+ },
483
+ "theme": "almond",
484
+ "thumbnails": {
485
+ "appearance": "light",
486
+ "background": "/assets/brand/thumbnail-background.png"
473
487
  }
474
488
  }
@@ -122,7 +122,7 @@ auth_provider = AzureProvider(
122
122
  client_secret="your-client-secret", # Your Azure App Client Secret
123
123
  tenant_id="08541b6e-646d-43de-a0eb-834e6713d6d5", # Your Azure Tenant ID (REQUIRED)
124
124
  base_url="http://localhost:8000", # Must match your App registration
125
- required_scopes=["your-scope"], # Name of scope created when configuring your App
125
+ required_scopes=["your-scope"], # At least one scope REQUIRED - name of scope from your App
126
126
  # identifier_uri defaults to api://{client_id}
127
127
  # identifier_uri="api://your-api-id",
128
128
  # Optional: request additional upstream scopes in the authorize request
@@ -159,6 +159,10 @@ async def get_user_info() -> dict:
159
159
  Using your specific tenant ID is recommended for better security and control.
160
160
  </Note>
161
161
 
162
+ <Note>
163
+ **Important**: The `required_scopes` parameter is **REQUIRED** and must include at least one scope. Azure's OAuth API requires the `scope` parameter in all authorization requests - you cannot authenticate without specifying at least one scope. Use the unprefixed scope names from your Azure App registration (e.g., `["read", "write"]`). These scopes must be created under **Expose an API** in your App registration.
164
+ </Note>
165
+
162
166
  ## Testing
163
167
 
164
168
  ### Running the Server
@@ -296,8 +300,12 @@ Issuer URL for OAuth metadata (defaults to `BASE_URL`). Set to root-level URL wh
296
300
  Redirect path configured in your Azure App registration
297
301
  </ParamField>
298
302
 
299
- <ParamField path="FASTMCP_SERVER_AUTH_AZURE_REQUIRED_SCOPES" default="">
300
- Comma-, space-, or JSON-separated list of required scopes for your API. These are validated on tokens and used as defaults if the client does not request specific scopes.
303
+ <ParamField path="FASTMCP_SERVER_AUTH_AZURE_REQUIRED_SCOPES" required>
304
+ Comma-, space-, or JSON-separated list of required scopes for your API (at least one scope required). These are validated on tokens and used as defaults if the client does not request specific scopes. Use unprefixed scope names from your Azure App registration (e.g., `read,write`).
305
+
306
+ <Note>
307
+ Azure's OAuth API requires the `scope` parameter - you must provide at least one scope.
308
+ </Note>
301
309
  </ParamField>
302
310
 
303
311
  <ParamField path="FASTMCP_SERVER_AUTH_AZURE_ADDITIONAL_AUTHORIZE_SCOPES" default="">
@@ -105,7 +105,7 @@ fastmcp inspect # auto-detect fastmcp.json
105
105
  - `server_spec`: Python file to inspect, optionally with \:object suffix, or fastmcp.json
106
106
 
107
107
 
108
- ### `prepare` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/cli.py#L785" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
108
+ ### `prepare` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/cli/cli.py#L786" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
109
109
 
110
110
  ```python
111
111
  prepare(config_path: Annotated[str | None, cyclopts.Parameter(help='Path to fastmcp.json configuration file')] = None, output_dir: Annotated[str | None, cyclopts.Parameter(help='Directory to create the persistent environment in')] = None, skip_source: Annotated[bool, cyclopts.Parameter(help='Skip source preparation (e.g., git clone)')] = False) -> None
@@ -54,7 +54,7 @@ Set is_binary=True to read file as binary data instead of text.
54
54
 
55
55
  **Methods:**
56
56
 
57
- #### `validate_absolute_path` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/resources/types.py#L59" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
57
+ #### `validate_absolute_path` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/resources/types.py#L63" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
58
58
 
59
59
  ```python
60
60
  validate_absolute_path(cls, path: Path) -> Path
@@ -63,7 +63,7 @@ validate_absolute_path(cls, path: Path) -> Path
63
63
  Ensure path is absolute.
64
64
 
65
65
 
66
- #### `set_binary_from_mime_type` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/resources/types.py#L67" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
66
+ #### `set_binary_from_mime_type` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/resources/types.py#L71" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
67
67
 
68
68
  ```python
69
69
  set_binary_from_mime_type(cls, is_binary: bool, info: ValidationInfo) -> bool
@@ -72,7 +72,7 @@ set_binary_from_mime_type(cls, is_binary: bool, info: ValidationInfo) -> bool
72
72
  Set is_binary based on mime_type if not explicitly set.
73
73
 
74
74
 
75
- #### `read` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/resources/types.py#L74" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
75
+ #### `read` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/resources/types.py#L79" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
76
76
 
77
77
  ```python
78
78
  read(self) -> str | bytes
@@ -81,7 +81,7 @@ read(self) -> str | bytes
81
81
  Read the file content.
82
82
 
83
83
 
84
- ### `HttpResource` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/resources/types.py#L84" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
84
+ ### `HttpResource` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/resources/types.py#L89" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
85
85
 
86
86
 
87
87
  A resource that reads from an HTTP endpoint.
@@ -89,7 +89,7 @@ A resource that reads from an HTTP endpoint.
89
89
 
90
90
  **Methods:**
91
91
 
92
- #### `read` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/resources/types.py#L92" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
92
+ #### `read` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/resources/types.py#L98" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
93
93
 
94
94
  ```python
95
95
  read(self) -> str | bytes
@@ -98,7 +98,7 @@ read(self) -> str | bytes
98
98
  Read the HTTP content.
99
99
 
100
100
 
101
- ### `DirectoryResource` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/resources/types.py#L100" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
101
+ ### `DirectoryResource` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/resources/types.py#L106" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
102
102
 
103
103
 
104
104
  A resource that lists files in a directory.
@@ -106,7 +106,7 @@ A resource that lists files in a directory.
106
106
 
107
107
  **Methods:**
108
108
 
109
- #### `validate_absolute_path` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/resources/types.py#L116" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
109
+ #### `validate_absolute_path` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/resources/types.py#L126" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
110
110
 
111
111
  ```python
112
112
  validate_absolute_path(cls, path: Path) -> Path
@@ -115,7 +115,7 @@ validate_absolute_path(cls, path: Path) -> Path
115
115
  Ensure path is absolute.
116
116
 
117
117
 
118
- #### `list_files` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/resources/types.py#L122" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
118
+ #### `list_files` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/resources/types.py#L132" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
119
119
 
120
120
  ```python
121
121
  list_files(self) -> list[Path]
@@ -124,7 +124,7 @@ list_files(self) -> list[Path]
124
124
  List files in the directory.
125
125
 
126
126
 
127
- #### `read` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/resources/types.py#L144" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
127
+ #### `read` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/resources/types.py#L148" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
128
128
 
129
129
  ```python
130
130
  read(self) -> str
@@ -0,0 +1,104 @@
1
+ ---
2
+ title: jwt_issuer
3
+ sidebarTitle: jwt_issuer
4
+ ---
5
+
6
+ # `fastmcp.server.auth.jwt_issuer`
7
+
8
+
9
+ JWT token issuance and verification for FastMCP OAuth Proxy.
10
+
11
+ This module implements the token factory pattern for OAuth proxies, where the proxy
12
+ issues its own JWT tokens to clients instead of forwarding upstream provider tokens.
13
+ This maintains proper OAuth 2.0 token audience boundaries.
14
+
15
+
16
+ ## Functions
17
+
18
+ ### `derive_jwt_key` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/jwt_issuer.py#L37" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
19
+
20
+ ```python
21
+ derive_jwt_key() -> bytes
22
+ ```
23
+
24
+
25
+ Derive JWT signing key from a high-entropy or low-entropy key material and server salt.
26
+
27
+
28
+ ## Classes
29
+
30
+ ### `JWTIssuer` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/jwt_issuer.py#L74" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
31
+
32
+
33
+ Issues and validates FastMCP-signed JWT tokens using HS256.
34
+
35
+ This issuer creates JWT tokens for MCP clients with proper audience claims,
36
+ maintaining OAuth 2.0 token boundaries. Tokens are signed with HS256 using
37
+ a key derived from the upstream client secret.
38
+
39
+
40
+ **Methods:**
41
+
42
+ #### `issue_access_token` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/jwt_issuer.py#L100" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
43
+
44
+ ```python
45
+ issue_access_token(self, client_id: str, scopes: list[str], jti: str, expires_in: int = 3600) -> str
46
+ ```
47
+
48
+ Issue a minimal FastMCP access token.
49
+
50
+ FastMCP tokens are reference tokens containing only the minimal claims
51
+ needed for validation and lookup. The JTI maps to the upstream token
52
+ which contains actual user identity and authorization data.
53
+
54
+ **Args:**
55
+ - `client_id`: MCP client ID
56
+ - `scopes`: Token scopes
57
+ - `jti`: Unique token identifier (maps to upstream token)
58
+ - `expires_in`: Token lifetime in seconds
59
+
60
+ **Returns:**
61
+ - Signed JWT token
62
+
63
+
64
+ #### `issue_refresh_token` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/jwt_issuer.py#L147" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
65
+
66
+ ```python
67
+ issue_refresh_token(self, client_id: str, scopes: list[str], jti: str, expires_in: int) -> str
68
+ ```
69
+
70
+ Issue a minimal FastMCP refresh token.
71
+
72
+ FastMCP refresh tokens are reference tokens containing only the minimal
73
+ claims needed for validation and lookup. The JTI maps to the upstream
74
+ token which contains actual user identity and authorization data.
75
+
76
+ **Args:**
77
+ - `client_id`: MCP client ID
78
+ - `scopes`: Token scopes
79
+ - `jti`: Unique token identifier (maps to upstream token)
80
+ - `expires_in`: Token lifetime in seconds (should match upstream refresh expiry)
81
+
82
+ **Returns:**
83
+ - Signed JWT token
84
+
85
+
86
+ #### `verify_token` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/jwt_issuer.py#L195" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
87
+
88
+ ```python
89
+ verify_token(self, token: str) -> dict[str, Any]
90
+ ```
91
+
92
+ Verify and decode a FastMCP token.
93
+
94
+ Validates JWT signature, expiration, issuer, and audience.
95
+
96
+ **Args:**
97
+ - `token`: JWT token to verify
98
+
99
+ **Returns:**
100
+ - Decoded token payload
101
+
102
+ **Raises:**
103
+ - `JoseError`: If token is invalid, expired, or has wrong claims
104
+
@@ -0,0 +1,26 @@
1
+ ---
2
+ title: middleware
3
+ sidebarTitle: middleware
4
+ ---
5
+
6
+ # `fastmcp.server.auth.middleware`
7
+
8
+
9
+ Enhanced authentication middleware with better error messages.
10
+
11
+ This module provides enhanced versions of MCP SDK authentication middleware
12
+ that return more helpful error messages for developers troubleshooting
13
+ authentication issues.
14
+
15
+
16
+ ## Classes
17
+
18
+ ### `RequireAuthMiddleware` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/auth/middleware.py#L22" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
19
+
20
+
21
+ Enhanced authentication middleware with detailed error messages.
22
+
23
+ Extends the SDK's RequireAuthMiddleware to provide more actionable
24
+ error messages when authentication fails. This helps developers
25
+ understand what went wrong and how to fix it.
26
+