fastmcp 2.12.2__tar.gz → 2.12.4__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 (624) hide show
  1. {fastmcp-2.12.2 → fastmcp-2.12.4}/.github/pull_request_template.md +2 -2
  2. {fastmcp-2.12.2 → fastmcp-2.12.4}/.github/workflows/run-tests.yml +3 -3
  3. {fastmcp-2.12.2 → fastmcp-2.12.4}/.pre-commit-config.yaml +7 -0
  4. {fastmcp-2.12.2 → fastmcp-2.12.4}/AGENTS.md +20 -20
  5. {fastmcp-2.12.2 → fastmcp-2.12.4}/PKG-INFO +121 -48
  6. {fastmcp-2.12.2 → fastmcp-2.12.4}/README.md +120 -47
  7. fastmcp-2.12.4/docs/assets/brand/f-watercolor-waves-dark.png +0 -0
  8. fastmcp-2.12.4/docs/assets/brand/f-watercolor-waves.png +0 -0
  9. fastmcp-2.12.4/docs/assets/brand/thumbnail-background.png +0 -0
  10. fastmcp-2.12.4/docs/assets/brand/wordmark-padded.png +0 -0
  11. fastmcp-2.12.4/docs/assets/brand/wordmark-watercolor-rainbow-dark.png +0 -0
  12. fastmcp-2.12.4/docs/assets/brand/wordmark-watercolor-rainbow.png +0 -0
  13. fastmcp-2.12.4/docs/assets/brand/wordmark-watercolor-waves-dark.png +0 -0
  14. fastmcp-2.12.4/docs/assets/brand/wordmark-watercolor-waves.png +0 -0
  15. fastmcp-2.12.4/docs/assets/brand/wordmark-white-padded.png +0 -0
  16. fastmcp-2.12.4/docs/assets/brand/wordmark-white.png +0 -0
  17. fastmcp-2.12.4/docs/assets/brand/wordmark.png +0 -0
  18. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/changelog.mdx +16 -2
  19. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/css/style.css +1 -1
  20. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/development/tests.mdx +1 -1
  21. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/docs.json +23 -7
  22. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/getting-started/quickstart.mdx +3 -4
  23. fastmcp-2.12.4/docs/getting-started/welcome.mdx +110 -0
  24. fastmcp-2.12.4/docs/integrations/auth0.mdx +231 -0
  25. fastmcp-2.12.4/docs/integrations/aws-cognito.mdx +322 -0
  26. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/cursor.mdx +1 -2
  27. fastmcp-2.12.4/docs/integrations/descope.mdx +154 -0
  28. fastmcp-2.12.4/docs/integrations/gemini-cli.mdx +174 -0
  29. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/mcp-json-configuration.mdx +1 -2
  30. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/openapi.mdx +1 -1
  31. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/public/schemas/fastmcp.json/latest.json +2 -1
  32. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/public/schemas/fastmcp.json/v1.json +2 -1
  33. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-cli-cli.mdx +5 -5
  34. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-cli-install-claude_code.mdx +1 -1
  35. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-cli-install-claude_desktop.mdx +1 -1
  36. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-cli-install-cursor.mdx +2 -2
  37. fastmcp-2.12.4/docs/python-sdk/fastmcp-cli-install-gemini_cli.mdx +68 -0
  38. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-cli-install-mcp_json.mdx +1 -1
  39. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-cli-run.mdx +6 -34
  40. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-client-client.mdx +5 -3
  41. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-prompts-prompt.mdx +5 -5
  42. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-resources-resource.mdx +12 -12
  43. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-resources-template.mdx +5 -5
  44. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-auth-oauth_proxy.mdx +10 -10
  45. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-dependencies.mdx +4 -4
  46. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-server.mdx +33 -33
  47. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-tools-tool.mdx +20 -17
  48. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-tools-tool_transform.mdx +1 -1
  49. fastmcp-2.12.4/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-uv.mdx +45 -0
  50. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-types.mdx +19 -13
  51. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/servers/auth/authentication.mdx +4 -4
  52. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/servers/auth/oauth-proxy.mdx +119 -23
  53. fastmcp-2.12.4/docs/servers/auth/oidc-proxy.mdx +204 -0
  54. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/servers/auth/remote-oauth.mdx +4 -4
  55. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/servers/proxy.mdx +1 -1
  56. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/updates.mdx +3 -3
  57. fastmcp-2.12.4/examples/auth/aws_oauth/README.md +47 -0
  58. fastmcp-2.12.4/examples/auth/aws_oauth/client.py +42 -0
  59. fastmcp-2.12.4/examples/auth/aws_oauth/requirements.txt +2 -0
  60. fastmcp-2.12.4/examples/auth/aws_oauth/server.py +59 -0
  61. {fastmcp-2.12.2 → fastmcp-2.12.4}/pyproject.toml +5 -3
  62. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/cli/claude.py +1 -10
  63. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/cli/cli.py +45 -25
  64. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/cli/install/__init__.py +2 -0
  65. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/cli/install/claude_code.py +1 -10
  66. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/cli/install/claude_desktop.py +1 -9
  67. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/cli/install/cursor.py +2 -18
  68. fastmcp-2.12.4/src/fastmcp/cli/install/gemini_cli.py +241 -0
  69. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/cli/install/mcp_json.py +1 -9
  70. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/cli/run.py +2 -86
  71. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/client/auth/oauth.py +50 -37
  72. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/client/client.py +18 -8
  73. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/client/elicitation.py +6 -1
  74. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/client/transports.py +1 -1
  75. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/contrib/component_manager/component_service.py +1 -1
  76. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/contrib/mcp_mixin/README.md +3 -3
  77. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +41 -6
  78. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/experimental/utilities/openapi/director.py +8 -1
  79. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/experimental/utilities/openapi/schemas.py +31 -5
  80. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/prompts/prompt.py +10 -8
  81. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/resources/resource.py +14 -11
  82. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/resources/template.py +12 -10
  83. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/auth/auth.py +10 -4
  84. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/auth/oauth_proxy.py +93 -23
  85. fastmcp-2.12.4/src/fastmcp/server/auth/oidc_proxy.py +348 -0
  86. fastmcp-2.12.4/src/fastmcp/server/auth/providers/auth0.py +174 -0
  87. fastmcp-2.12.4/src/fastmcp/server/auth/providers/aws.py +237 -0
  88. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/auth/providers/azure.py +6 -2
  89. fastmcp-2.12.4/src/fastmcp/server/auth/providers/descope.py +172 -0
  90. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/auth/providers/github.py +6 -2
  91. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/auth/providers/google.py +6 -2
  92. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/auth/providers/workos.py +6 -2
  93. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/context.py +17 -16
  94. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/dependencies.py +18 -5
  95. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/http.py +1 -1
  96. fastmcp-2.12.4/src/fastmcp/server/middleware/logging.py +245 -0
  97. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/middleware/middleware.py +3 -2
  98. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/openapi.py +5 -1
  99. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/server.py +43 -36
  100. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/settings.py +42 -6
  101. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/tools/tool.py +105 -87
  102. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/tools/tool_transform.py +1 -1
  103. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/json_schema.py +18 -1
  104. fastmcp-2.12.4/src/fastmcp/utilities/logging.py +120 -0
  105. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +4 -39
  106. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +3 -2
  107. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/mcp_server_config/v1/schema.json +2 -1
  108. fastmcp-2.12.4/src/fastmcp/utilities/storage.py +204 -0
  109. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/tests.py +8 -6
  110. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/types.py +9 -5
  111. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/cli/test_cli.py +27 -2
  112. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/cli/test_config.py +5 -20
  113. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/cli/test_cursor.py +4 -4
  114. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/cli/test_install.py +62 -0
  115. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/cli/test_mcp_server_config_integration.py +7 -4
  116. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/cli/test_project_prepare.py +3 -0
  117. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/cli/test_run.py +5 -0
  118. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/cli/test_run_config.py +42 -1
  119. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/client/auth/test_oauth_client.py +1 -1
  120. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/client/auth/test_oauth_token_expiry.py +19 -8
  121. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/client/test_client.py +2 -2
  122. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/client/test_elicitation.py +14 -2
  123. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/client/test_openapi_experimental.py +3 -3
  124. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/client/test_openapi_legacy.py +3 -3
  125. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/client/test_sse.py +3 -3
  126. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/client/test_streamable_http.py +4 -3
  127. fastmcp-2.12.4/tests/conftest.py +59 -0
  128. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/contrib/test_bulk_tool_caller.py +127 -55
  129. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/server/openapi/test_openapi_features.py +14 -0
  130. fastmcp-2.12.4/tests/experimental/openapi_parser/utilities/openapi/test_direct_array_schemas.py +323 -0
  131. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/utilities/openapi/test_models.py +22 -1
  132. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/utilities/openapi/test_schemas.py +101 -0
  133. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/prompts/test_prompt_manager.py +4 -3
  134. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/resources/test_resource_template.py +2 -2
  135. fastmcp-2.12.4/tests/server/auth/providers/test_auth0.py +277 -0
  136. fastmcp-2.12.4/tests/server/auth/providers/test_aws.py +245 -0
  137. fastmcp-2.12.4/tests/server/auth/providers/test_descope.py +170 -0
  138. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/auth/providers/test_workos.py +3 -1
  139. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/auth/test_jwt_provider.py +6 -1
  140. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/auth/test_oauth_proxy.py +186 -6
  141. fastmcp-2.12.4/tests/server/auth/test_oauth_proxy_storage.py +213 -0
  142. fastmcp-2.12.4/tests/server/auth/test_oidc_proxy.py +645 -0
  143. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/auth/test_remote_auth_provider.py +23 -0
  144. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/http/test_http_dependencies.py +2 -2
  145. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/middleware/test_error_handling.py +74 -52
  146. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/middleware/test_logging.py +302 -217
  147. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/middleware/test_rate_limiting.py +1 -1
  148. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/middleware/test_timing.py +23 -22
  149. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/openapi/conftest.py +1 -1
  150. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/proxy/test_proxy_client.py +3 -2
  151. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/test_context.py +1 -1
  152. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/test_import_server.py +3 -2
  153. fastmcp-2.12.4/tests/server/test_log_level.py +88 -0
  154. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/test_server.py +57 -0
  155. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/test_server_interactions.py +82 -44
  156. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/test_examples.py +9 -8
  157. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/test_mcp_config.py +3 -3
  158. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/tools/test_tool.py +265 -322
  159. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/tools/test_tool_manager.py +31 -17
  160. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/tools/test_tool_transform.py +12 -28
  161. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/utilities/test_cli.py +9 -9
  162. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/utilities/test_json_schema.py +72 -0
  163. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/utilities/test_json_schema_type.py +17 -11
  164. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/utilities/test_logging.py +4 -4
  165. fastmcp-2.12.4/tests/utilities/test_storage.py +143 -0
  166. {fastmcp-2.12.2 → fastmcp-2.12.4}/uv.lock +22 -22
  167. fastmcp-2.12.2/docs/assets/brand/card-background.png +0 -0
  168. fastmcp-2.12.2/docs/assets/brand/logo-wordmark-dark.svg +0 -4
  169. fastmcp-2.12.2/docs/assets/brand/logo-wordmark.svg +0 -4
  170. fastmcp-2.12.2/docs/getting-started/welcome.mdx +0 -78
  171. fastmcp-2.12.2/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-uv.mdx +0 -75
  172. fastmcp-2.12.2/examples/smart_home/uv.lock +0 -657
  173. fastmcp-2.12.2/src/fastmcp/server/middleware/logging.py +0 -214
  174. fastmcp-2.12.2/src/fastmcp/utilities/logging.py +0 -58
  175. fastmcp-2.12.2/tests/cli/test_run_with_uv.py +0 -249
  176. fastmcp-2.12.2/tests/conftest.py +0 -17
  177. {fastmcp-2.12.2 → fastmcp-2.12.4}/.ccignore +0 -0
  178. {fastmcp-2.12.2 → fastmcp-2.12.4}/.cursor/rules/core-mcp-objects.mdc +0 -0
  179. {fastmcp-2.12.2 → fastmcp-2.12.4}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
  180. {fastmcp-2.12.2 → fastmcp-2.12.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  181. {fastmcp-2.12.2 → fastmcp-2.12.4}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
  182. {fastmcp-2.12.2 → fastmcp-2.12.4}/.github/copilot-instructions.md +0 -0
  183. {fastmcp-2.12.2 → fastmcp-2.12.4}/.github/dependabot.yml +0 -0
  184. {fastmcp-2.12.2 → fastmcp-2.12.4}/.github/release.yml +0 -0
  185. {fastmcp-2.12.2 → fastmcp-2.12.4}/.github/workflows/auto-close-duplicates.yml +0 -0
  186. {fastmcp-2.12.2 → fastmcp-2.12.4}/.github/workflows/marvin-dedupe-issues.yml +0 -0
  187. {fastmcp-2.12.2 → fastmcp-2.12.4}/.github/workflows/marvin-label-triage.yml +0 -0
  188. {fastmcp-2.12.2 → fastmcp-2.12.4}/.github/workflows/marvin.yml +0 -0
  189. {fastmcp-2.12.2 → fastmcp-2.12.4}/.github/workflows/publish.yml +0 -0
  190. {fastmcp-2.12.2 → fastmcp-2.12.4}/.github/workflows/run-static.yml +0 -0
  191. {fastmcp-2.12.2 → fastmcp-2.12.4}/.github/workflows/update-config-schema.yml +0 -0
  192. {fastmcp-2.12.2 → fastmcp-2.12.4}/.github/workflows/update-sdk-docs.yml +0 -0
  193. {fastmcp-2.12.2 → fastmcp-2.12.4}/.gitignore +0 -0
  194. {fastmcp-2.12.2 → fastmcp-2.12.4}/CLAUDE.md +0 -0
  195. {fastmcp-2.12.2 → fastmcp-2.12.4}/CODE_OF_CONDUCT.md +0 -0
  196. {fastmcp-2.12.2 → fastmcp-2.12.4}/LICENSE +0 -0
  197. {fastmcp-2.12.2 → fastmcp-2.12.4}/README_OPENAPI.md +0 -0
  198. {fastmcp-2.12.2 → fastmcp-2.12.4}/Windows_Notes.md +0 -0
  199. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/.ccignore +0 -0
  200. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/.cursor/rules/mintlify.mdc +0 -0
  201. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/assets/brand/blue-logo.png +0 -0
  202. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/assets/brand/favicon.svg +0 -0
  203. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/assets/images/fastmcp_cloud/connect.png +0 -0
  204. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/assets/images/fastmcp_cloud/create_project.png +0 -0
  205. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/assets/images/fastmcp_cloud/deployment.png +0 -0
  206. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/assets/images/fastmcp_cloud/quickstart.png +0 -0
  207. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/assets/images/tutorial-rest-api-result.png +0 -0
  208. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/assets/schemas/mcp_server_config/latest.json +0 -0
  209. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/assets/schemas/mcp_server_config/v1.json +0 -0
  210. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/assets/updates/release-2-7.png +0 -0
  211. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/clients/auth/bearer.mdx +0 -0
  212. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/clients/auth/oauth.mdx +0 -0
  213. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/clients/client.mdx +0 -0
  214. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/clients/elicitation.mdx +0 -0
  215. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/clients/logging.mdx +0 -0
  216. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/clients/messages.mdx +0 -0
  217. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/clients/progress.mdx +0 -0
  218. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/clients/prompts.mdx +0 -0
  219. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/clients/resources.mdx +0 -0
  220. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/clients/roots.mdx +0 -0
  221. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/clients/sampling.mdx +0 -0
  222. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/clients/tools.mdx +0 -0
  223. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/clients/transports.mdx +0 -0
  224. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/community/README.md +0 -0
  225. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/community/showcase.mdx +0 -0
  226. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/css/banner.css +0 -0
  227. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/css/python-sdk.css +0 -0
  228. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/css/version-badge.css +0 -0
  229. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/deployment/fastmcp-cloud.mdx +0 -0
  230. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/deployment/running-server.mdx +0 -0
  231. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/deployment/self-hosted.mdx +0 -0
  232. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/deployment/server-configuration.mdx +0 -0
  233. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/development/contributing.mdx +0 -0
  234. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/development/releases.mdx +0 -0
  235. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/getting-started/installation.mdx +0 -0
  236. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/anthropic.mdx +0 -0
  237. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/asgi.mdx +0 -0
  238. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/authkit.mdx +0 -0
  239. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/azure.mdx +0 -0
  240. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/chatgpt.mdx +0 -0
  241. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/claude-code.mdx +0 -0
  242. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/claude-desktop.mdx +0 -0
  243. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/cursor-install-mcp.png +0 -0
  244. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/eunomia-authorization.mdx +0 -0
  245. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/fastapi.mdx +0 -0
  246. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/gemini.mdx +0 -0
  247. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/github.mdx +0 -0
  248. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/google.mdx +0 -0
  249. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/images/authkit/enable_dcr.png +0 -0
  250. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/images/permit/abac_condition_example.png +0 -0
  251. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/images/permit/abac_policy_example.png +0 -0
  252. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/images/permit/policy_mapping.png +0 -0
  253. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/images/permit/role_assignement.png +0 -0
  254. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/openai.mdx +0 -0
  255. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/permit.mdx +0 -0
  256. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/integrations/workos.mdx +0 -0
  257. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/patterns/cli.mdx +0 -0
  258. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/patterns/contrib.mdx +0 -0
  259. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/patterns/decorating-methods.mdx +0 -0
  260. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/patterns/tool-transformation.mdx +0 -0
  261. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-cli-__init__.mdx +0 -0
  262. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-cli-claude.mdx +0 -0
  263. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-cli-install-__init__.mdx +0 -0
  264. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-cli-install-shared.mdx +0 -0
  265. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-client-__init__.mdx +0 -0
  266. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-client-auth-__init__.mdx +0 -0
  267. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-client-auth-bearer.mdx +0 -0
  268. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-client-auth-oauth.mdx +0 -0
  269. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-client-elicitation.mdx +0 -0
  270. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-client-logging.mdx +0 -0
  271. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-client-messages.mdx +0 -0
  272. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-client-oauth_callback.mdx +0 -0
  273. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-client-progress.mdx +0 -0
  274. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-client-roots.mdx +0 -0
  275. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-client-sampling.mdx +0 -0
  276. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-client-transports.mdx +0 -0
  277. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-exceptions.mdx +0 -0
  278. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-mcp_config.mdx +0 -0
  279. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-prompts-__init__.mdx +0 -0
  280. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +0 -0
  281. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-resources-__init__.mdx +0 -0
  282. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-resources-resource_manager.mdx +0 -0
  283. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-resources-types.mdx +0 -0
  284. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-__init__.mdx +0 -0
  285. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-auth-__init__.mdx +0 -0
  286. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-auth-auth.mdx +0 -0
  287. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-auth-providers-__init__.mdx +0 -0
  288. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-auth-providers-azure.mdx +0 -0
  289. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +0 -0
  290. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-auth-providers-github.mdx +0 -0
  291. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-auth-providers-google.mdx +0 -0
  292. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +0 -0
  293. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-auth-providers-jwt.mdx +0 -0
  294. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-auth-providers-workos.mdx +0 -0
  295. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-auth-redirect_validation.mdx +0 -0
  296. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-context.mdx +0 -0
  297. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-elicitation.mdx +0 -0
  298. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-http.mdx +0 -0
  299. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-low_level.mdx +0 -0
  300. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-middleware-__init__.mdx +0 -0
  301. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-middleware-error_handling.mdx +0 -0
  302. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-middleware-logging.mdx +0 -0
  303. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +0 -0
  304. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-middleware-rate_limiting.mdx +0 -0
  305. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-middleware-timing.mdx +0 -0
  306. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-openapi.mdx +0 -0
  307. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-server-proxy.mdx +0 -0
  308. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-settings.mdx +0 -0
  309. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-tools-__init__.mdx +0 -0
  310. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-tools-tool_manager.mdx +0 -0
  311. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-__init__.mdx +0 -0
  312. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-auth.mdx +0 -0
  313. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-cli.mdx +0 -0
  314. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-components.mdx +0 -0
  315. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-exceptions.mdx +0 -0
  316. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-http.mdx +0 -0
  317. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-inspect.mdx +0 -0
  318. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-json_schema.mdx +0 -0
  319. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-json_schema_type.mdx +0 -0
  320. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-logging.mdx +0 -0
  321. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +0 -0
  322. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-mcp_server_config-__init__.mdx +0 -0
  323. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-__init__.mdx +0 -0
  324. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-__init__.mdx +0 -0
  325. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-base.mdx +0 -0
  326. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-mcp_server_config.mdx +0 -0
  327. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-__init__.mdx +0 -0
  328. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-base.mdx +0 -0
  329. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-filesystem.mdx +0 -0
  330. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-openapi.mdx +0 -0
  331. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/python-sdk/fastmcp-utilities-tests.mdx +0 -0
  332. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/servers/auth/full-oauth-server.mdx +0 -0
  333. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/servers/auth/token-verification.mdx +0 -0
  334. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/servers/composition.mdx +0 -0
  335. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/servers/context.mdx +0 -0
  336. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/servers/elicitation.mdx +0 -0
  337. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/servers/logging.mdx +0 -0
  338. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/servers/middleware.mdx +0 -0
  339. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/servers/progress.mdx +0 -0
  340. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/servers/prompts.mdx +0 -0
  341. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/servers/resources.mdx +0 -0
  342. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/servers/sampling.mdx +0 -0
  343. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/servers/server.mdx +0 -0
  344. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/servers/tools.mdx +0 -0
  345. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/snippets/local-focus.mdx +0 -0
  346. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/snippets/version-badge.mdx +0 -0
  347. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/snippets/youtube-embed.mdx +0 -0
  348. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/tutorials/create-mcp-server.mdx +0 -0
  349. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/tutorials/mcp.mdx +0 -0
  350. {fastmcp-2.12.2 → fastmcp-2.12.4}/docs/tutorials/rest-api.mdx +0 -0
  351. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/atproto_mcp/README.md +0 -0
  352. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/atproto_mcp/demo.py +0 -0
  353. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/atproto_mcp/fastmcp.json +0 -0
  354. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/atproto_mcp/pyproject.toml +0 -0
  355. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/atproto_mcp/src/atproto_mcp/__init__.py +0 -0
  356. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/atproto_mcp/src/atproto_mcp/__main__.py +0 -0
  357. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/atproto_mcp/src/atproto_mcp/_atproto/__init__.py +0 -0
  358. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/atproto_mcp/src/atproto_mcp/_atproto/_client.py +0 -0
  359. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/atproto_mcp/src/atproto_mcp/_atproto/_posts.py +0 -0
  360. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/atproto_mcp/src/atproto_mcp/_atproto/_profile.py +0 -0
  361. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/atproto_mcp/src/atproto_mcp/_atproto/_read.py +0 -0
  362. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/atproto_mcp/src/atproto_mcp/_atproto/_social.py +0 -0
  363. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/atproto_mcp/src/atproto_mcp/py.typed +0 -0
  364. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/atproto_mcp/src/atproto_mcp/server.py +0 -0
  365. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/atproto_mcp/src/atproto_mcp/settings.py +0 -0
  366. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/atproto_mcp/src/atproto_mcp/types.py +0 -0
  367. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/auth/azure_oauth/README.md +0 -0
  368. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/auth/azure_oauth/client.py +0 -0
  369. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/auth/azure_oauth/server.py +0 -0
  370. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/auth/github_oauth/README.md +0 -0
  371. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/auth/github_oauth/client.py +0 -0
  372. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/auth/github_oauth/server.py +0 -0
  373. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/auth/google_oauth/README.md +0 -0
  374. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/auth/google_oauth/client.py +0 -0
  375. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/auth/google_oauth/server.py +0 -0
  376. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/auth/workos_oauth/README.md +0 -0
  377. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/auth/workos_oauth/client.py +0 -0
  378. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/auth/workos_oauth/server.py +0 -0
  379. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/complex_inputs.py +0 -0
  380. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/config_server.py +0 -0
  381. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/desktop.py +0 -0
  382. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/echo.py +0 -0
  383. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/fastmcp_config/env_interpolation_example.json +0 -0
  384. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/fastmcp_config/fastmcp.json +0 -0
  385. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/fastmcp_config/full_example.fastmcp.json +0 -0
  386. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/fastmcp_config/server.py +0 -0
  387. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/fastmcp_config/simple.fastmcp.json +0 -0
  388. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/fastmcp_config_demo/README.md +0 -0
  389. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/fastmcp_config_demo/fastmcp.json +0 -0
  390. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/fastmcp_config_demo/server.py +0 -0
  391. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/get_file.py +0 -0
  392. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/in_memory_proxy_example.py +0 -0
  393. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/memory.fastmcp.json +0 -0
  394. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/memory.py +0 -0
  395. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/mount_example.fastmcp.json +0 -0
  396. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/mount_example.py +0 -0
  397. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/sampling.py +0 -0
  398. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/sampling_fallback.py +0 -0
  399. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/screenshot.fastmcp.json +0 -0
  400. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/screenshot.py +0 -0
  401. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/serializer.py +0 -0
  402. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/simple_echo.py +0 -0
  403. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/smart_home/README.md +0 -0
  404. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/smart_home/hub.fastmcp.json +0 -0
  405. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/smart_home/lights.fastmcp.json +0 -0
  406. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/smart_home/pyproject.toml +0 -0
  407. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/smart_home/src/smart_home/__init__.py +0 -0
  408. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/smart_home/src/smart_home/__main__.py +0 -0
  409. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/smart_home/src/smart_home/hub.py +0 -0
  410. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
  411. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -0
  412. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/smart_home/src/smart_home/lights/server.py +0 -0
  413. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/smart_home/src/smart_home/py.typed +0 -0
  414. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/smart_home/src/smart_home/settings.py +0 -0
  415. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/tags_example.py +0 -0
  416. {fastmcp-2.12.2 → fastmcp-2.12.4}/examples/text_me.py +0 -0
  417. {fastmcp-2.12.2 → fastmcp-2.12.4}/justfile +0 -0
  418. {fastmcp-2.12.2 → fastmcp-2.12.4}/scripts/auto_close_duplicates.py +0 -0
  419. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/__init__.py +0 -0
  420. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/cli/__init__.py +0 -0
  421. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/cli/install/shared.py +0 -0
  422. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/client/__init__.py +0 -0
  423. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/client/auth/__init__.py +0 -0
  424. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/client/auth/bearer.py +0 -0
  425. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/client/logging.py +0 -0
  426. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/client/messages.py +0 -0
  427. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/client/oauth_callback.py +0 -0
  428. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/client/progress.py +0 -0
  429. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/client/roots.py +0 -0
  430. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/client/sampling.py +0 -0
  431. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/contrib/README.md +0 -0
  432. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  433. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  434. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  435. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  436. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/contrib/component_manager/README.md +0 -0
  437. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/contrib/component_manager/__init__.py +0 -0
  438. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/contrib/component_manager/component_manager.py +0 -0
  439. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/contrib/component_manager/example.py +0 -0
  440. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  441. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
  442. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/exceptions.py +0 -0
  443. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/experimental/sampling/__init__.py +0 -0
  444. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/experimental/sampling/handlers/__init__.py +0 -0
  445. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/experimental/sampling/handlers/base.py +0 -0
  446. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/experimental/sampling/handlers/openai.py +0 -0
  447. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/experimental/server/openapi/README.md +0 -0
  448. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/experimental/server/openapi/__init__.py +0 -0
  449. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/experimental/server/openapi/components.py +0 -0
  450. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/experimental/server/openapi/routing.py +0 -0
  451. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/experimental/server/openapi/server.py +0 -0
  452. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/experimental/utilities/openapi/README.md +0 -0
  453. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/experimental/utilities/openapi/__init__.py +0 -0
  454. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/experimental/utilities/openapi/formatters.py +0 -0
  455. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/experimental/utilities/openapi/json_schema_converter.py +0 -0
  456. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/experimental/utilities/openapi/models.py +0 -0
  457. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/experimental/utilities/openapi/parser.py +0 -0
  458. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/mcp_config.py +0 -0
  459. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/prompts/__init__.py +0 -0
  460. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/prompts/prompt_manager.py +0 -0
  461. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/py.typed +0 -0
  462. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/resources/__init__.py +0 -0
  463. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/resources/resource_manager.py +0 -0
  464. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/resources/types.py +0 -0
  465. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/__init__.py +0 -0
  466. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/auth/__init__.py +0 -0
  467. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/auth/providers/__init__.py +0 -0
  468. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/auth/providers/bearer.py +0 -0
  469. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/auth/providers/in_memory.py +0 -0
  470. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/auth/providers/jwt.py +0 -0
  471. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/auth/redirect_validation.py +0 -0
  472. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/elicitation.py +0 -0
  473. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/low_level.py +0 -0
  474. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/middleware/__init__.py +0 -0
  475. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/middleware/error_handling.py +0 -0
  476. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/middleware/rate_limiting.py +0 -0
  477. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/middleware/timing.py +0 -0
  478. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/proxy.py +0 -0
  479. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/server/sampling/handler.py +0 -0
  480. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/tools/__init__.py +0 -0
  481. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/tools/tool_manager.py +0 -0
  482. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/__init__.py +0 -0
  483. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/auth.py +0 -0
  484. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/cli.py +0 -0
  485. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/components.py +0 -0
  486. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/exceptions.py +0 -0
  487. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/http.py +0 -0
  488. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/inspect.py +0 -0
  489. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/json_schema_type.py +0 -0
  490. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/mcp_config.py +0 -0
  491. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  492. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  493. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  494. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  495. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  496. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  497. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  498. {fastmcp-2.12.2 → fastmcp-2.12.4}/src/fastmcp/utilities/openapi.py +0 -0
  499. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/__init__.py +0 -0
  500. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/cli/__init__.py +0 -0
  501. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/cli/test_mcp_server_config_schema.py +0 -0
  502. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/cli/test_server_args.py +0 -0
  503. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/cli/test_shared.py +0 -0
  504. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/cli/test_with_argv.py +0 -0
  505. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/client/__init__.py +0 -0
  506. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/client/auth/__init__.py +0 -0
  507. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/client/test_logs.py +0 -0
  508. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/client/test_notifications.py +0 -0
  509. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/client/test_progress.py +0 -0
  510. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/client/test_roots.py +0 -0
  511. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/client/test_sampling.py +0 -0
  512. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/client/test_stdio.py +0 -0
  513. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/client/transports/__init__.py +0 -0
  514. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/client/transports/test_uv_transport.py +0 -0
  515. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/contrib/__init__.py +0 -0
  516. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/contrib/test_component_manager.py +0 -0
  517. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/contrib/test_mcp_mixin.py +0 -0
  518. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/deprecated/__init__.py +0 -0
  519. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/deprecated/test_bearer_auth_provider.py +0 -0
  520. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/deprecated/test_dependencies.py +0 -0
  521. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/deprecated/test_deprecated.py +0 -0
  522. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/deprecated/test_mount_import_arg_order.py +0 -0
  523. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/deprecated/test_mount_separators.py +0 -0
  524. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/deprecated/test_output_schema_false.py +0 -0
  525. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/deprecated/test_proxy_client.py +0 -0
  526. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/deprecated/test_resource_prefixes.py +0 -0
  527. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/deprecated/test_route_type_ignore.py +0 -0
  528. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/deprecated/test_settings.py +0 -0
  529. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/README.md +0 -0
  530. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/__init__.py +0 -0
  531. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/README.md +0 -0
  532. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/__init__.py +0 -0
  533. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/conftest.py +0 -0
  534. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/server/__init__.py +0 -0
  535. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/server/openapi/__init__.py +0 -0
  536. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/server/openapi/test_comprehensive.py +0 -0
  537. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/server/openapi/test_deepobject_style.py +0 -0
  538. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/server/openapi/test_end_to_end_compatibility.py +0 -0
  539. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/server/openapi/test_openapi_performance.py +0 -0
  540. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/server/openapi/test_parameter_collisions.py +0 -0
  541. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/server/openapi/test_performance_comparison.py +0 -0
  542. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/server/openapi/test_server.py +0 -0
  543. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/utilities/__init__.py +0 -0
  544. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/utilities/openapi/__init__.py +0 -0
  545. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/utilities/openapi/conftest.py +0 -0
  546. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/utilities/openapi/test_allof_requestbody.py +0 -0
  547. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/utilities/openapi/test_director.py +0 -0
  548. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/utilities/openapi/test_legacy_compatibility.py +0 -0
  549. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/utilities/openapi/test_nullable_fields.py +0 -0
  550. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/utilities/openapi/test_parser.py +0 -0
  551. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/openapi_parser/utilities/openapi/test_transitive_references.py +0 -0
  552. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/experimental/sampling/test_openai_handler.py +0 -0
  553. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/integration_tests/__init__.py +0 -0
  554. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/integration_tests/auth/__init__.py +0 -0
  555. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/integration_tests/auth/test_github_provider_integration.py +0 -0
  556. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/integration_tests/conftest.py +0 -0
  557. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/integration_tests/test_github_mcp_remote.py +0 -0
  558. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/prompts/__init__.py +0 -0
  559. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/prompts/test_prompt.py +0 -0
  560. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/resources/__init__.py +0 -0
  561. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/resources/test_file_resources.py +0 -0
  562. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/resources/test_function_resources.py +0 -0
  563. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/resources/test_resource_manager.py +0 -0
  564. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/resources/test_resource_template_meta.py +0 -0
  565. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/resources/test_resources.py +0 -0
  566. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/__init__.py +0 -0
  567. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/auth/__init__.py +0 -0
  568. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/auth/providers/__init__.py +0 -0
  569. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/auth/providers/test_azure.py +0 -0
  570. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/auth/providers/test_github.py +0 -0
  571. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/auth/providers/test_google.py +0 -0
  572. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/auth/test_auth_provider.py +0 -0
  573. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/auth/test_oauth_proxy_redirect_validation.py +0 -0
  574. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/auth/test_redirect_validation.py +0 -0
  575. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/auth/test_static_token_verifier.py +0 -0
  576. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/http/__init__.py +0 -0
  577. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/http/test_bearer_auth_backend.py +0 -0
  578. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/http/test_custom_routes.py +0 -0
  579. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/http/test_http_auth_middleware.py +0 -0
  580. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/http/test_http_middleware.py +0 -0
  581. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/middleware/__init__.py +0 -0
  582. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/middleware/test_middleware.py +0 -0
  583. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/openapi/__init__.py +0 -0
  584. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/openapi/test_advanced_behavior.py +0 -0
  585. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/openapi/test_basic_functionality.py +0 -0
  586. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/openapi/test_configuration.py +0 -0
  587. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/openapi/test_deepobject_style.py +0 -0
  588. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/openapi/test_description_propagation.py +0 -0
  589. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/openapi/test_explode_integration.py +0 -0
  590. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/openapi/test_openapi_compatibility.py +0 -0
  591. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/openapi/test_openapi_path_parameters.py +0 -0
  592. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/openapi/test_optional_parameters.py +0 -0
  593. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/openapi/test_parameter_collisions.py +0 -0
  594. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/openapi/test_route_map_fn.py +0 -0
  595. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/proxy/__init__.py +0 -0
  596. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/proxy/test_proxy_server.py +0 -0
  597. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/proxy/test_stateful_proxy_client.py +0 -0
  598. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/test_app_state.py +0 -0
  599. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/test_auth_integration.py +0 -0
  600. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/test_experimental_openapi_feature_flag.py +0 -0
  601. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/test_file_server.py +0 -0
  602. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/test_logging.py +0 -0
  603. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/test_mount.py +0 -0
  604. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/test_resource_prefix_formats.py +0 -0
  605. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/test_run_server.py +0 -0
  606. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/test_streamable_http_no_redirect.py +0 -0
  607. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/test_tool_annotations.py +0 -0
  608. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/test_tool_exclude_args.py +0 -0
  609. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/server/test_tool_transformation.py +0 -0
  610. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/tools/__init__.py +0 -0
  611. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/tools/test_tool_future_annotations.py +0 -0
  612. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/utilities/__init__.py +0 -0
  613. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/utilities/openapi/__init__.py +0 -0
  614. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/utilities/openapi/conftest.py +0 -0
  615. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/utilities/openapi/test_nullable_fields.py +0 -0
  616. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/utilities/openapi/test_openapi.py +0 -0
  617. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/utilities/openapi/test_openapi_advanced.py +0 -0
  618. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/utilities/openapi/test_openapi_fastapi.py +0 -0
  619. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/utilities/openapi/test_openapi_output_schemas.py +0 -0
  620. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/utilities/test_components.py +0 -0
  621. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/utilities/test_inspect.py +0 -0
  622. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/utilities/test_tests.py +0 -0
  623. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/utilities/test_typeadapter.py +0 -0
  624. {fastmcp-2.12.2 → fastmcp-2.12.4}/tests/utilities/test_types.py +0 -0
@@ -14,7 +14,7 @@ NOTE:
14
14
  If you do not follow these steps, your Pull Request will be closed without review.
15
15
  -->
16
16
 
17
- - [ ] My change is related to issue #(issue number)
17
+ - [ ] My change closes #(issue number)
18
18
  - [ ] I have followed the repository's development workflow
19
19
  - [ ] I have tested my changes manually and by adding relevant tests
20
20
  - [ ] I have performed all required documentation updates
@@ -25,4 +25,4 @@ If you do not follow these steps, your Pull Request will be closed without revie
25
25
  - [ ] I have self-reviewed my changes
26
26
  - [ ] My Pull Request is ready for review
27
27
 
28
- ---
28
+ ---
@@ -48,10 +48,10 @@ jobs:
48
48
  run: uv sync --frozen
49
49
 
50
50
  - name: Run tests (excluding integration and client_process)
51
- run: uv run pytest -v tests -m "not integration and not client_process"
51
+ run: uv run pytest --inline-snapshot=disable -v tests -m "not integration and not client_process" --numprocesses auto --maxprocesses 4 --dist worksteal
52
52
 
53
53
  - name: Run client process tests separately
54
- run: uv run pytest -v tests -m "client_process" -x
54
+ run: uv run pytest --inline-snapshot=disable -v tests -m "client_process" -x
55
55
 
56
56
  run_integration_tests:
57
57
  name: "Run integration tests"
@@ -74,7 +74,7 @@ jobs:
74
74
 
75
75
  - name: Run integration tests
76
76
  # use longer per-test timeout than the default 3s
77
- run: uv run pytest -v tests -m "integration" --timeout=15
77
+ run: uv run pytest -v tests -m "integration" --timeout=15 --numprocesses auto --maxprocesses 2 --dist worksteal
78
78
  env:
79
79
  FASTMCP_GITHUB_TOKEN: ${{ secrets.FASTMCP_GITHUB_TOKEN }}
80
80
  FASTMCP_TEST_AUTH_GITHUB_CLIENT_ID: ${{ secrets.FASTMCP_TEST_AUTH_GITHUB_CLIENT_ID }}
@@ -39,3 +39,10 @@ repos:
39
39
  - id: no-commit-to-branch
40
40
  name: prevent commits to main
41
41
  args: [--branch, main]
42
+
43
+ - repo: https://github.com/codespell-project/codespell
44
+ rev: v2.4.1
45
+ hooks:
46
+ - id: codespell # See pyproject.toml for args
47
+ additional_dependencies:
48
+ - tomli
@@ -20,24 +20,24 @@ uv run pytest # Run full test suite
20
20
 
21
21
  ## Repository Structure
22
22
 
23
- | Path | Purpose |
24
- | ---------------- | ------------------------------------------------------ |
25
- | `src/fastmcp/` | Library source code (Python ≥ 3.10) |
26
- | `├─server/` | Server implementation, `FastMCP`, auth, networking |
27
- | `│ ├─auth/` | Authentication providers (Bearer, JWT, WorkOS) |
28
- | `│ └─middleware/` | Error handling, logging, rate limiting |
29
- | `├─client/` | High-level client SDK + transports |
30
- | `│ └─auth/` | Client authentication (Bearer, OAuth) |
31
- | `├─tools/` | Tool implementations + `ToolManager` |
32
- | `├─resources/` | Resources, templates + `ResourceManager` |
33
- | `├─prompts/` | Prompt templates + `PromptManager` |
34
- | `├─cli/` | FastMCP CLI commands (`run`, `dev`, `install`) |
35
- | `├─contrib/` | Community contributions (bulk caller, mixins) |
36
- | `├─experimental/` | Experimental features (new OpenAPI parser) |
37
- | `└─utilities/` | Shared utilities (logging, JSON schema, HTTP) |
38
- | `tests/` | Comprehensive pytest suite with markers |
39
- | `docs/` | Mintlify documentation (published to gofastmcp.com) |
40
- | `examples/` | Runnable demo servers (echo, smart_home, atproto) |
23
+ | Path | Purpose |
24
+ | ------------------ | --------------------------------------------------- |
25
+ | `src/fastmcp/` | Library source code (Python ≥ 3.10) |
26
+ | `├─server/` | Server implementation, `FastMCP`, auth, networking |
27
+ | `│ ├─auth/` | Authentication providers (Bearer, JWT, WorkOS) |
28
+ | `│ └─middleware/` | Error handling, logging, rate limiting |
29
+ | `├─client/` | High-level client SDK + transports |
30
+ | `│ └─auth/` | Client authentication (Bearer, OAuth) |
31
+ | `├─tools/` | Tool implementations + `ToolManager` |
32
+ | `├─resources/` | Resources, templates + `ResourceManager` |
33
+ | `├─prompts/` | Prompt templates + `PromptManager` |
34
+ | `├─cli/` | FastMCP CLI commands (`run`, `dev`, `install`) |
35
+ | `├─contrib/` | Community contributions (bulk caller, mixins) |
36
+ | `├─experimental/` | Experimental features (new OpenAPI parser) |
37
+ | `└─utilities/` | Shared utilities (logging, JSON schema, HTTP) |
38
+ | `tests/` | Comprehensive pytest suite with markers |
39
+ | `docs/` | Mintlify documentation (published to gofastmcp.com) |
40
+ | `examples/` | Runnable demo servers (echo, smart_home, atproto) |
41
41
 
42
42
  ## Core MCP Objects
43
43
 
@@ -64,13 +64,13 @@ When modifying MCP functionality, changes typically need to be applied across al
64
64
  - Every test: atomic, self-contained, single functionality
65
65
  - Use parameterization for multiple examples of same functionality
66
66
  - Use separate tests for different functionality pieces
67
- - Put imports at the top of the file, not in the test body
67
+ - **ALWAYS** Put imports at the top of the file, not in the test body
68
68
  - **NEVER** add `@pytest.mark.asyncio` to tests - `asyncio_mode = "auto"` is set globally
69
69
  - **ALWAYS** run pytest after significant changes
70
70
 
71
71
  ### Inline Snapshots
72
72
 
73
- FastMCP uses `inline-snapshot` for testing complex data structures. On first run with empty `snapshot()`, pytest will auto-populate the expected value. To update snapshots after intentional changes, run `pytest --inline-snapshot=fix`. This is particularly useful for testing JSON schemas and API responses.
73
+ FastMCP uses `inline-snapshot` for testing complex data structures. On first run with empty `snapshot()`, pytest will auto-populate the expected value when running `pytest --inline-snapshot=create`. To update snapshots after intentional changes, run `pytest --inline-snapshot=fix`. This is particularly useful for testing JSON schemas and API responses.
74
74
 
75
75
  ### Always Use In-Memory Transport
76
76
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastmcp
3
- Version: 2.12.2
3
+ Version: 2.12.4
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
@@ -37,6 +37,13 @@ Description-Content-Type: text/markdown
37
37
  <div align="center">
38
38
 
39
39
  <!-- omit in toc -->
40
+
41
+ <picture>
42
+ <source width="550" media="(prefers-color-scheme: dark)" srcset="docs/assets/brand/wordmark-watercolor-waves-dark.png">
43
+ <source width="550" media="(prefers-color-scheme: light)" srcset="docs/assets/brand/wordmark-watercolor-waves.png">
44
+ <img width="550" alt="FastMCP Logo" src="docs/assets/brand/wordmark-watercolor-waves.png">
45
+ </picture>
46
+
40
47
  # FastMCP v2 🚀
41
48
 
42
49
  <strong>The fast, Pythonic way to build MCP servers and clients.</strong>
@@ -53,19 +60,19 @@ Description-Content-Type: text/markdown
53
60
 
54
61
  > [!Note]
55
62
  >
56
- > #### Beyond the Protocol
57
- >
58
- > FastMCP is the standard framework for working with the Model Context Protocol. FastMCP 1.0 was incorporated into the [official MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) in 2024.
63
+ > #### FastMCP 2.0: The Standard Framework
59
64
  >
60
- > This is FastMCP 2.0, the **actively maintained version** that provides a complete toolkit for working with the MCP ecosystem.
65
+ > FastMCP pioneered Python MCP development, and FastMCP 1.0 was incorporated into the [official MCP SDK](https://github.com/modelcontextprotocol/python-sdk) in 2024.
61
66
  >
62
- > FastMCP 2.0 has a comprehensive set of features that go far beyond the core MCP specification, all in service of providing **the simplest path to production**. These include deployment, auth, clients, server proxying and composition, generating servers from REST APIs, dynamic tool rewriting, built-in testing tools, integrations, and more.
67
+ > **This is FastMCP 2.0** the actively maintained, production-ready framework that extends far beyond basic protocol implementation. While the SDK provides core functionality, FastMCP 2.0 delivers everything needed for production: advanced MCP patterns (server composition, proxying, OpenAPI/FastAPI generation, tool transformation), enterprise auth (Google, GitHub, WorkOS, Azure, Auth0, and more), deployment tools, testing utilities, and comprehensive client libraries.
63
68
  >
64
- > Ready to upgrade or get started? Follow the [installation instructions](https://gofastmcp.com/getting-started/installation), which include steps for upgrading from the official MCP SDK.
69
+ > **For production MCP applications, install FastMCP:** `pip install fastmcp`
65
70
 
66
71
  ---
67
72
 
68
- The [Model Context Protocol (MCP)](https://modelcontextprotocol.io) is a new, standardized way to provide context and tools to your LLMs, and FastMCP makes building MCP servers and clients simple and intuitive. Create tools, expose resources, define prompts, and connect components with clean, Pythonic code.
73
+ **FastMCP is the standard framework for building MCP applications**, providing the fastest path from idea to production.
74
+
75
+ The [Model Context Protocol (MCP)](https://modelcontextprotocol.io) is a standardized way to provide context and tools to LLMs. FastMCP makes building production-ready MCP servers simple, with enterprise auth, deployment tools, and a complete ecosystem built in.
69
76
 
70
77
  ```python
71
78
  # server.py
@@ -104,28 +111,33 @@ There are two ways to access the LLM-friendly documentation:
104
111
  <!-- omit in toc -->
105
112
  ## Table of Contents
106
113
 
107
- - [What is MCP?](#what-is-mcp)
108
- - [Why FastMCP?](#why-fastmcp)
109
- - [Installation](#installation)
110
- - [Core Concepts](#core-concepts)
111
- - [The `FastMCP` Server](#the-fastmcp-server)
112
- - [Tools](#tools)
113
- - [Resources \& Templates](#resources--templates)
114
- - [Prompts](#prompts)
115
- - [Context](#context)
116
- - [MCP Clients](#mcp-clients)
117
- - [Advanced Features](#advanced-features)
118
- - [Proxy Servers](#proxy-servers)
119
- - [Composing MCP Servers](#composing-mcp-servers)
120
- - [OpenAPI \& FastAPI Generation](#openapi--fastapi-generation)
121
- - [Authentication \& Security](#authentication--security)
122
- - [Running Your Server](#running-your-server)
123
- - [Contributing](#contributing)
124
- - [Prerequisites](#prerequisites)
125
- - [Setup](#setup)
126
- - [Unit Tests](#unit-tests)
127
- - [Static Checks](#static-checks)
128
- - [Pull Requests](#pull-requests)
114
+ - [FastMCP v2 🚀](#fastmcp-v2-)
115
+ - [📚 Documentation](#-documentation)
116
+ - [What is MCP?](#what-is-mcp)
117
+ - [Why FastMCP?](#why-fastmcp)
118
+ - [Installation](#installation)
119
+ - [Core Concepts](#core-concepts)
120
+ - [The `FastMCP` Server](#the-fastmcp-server)
121
+ - [Tools](#tools)
122
+ - [Resources \& Templates](#resources--templates)
123
+ - [Prompts](#prompts)
124
+ - [Context](#context)
125
+ - [MCP Clients](#mcp-clients)
126
+ - [Authentication](#authentication)
127
+ - [Enterprise Authentication, Zero Configuration](#enterprise-authentication-zero-configuration)
128
+ - [Deployment](#deployment)
129
+ - [From Development to Production](#from-development-to-production)
130
+ - [Advanced Features](#advanced-features)
131
+ - [Proxy Servers](#proxy-servers)
132
+ - [Composing MCP Servers](#composing-mcp-servers)
133
+ - [OpenAPI \& FastAPI Generation](#openapi--fastapi-generation)
134
+ - [Running Your Server](#running-your-server)
135
+ - [Contributing](#contributing)
136
+ - [Prerequisites](#prerequisites)
137
+ - [Setup](#setup)
138
+ - [Unit Tests](#unit-tests)
139
+ - [Static Checks](#static-checks)
140
+ - [Pull Requests](#pull-requests)
129
141
 
130
142
  ---
131
143
 
@@ -142,11 +154,7 @@ FastMCP provides a high-level, Pythonic interface for building, managing, and in
142
154
 
143
155
  ## Why FastMCP?
144
156
 
145
- The MCP protocol is powerful but implementing it involves a lot of boilerplate - server setup, protocol handlers, content types, error management. FastMCP handles all the complex protocol details and server management, so you can focus on building great tools. It's designed to be high-level and Pythonic; in most cases, decorating a function is all you need.
146
-
147
- FastMCP 2.0 has evolved into a comprehensive platform that goes far beyond basic protocol implementation. While 1.0 provided server-building capabilities (and is now part of the official MCP SDK), 2.0 offers a complete ecosystem including client libraries, authentication systems, deployment tools, integrations with major AI platforms, testing frameworks, and production-ready infrastructure patterns.
148
-
149
- FastMCP aims to be:
157
+ FastMCP handles all the complex protocol details so you can focus on building. In most cases, decorating a Python function is all you need — FastMCP handles the rest.
150
158
 
151
159
  🚀 **Fast:** High-level interface means less code and faster development
152
160
 
@@ -154,7 +162,9 @@ FastMCP aims to be:
154
162
 
155
163
  🐍 **Pythonic:** Feels natural to Python developers
156
164
 
157
- 🔍 **Complete:** A comprehensive platform for all MCP use cases, from dev to prod
165
+ 🔍 **Complete:** Everything for production enterprise auth (Google, GitHub, Azure, Auth0, WorkOS), deployment tools, testing frameworks, client libraries, and more
166
+
167
+ FastMCP provides the shortest path from idea to production. Deploy locally, to the cloud with [FastMCP Cloud](https://fastmcp.cloud), or to your own infrastructure.
158
168
 
159
169
  ## Installation
160
170
 
@@ -278,7 +288,7 @@ async def main():
278
288
  tools = await client.list_tools()
279
289
  print(f"Available tools: {tools}")
280
290
  result = await client.call_tool("add", {"a": 5, "b": 3})
281
- print(f"Result: {result.text}")
291
+ print(f"Result: {result.content[0].text}")
282
292
 
283
293
  # Connect via SSE
284
294
  async with Client("http://localhost:8000/sse") as client:
@@ -324,9 +334,82 @@ async def main():
324
334
 
325
335
  Learn more in the [**Client Documentation**](https://gofastmcp.com/clients/client) and [**Transports Documentation**](https://gofastmcp.com/clients/transports).
326
336
 
337
+ ## Authentication
338
+
339
+ ### Enterprise Authentication, Zero Configuration
340
+
341
+ FastMCP provides comprehensive authentication support that sets it apart from basic MCP implementations. Secure your servers and authenticate your clients with the same enterprise-grade providers used by major corporations.
342
+
343
+ **Built-in OAuth Providers:**
344
+
345
+ - **Google**
346
+ - **GitHub**
347
+ - **Microsoft Azure**
348
+ - **Auth0**
349
+ - **WorkOS**
350
+ - **Descope**
351
+ - **JWT/Custom**
352
+ - **API Keys**
353
+
354
+ Protecting a server takes just two lines:
355
+
356
+ ```python
357
+ from fastmcp.server.auth import GoogleProvider
358
+
359
+ auth = GoogleProvider(client_id="...", client_secret="...", base_url="https://myserver.com")
360
+ mcp = FastMCP("Protected Server", auth=auth)
361
+ ```
362
+
363
+ Connecting to protected servers is even simpler:
364
+
365
+ ```python
366
+ async with Client("https://protected-server.com/mcp", auth="oauth") as client:
367
+ # Automatic browser-based OAuth flow
368
+ result = await client.call_tool("protected_tool")
369
+ ```
370
+
371
+ **Why FastMCP Auth Matters:**
372
+
373
+ - **Production-Ready:** Persistent storage, token refresh, comprehensive error handling
374
+ - **Zero-Config OAuth:** Just pass `auth="oauth"` for automatic setup
375
+ - **Enterprise Integration:** WorkOS SSO, Azure Active Directory, Auth0 tenants
376
+ - **Developer Experience:** Automatic browser launch, local callback server, environment variable support
377
+ - **Advanced Architecture:** Full OIDC support, Dynamic Client Registration (DCR), and unique OAuth proxy pattern that enables DCR with any provider
378
+
379
+ *Authentication this comprehensive is unique to FastMCP 2.0.*
380
+
381
+ Learn more in the **Authentication Documentation** for [servers](https://gofastmcp.com/servers/auth) and [clients](https://gofastmcp.com/clients/auth).
382
+
383
+ ## Deployment
384
+
385
+ ### From Development to Production
386
+
387
+ FastMCP supports every deployment scenario from local development to global scale:
388
+
389
+ **Development:** Run locally with a single command
390
+
391
+ ```bash
392
+ fastmcp run server.py
393
+ ```
394
+
395
+ **Production:** Deploy to [**FastMCP Cloud**](https://fastmcp.cloud) — Remote MCP that just works
396
+
397
+ - Instant HTTPS endpoints
398
+ - Built-in authentication
399
+ - Zero configuration
400
+ - Free for personal servers
401
+
402
+ **Self-Hosted:** Use HTTP or SSE transports for your own infrastructure
403
+
404
+ ```python
405
+ mcp.run(transport="http", host="0.0.0.0", port=8000)
406
+ ```
407
+
408
+ Learn more in the [**Deployment Documentation**](https://gofastmcp.com/deployment).
409
+
327
410
  ## Advanced Features
328
411
 
329
- FastMCP introduces powerful ways to structure and deploy your MCP applications.
412
+ FastMCP introduces powerful ways to structure and compose your MCP applications.
330
413
 
331
414
  ### Proxy Servers
332
415
 
@@ -346,16 +429,6 @@ Automatically generate FastMCP servers from existing OpenAPI specifications (`Fa
346
429
 
347
430
  Learn more: [**OpenAPI Integration**](https://gofastmcp.com/integrations/openapi) | [**FastAPI Integration**](https://gofastmcp.com/integrations/fastapi).
348
431
 
349
- ### Authentication & Security
350
-
351
- FastMCP provides built-in authentication support to secure both your MCP servers and clients in production environments. Protect your server endpoints from unauthorized access and authenticate your clients against secured MCP servers using industry-standard protocols.
352
-
353
- - **Server Protection**: Secure your FastMCP server endpoints with configurable authentication providers
354
- - **Client Authentication**: Connect to authenticated MCP servers with automatic credential management
355
- - **Production Ready**: Support for common authentication patterns used in enterprise environments
356
-
357
- Learn more in the **Authentication Documentation** for [servers](https://gofastmcp.com/servers/auth) and [clients](https://gofastmcp.com/clients/auth).
358
-
359
432
  ## Running Your Server
360
433
 
361
434
  The main way to run a FastMCP server is by calling the `run()` method on your server instance:
@@ -1,6 +1,13 @@
1
1
  <div align="center">
2
2
 
3
3
  <!-- omit in toc -->
4
+
5
+ <picture>
6
+ <source width="550" media="(prefers-color-scheme: dark)" srcset="docs/assets/brand/wordmark-watercolor-waves-dark.png">
7
+ <source width="550" media="(prefers-color-scheme: light)" srcset="docs/assets/brand/wordmark-watercolor-waves.png">
8
+ <img width="550" alt="FastMCP Logo" src="docs/assets/brand/wordmark-watercolor-waves.png">
9
+ </picture>
10
+
4
11
  # FastMCP v2 🚀
5
12
 
6
13
  <strong>The fast, Pythonic way to build MCP servers and clients.</strong>
@@ -17,19 +24,19 @@
17
24
 
18
25
  > [!Note]
19
26
  >
20
- > #### Beyond the Protocol
21
- >
22
- > FastMCP is the standard framework for working with the Model Context Protocol. FastMCP 1.0 was incorporated into the [official MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) in 2024.
27
+ > #### FastMCP 2.0: The Standard Framework
23
28
  >
24
- > This is FastMCP 2.0, the **actively maintained version** that provides a complete toolkit for working with the MCP ecosystem.
29
+ > FastMCP pioneered Python MCP development, and FastMCP 1.0 was incorporated into the [official MCP SDK](https://github.com/modelcontextprotocol/python-sdk) in 2024.
25
30
  >
26
- > FastMCP 2.0 has a comprehensive set of features that go far beyond the core MCP specification, all in service of providing **the simplest path to production**. These include deployment, auth, clients, server proxying and composition, generating servers from REST APIs, dynamic tool rewriting, built-in testing tools, integrations, and more.
31
+ > **This is FastMCP 2.0** the actively maintained, production-ready framework that extends far beyond basic protocol implementation. While the SDK provides core functionality, FastMCP 2.0 delivers everything needed for production: advanced MCP patterns (server composition, proxying, OpenAPI/FastAPI generation, tool transformation), enterprise auth (Google, GitHub, WorkOS, Azure, Auth0, and more), deployment tools, testing utilities, and comprehensive client libraries.
27
32
  >
28
- > Ready to upgrade or get started? Follow the [installation instructions](https://gofastmcp.com/getting-started/installation), which include steps for upgrading from the official MCP SDK.
33
+ > **For production MCP applications, install FastMCP:** `pip install fastmcp`
29
34
 
30
35
  ---
31
36
 
32
- The [Model Context Protocol (MCP)](https://modelcontextprotocol.io) is a new, standardized way to provide context and tools to your LLMs, and FastMCP makes building MCP servers and clients simple and intuitive. Create tools, expose resources, define prompts, and connect components with clean, Pythonic code.
37
+ **FastMCP is the standard framework for building MCP applications**, providing the fastest path from idea to production.
38
+
39
+ The [Model Context Protocol (MCP)](https://modelcontextprotocol.io) is a standardized way to provide context and tools to LLMs. FastMCP makes building production-ready MCP servers simple, with enterprise auth, deployment tools, and a complete ecosystem built in.
33
40
 
34
41
  ```python
35
42
  # server.py
@@ -68,28 +75,33 @@ There are two ways to access the LLM-friendly documentation:
68
75
  <!-- omit in toc -->
69
76
  ## Table of Contents
70
77
 
71
- - [What is MCP?](#what-is-mcp)
72
- - [Why FastMCP?](#why-fastmcp)
73
- - [Installation](#installation)
74
- - [Core Concepts](#core-concepts)
75
- - [The `FastMCP` Server](#the-fastmcp-server)
76
- - [Tools](#tools)
77
- - [Resources \& Templates](#resources--templates)
78
- - [Prompts](#prompts)
79
- - [Context](#context)
80
- - [MCP Clients](#mcp-clients)
81
- - [Advanced Features](#advanced-features)
82
- - [Proxy Servers](#proxy-servers)
83
- - [Composing MCP Servers](#composing-mcp-servers)
84
- - [OpenAPI \& FastAPI Generation](#openapi--fastapi-generation)
85
- - [Authentication \& Security](#authentication--security)
86
- - [Running Your Server](#running-your-server)
87
- - [Contributing](#contributing)
88
- - [Prerequisites](#prerequisites)
89
- - [Setup](#setup)
90
- - [Unit Tests](#unit-tests)
91
- - [Static Checks](#static-checks)
92
- - [Pull Requests](#pull-requests)
78
+ - [FastMCP v2 🚀](#fastmcp-v2-)
79
+ - [📚 Documentation](#-documentation)
80
+ - [What is MCP?](#what-is-mcp)
81
+ - [Why FastMCP?](#why-fastmcp)
82
+ - [Installation](#installation)
83
+ - [Core Concepts](#core-concepts)
84
+ - [The `FastMCP` Server](#the-fastmcp-server)
85
+ - [Tools](#tools)
86
+ - [Resources \& Templates](#resources--templates)
87
+ - [Prompts](#prompts)
88
+ - [Context](#context)
89
+ - [MCP Clients](#mcp-clients)
90
+ - [Authentication](#authentication)
91
+ - [Enterprise Authentication, Zero Configuration](#enterprise-authentication-zero-configuration)
92
+ - [Deployment](#deployment)
93
+ - [From Development to Production](#from-development-to-production)
94
+ - [Advanced Features](#advanced-features)
95
+ - [Proxy Servers](#proxy-servers)
96
+ - [Composing MCP Servers](#composing-mcp-servers)
97
+ - [OpenAPI \& FastAPI Generation](#openapi--fastapi-generation)
98
+ - [Running Your Server](#running-your-server)
99
+ - [Contributing](#contributing)
100
+ - [Prerequisites](#prerequisites)
101
+ - [Setup](#setup)
102
+ - [Unit Tests](#unit-tests)
103
+ - [Static Checks](#static-checks)
104
+ - [Pull Requests](#pull-requests)
93
105
 
94
106
  ---
95
107
 
@@ -106,11 +118,7 @@ FastMCP provides a high-level, Pythonic interface for building, managing, and in
106
118
 
107
119
  ## Why FastMCP?
108
120
 
109
- The MCP protocol is powerful but implementing it involves a lot of boilerplate - server setup, protocol handlers, content types, error management. FastMCP handles all the complex protocol details and server management, so you can focus on building great tools. It's designed to be high-level and Pythonic; in most cases, decorating a function is all you need.
110
-
111
- FastMCP 2.0 has evolved into a comprehensive platform that goes far beyond basic protocol implementation. While 1.0 provided server-building capabilities (and is now part of the official MCP SDK), 2.0 offers a complete ecosystem including client libraries, authentication systems, deployment tools, integrations with major AI platforms, testing frameworks, and production-ready infrastructure patterns.
112
-
113
- FastMCP aims to be:
121
+ FastMCP handles all the complex protocol details so you can focus on building. In most cases, decorating a Python function is all you need — FastMCP handles the rest.
114
122
 
115
123
  🚀 **Fast:** High-level interface means less code and faster development
116
124
 
@@ -118,7 +126,9 @@ FastMCP aims to be:
118
126
 
119
127
  🐍 **Pythonic:** Feels natural to Python developers
120
128
 
121
- 🔍 **Complete:** A comprehensive platform for all MCP use cases, from dev to prod
129
+ 🔍 **Complete:** Everything for production enterprise auth (Google, GitHub, Azure, Auth0, WorkOS), deployment tools, testing frameworks, client libraries, and more
130
+
131
+ FastMCP provides the shortest path from idea to production. Deploy locally, to the cloud with [FastMCP Cloud](https://fastmcp.cloud), or to your own infrastructure.
122
132
 
123
133
  ## Installation
124
134
 
@@ -242,7 +252,7 @@ async def main():
242
252
  tools = await client.list_tools()
243
253
  print(f"Available tools: {tools}")
244
254
  result = await client.call_tool("add", {"a": 5, "b": 3})
245
- print(f"Result: {result.text}")
255
+ print(f"Result: {result.content[0].text}")
246
256
 
247
257
  # Connect via SSE
248
258
  async with Client("http://localhost:8000/sse") as client:
@@ -288,9 +298,82 @@ async def main():
288
298
 
289
299
  Learn more in the [**Client Documentation**](https://gofastmcp.com/clients/client) and [**Transports Documentation**](https://gofastmcp.com/clients/transports).
290
300
 
301
+ ## Authentication
302
+
303
+ ### Enterprise Authentication, Zero Configuration
304
+
305
+ FastMCP provides comprehensive authentication support that sets it apart from basic MCP implementations. Secure your servers and authenticate your clients with the same enterprise-grade providers used by major corporations.
306
+
307
+ **Built-in OAuth Providers:**
308
+
309
+ - **Google**
310
+ - **GitHub**
311
+ - **Microsoft Azure**
312
+ - **Auth0**
313
+ - **WorkOS**
314
+ - **Descope**
315
+ - **JWT/Custom**
316
+ - **API Keys**
317
+
318
+ Protecting a server takes just two lines:
319
+
320
+ ```python
321
+ from fastmcp.server.auth import GoogleProvider
322
+
323
+ auth = GoogleProvider(client_id="...", client_secret="...", base_url="https://myserver.com")
324
+ mcp = FastMCP("Protected Server", auth=auth)
325
+ ```
326
+
327
+ Connecting to protected servers is even simpler:
328
+
329
+ ```python
330
+ async with Client("https://protected-server.com/mcp", auth="oauth") as client:
331
+ # Automatic browser-based OAuth flow
332
+ result = await client.call_tool("protected_tool")
333
+ ```
334
+
335
+ **Why FastMCP Auth Matters:**
336
+
337
+ - **Production-Ready:** Persistent storage, token refresh, comprehensive error handling
338
+ - **Zero-Config OAuth:** Just pass `auth="oauth"` for automatic setup
339
+ - **Enterprise Integration:** WorkOS SSO, Azure Active Directory, Auth0 tenants
340
+ - **Developer Experience:** Automatic browser launch, local callback server, environment variable support
341
+ - **Advanced Architecture:** Full OIDC support, Dynamic Client Registration (DCR), and unique OAuth proxy pattern that enables DCR with any provider
342
+
343
+ *Authentication this comprehensive is unique to FastMCP 2.0.*
344
+
345
+ Learn more in the **Authentication Documentation** for [servers](https://gofastmcp.com/servers/auth) and [clients](https://gofastmcp.com/clients/auth).
346
+
347
+ ## Deployment
348
+
349
+ ### From Development to Production
350
+
351
+ FastMCP supports every deployment scenario from local development to global scale:
352
+
353
+ **Development:** Run locally with a single command
354
+
355
+ ```bash
356
+ fastmcp run server.py
357
+ ```
358
+
359
+ **Production:** Deploy to [**FastMCP Cloud**](https://fastmcp.cloud) — Remote MCP that just works
360
+
361
+ - Instant HTTPS endpoints
362
+ - Built-in authentication
363
+ - Zero configuration
364
+ - Free for personal servers
365
+
366
+ **Self-Hosted:** Use HTTP or SSE transports for your own infrastructure
367
+
368
+ ```python
369
+ mcp.run(transport="http", host="0.0.0.0", port=8000)
370
+ ```
371
+
372
+ Learn more in the [**Deployment Documentation**](https://gofastmcp.com/deployment).
373
+
291
374
  ## Advanced Features
292
375
 
293
- FastMCP introduces powerful ways to structure and deploy your MCP applications.
376
+ FastMCP introduces powerful ways to structure and compose your MCP applications.
294
377
 
295
378
  ### Proxy Servers
296
379
 
@@ -310,16 +393,6 @@ Automatically generate FastMCP servers from existing OpenAPI specifications (`Fa
310
393
 
311
394
  Learn more: [**OpenAPI Integration**](https://gofastmcp.com/integrations/openapi) | [**FastAPI Integration**](https://gofastmcp.com/integrations/fastapi).
312
395
 
313
- ### Authentication & Security
314
-
315
- FastMCP provides built-in authentication support to secure both your MCP servers and clients in production environments. Protect your server endpoints from unauthorized access and authenticate your clients against secured MCP servers using industry-standard protocols.
316
-
317
- - **Server Protection**: Secure your FastMCP server endpoints with configurable authentication providers
318
- - **Client Authentication**: Connect to authenticated MCP servers with automatic credential management
319
- - **Production Ready**: Support for common authentication patterns used in enterprise environments
320
-
321
- Learn more in the **Authentication Documentation** for [servers](https://gofastmcp.com/servers/auth) and [clients](https://gofastmcp.com/clients/auth).
322
-
323
396
  ## Running Your Server
324
397
 
325
398
  The main way to run a FastMCP server is by calling the `run()` method on your server instance:
@@ -4,7 +4,21 @@ icon: "list-check"
4
4
  rss: true
5
5
  ---
6
6
 
7
- <Update label="v2.12.1" description="2025-09-06">
7
+ <Update label="v2.12.2" description="2025-09-03">
8
+
9
+ **[v2.12.2: Perchance to Stream](https://github.com/jlowin/fastmcp/releases/tag/v2.12.2)**
10
+
11
+ This is a hotfix for a bug where the `streamable-http` transport was not recognized as a valid option in `fastmcp.json` configuration files, despite being supported by the CLI. This resulted in a parsing error when the CLI arguments were merged against the configuration spec.
12
+
13
+ ## What's Changed
14
+ ### Fixes 🐞
15
+ * Fix streamable-http transport validation in fastmcp.json config by [@jlowin](https://github.com/jlowin) in [#1739](https://github.com/jlowin/fastmcp/pull/1739)
16
+
17
+ **Full Changelog**: [v2.12.1...v2.12.2](https://github.com/jlowin/fastmcp/compare/v2.12.1...v2.12.2)
18
+
19
+ </Update>
20
+
21
+ <Update label="v2.12.1" description="2025-09-03">
8
22
 
9
23
  **[v2.12.1: OAuth to Joy](https://github.com/jlowin/fastmcp/releases/tag/v2.12.1)**
10
24
 
@@ -1743,7 +1757,7 @@ This release is highlighted by the ability to handle complex JSON objects as MCP
1743
1757
  ### New Features 🎉
1744
1758
 
1745
1759
  * Set up multiple os tests by [@jlowin](https://github.com/jlowin) in [#44](https://github.com/jlowin/fastmcp/pull/44)
1746
- * Changes to accomodate windows users. by [@justjoehere](https://github.com/justjoehere) in [#42](https://github.com/jlowin/fastmcp/pull/42)
1760
+ * Changes to accommodate windows users. by [@justjoehere](https://github.com/justjoehere) in [#42](https://github.com/jlowin/fastmcp/pull/42)
1747
1761
  * Handle complex inputs by [@jurasofish](https://github.com/jurasofish) in [#31](https://github.com/jlowin/fastmcp/pull/31)
1748
1762
 
1749
1763
  ### Docs 📚