fastmcp 2.10.6__tar.gz → 2.11.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. {fastmcp-2.10.6 → fastmcp-2.11.1}/.github/ISSUE_TEMPLATE/bug.yml +13 -0
  2. {fastmcp-2.10.6 → fastmcp-2.11.1}/.github/release.yml +0 -4
  3. {fastmcp-2.10.6 → fastmcp-2.11.1}/.github/workflows/run-tests.yml +5 -2
  4. {fastmcp-2.10.6 → fastmcp-2.11.1}/PKG-INFO +4 -3
  5. {fastmcp-2.10.6 → fastmcp-2.11.1}/README.md +2 -2
  6. fastmcp-2.11.1/docs/.ccignore +2 -0
  7. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/changelog.mdx +151 -0
  8. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/clients/auth/bearer.mdx +0 -1
  9. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/clients/auth/oauth.mdx +2 -1
  10. fastmcp-2.11.1/docs/clients/logging.mdx +111 -0
  11. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/clients/prompts.mdx +29 -0
  12. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/clients/resources.mdx +33 -0
  13. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/clients/tools.mdx +29 -0
  14. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/clients/transports.mdx +73 -0
  15. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/deployment/running-server.mdx +36 -0
  16. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/docs.json +18 -25
  17. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/integrations/anthropic.mdx +8 -8
  18. fastmcp-2.11.1/docs/integrations/authkit.mdx +103 -0
  19. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/integrations/chatgpt.mdx +1 -1
  20. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/integrations/claude-code.mdx +46 -7
  21. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/integrations/claude-desktop.mdx +65 -6
  22. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/integrations/cursor.mdx +65 -8
  23. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/integrations/eunomia-authorization.mdx +17 -22
  24. fastmcp-2.11.1/docs/integrations/fastapi.mdx +446 -0
  25. fastmcp-2.11.1/docs/integrations/images/authkit/enable_dcr.png +0 -0
  26. fastmcp-2.11.1/docs/integrations/images/permit/abac_condition_example.png +0 -0
  27. fastmcp-2.11.1/docs/integrations/images/permit/abac_policy_example.png +0 -0
  28. fastmcp-2.11.1/docs/integrations/images/permit/policy_mapping.png +0 -0
  29. fastmcp-2.11.1/docs/integrations/images/permit/role_assignement.png +0 -0
  30. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/integrations/mcp-json-configuration.mdx +57 -1
  31. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/integrations/openai.mdx +8 -9
  32. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/integrations/openapi.mdx +57 -0
  33. fastmcp-2.11.1/docs/integrations/permit.mdx +352 -0
  34. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/patterns/cli.mdx +91 -8
  35. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/patterns/decorating-methods.mdx +2 -2
  36. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/patterns/tool-transformation.mdx +85 -1
  37. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-cli.mdx +11 -10
  38. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-install-claude_code.mdx +4 -1
  39. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-install-claude_desktop.mdx +4 -1
  40. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-install-cursor.mdx +4 -1
  41. fastmcp-2.10.6/docs/python-sdk/fastmcp-cli-install-mcp_config.mdx → fastmcp-2.11.1/docs/python-sdk/fastmcp-cli-install-mcp_json.mdx +10 -7
  42. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-run.mdx +48 -8
  43. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-auth-oauth.mdx +40 -51
  44. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-transports.mdx +32 -26
  45. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-mcp_config.mdx +73 -35
  46. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-prompts-prompt.mdx +7 -7
  47. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-resources-resource.mdx +14 -14
  48. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-resources-template.mdx +18 -18
  49. fastmcp-2.11.1/docs/python-sdk/fastmcp-server-auth-auth.mdx +124 -0
  50. fastmcp-2.11.1/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +13 -0
  51. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +10 -10
  52. fastmcp-2.11.1/docs/python-sdk/fastmcp-server-auth-providers-jwt.mdx +149 -0
  53. fastmcp-2.11.1/docs/python-sdk/fastmcp-server-auth-providers-workos.mdx +58 -0
  54. fastmcp-2.11.1/docs/python-sdk/fastmcp-server-auth-registry.mdx +43 -0
  55. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-context.mdx +72 -34
  56. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-dependencies.mdx +1 -1
  57. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-http.mdx +14 -14
  58. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +15 -17
  59. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-proxy.mdx +67 -33
  60. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-server.mdx +72 -50
  61. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-settings.mdx +25 -12
  62. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-tools-tool.mdx +18 -18
  63. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-tools-tool_manager.mdx +37 -10
  64. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-tools-tool_transform.mdx +56 -7
  65. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-components.mdx +24 -10
  66. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-json_schema.mdx +1 -1
  67. fastmcp-2.11.1/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +28 -0
  68. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-openapi.mdx +16 -16
  69. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-tests.mdx +32 -1
  70. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-types.mdx +19 -17
  71. fastmcp-2.11.1/docs/servers/auth/authentication.mdx +193 -0
  72. fastmcp-2.11.1/docs/servers/auth/full-oauth-server.mdx +229 -0
  73. fastmcp-2.11.1/docs/servers/auth/remote-oauth.mdx +189 -0
  74. fastmcp-2.11.1/docs/servers/auth/token-verification.mdx +200 -0
  75. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/servers/context.mdx +46 -0
  76. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/servers/logging.mdx +45 -3
  77. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/servers/middleware.mdx +68 -4
  78. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/servers/prompts.mdx +9 -2
  79. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/servers/proxy.mdx +11 -12
  80. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/servers/resources.mdx +73 -15
  81. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/servers/server.mdx +36 -34
  82. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/servers/tools.mdx +113 -50
  83. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/tutorials/rest-api.mdx +2 -2
  84. {fastmcp-2.10.6 → fastmcp-2.11.1}/justfile +1 -1
  85. {fastmcp-2.10.6 → fastmcp-2.11.1}/pyproject.toml +3 -1
  86. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/cli/cli.py +128 -33
  87. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/cli/install/claude_code.py +42 -1
  88. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/cli/install/claude_desktop.py +42 -1
  89. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/cli/install/cursor.py +42 -1
  90. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/cli/install/mcp_json.py +41 -0
  91. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/cli/run.py +127 -1
  92. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/client/__init__.py +2 -0
  93. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/client/auth/oauth.py +68 -99
  94. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/client/oauth_callback.py +18 -0
  95. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/client/transports.py +69 -15
  96. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/contrib/component_manager/example.py +2 -2
  97. fastmcp-2.11.1/src/fastmcp/experimental/server/openapi/README.md +266 -0
  98. fastmcp-2.11.1/src/fastmcp/experimental/server/openapi/__init__.py +38 -0
  99. fastmcp-2.11.1/src/fastmcp/experimental/server/openapi/components.py +348 -0
  100. fastmcp-2.11.1/src/fastmcp/experimental/server/openapi/routing.py +132 -0
  101. fastmcp-2.11.1/src/fastmcp/experimental/server/openapi/server.py +466 -0
  102. fastmcp-2.11.1/src/fastmcp/experimental/utilities/openapi/README.md +239 -0
  103. fastmcp-2.11.1/src/fastmcp/experimental/utilities/openapi/__init__.py +68 -0
  104. fastmcp-2.11.1/src/fastmcp/experimental/utilities/openapi/director.py +208 -0
  105. fastmcp-2.11.1/src/fastmcp/experimental/utilities/openapi/formatters.py +355 -0
  106. fastmcp-2.11.1/src/fastmcp/experimental/utilities/openapi/json_schema_converter.py +340 -0
  107. fastmcp-2.11.1/src/fastmcp/experimental/utilities/openapi/models.py +85 -0
  108. fastmcp-2.11.1/src/fastmcp/experimental/utilities/openapi/parser.py +618 -0
  109. fastmcp-2.11.1/src/fastmcp/experimental/utilities/openapi/schemas.py +538 -0
  110. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/mcp_config.py +125 -88
  111. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/prompts/prompt.py +11 -1
  112. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/resources/resource.py +21 -1
  113. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/resources/template.py +20 -1
  114. fastmcp-2.11.1/src/fastmcp/server/auth/__init__.py +20 -0
  115. fastmcp-2.11.1/src/fastmcp/server/auth/auth.py +278 -0
  116. fastmcp-2.11.1/src/fastmcp/server/auth/providers/bearer.py +25 -0
  117. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/server/auth/providers/in_memory.py +4 -2
  118. fastmcp-2.10.6/src/fastmcp/server/auth/providers/bearer.py → fastmcp-2.11.1/src/fastmcp/server/auth/providers/jwt.py +207 -142
  119. fastmcp-2.11.1/src/fastmcp/server/auth/providers/workos.py +151 -0
  120. fastmcp-2.11.1/src/fastmcp/server/auth/registry.py +52 -0
  121. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/server/context.py +107 -26
  122. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/server/dependencies.py +9 -2
  123. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/server/http.py +48 -57
  124. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/server/middleware/middleware.py +3 -23
  125. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/server/openapi.py +1 -1
  126. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/server/proxy.py +50 -11
  127. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/server/server.py +168 -59
  128. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/settings.py +73 -6
  129. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/tools/tool.py +36 -3
  130. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/tools/tool_manager.py +38 -2
  131. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/tools/tool_transform.py +112 -3
  132. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/utilities/components.py +41 -3
  133. fastmcp-2.11.1/src/fastmcp/utilities/json_schema.py +213 -0
  134. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/utilities/json_schema_type.py +1 -3
  135. fastmcp-2.11.1/src/fastmcp/utilities/mcp_config.py +28 -0
  136. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/utilities/openapi.py +243 -57
  137. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/utilities/tests.py +54 -6
  138. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/utilities/types.py +94 -11
  139. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/cli/test_cli.py +210 -0
  140. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/cli/test_cursor.py +3 -0
  141. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/cli/test_install.py +92 -6
  142. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/cli/test_run.py +61 -0
  143. fastmcp-2.11.1/tests/cli/test_run_with_uv.py +240 -0
  144. fastmcp-2.11.1/tests/client/auth/test_oauth_client.py +128 -0
  145. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/client/test_client.py +12 -0
  146. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/client/test_logs.py +35 -5
  147. fastmcp-2.11.1/tests/client/test_openapi_experimental.py +201 -0
  148. fastmcp-2.11.1/tests/client/test_openapi_legacy.py +198 -0
  149. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/client/test_sampling.py +59 -4
  150. fastmcp-2.11.1/tests/client/transports/test_uv_transport.py +98 -0
  151. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/contrib/test_component_manager.py +6 -7
  152. fastmcp-2.11.1/tests/deprecated/test_bearer_auth_provider.py +13 -0
  153. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/deprecated/test_settings.py +2 -0
  154. fastmcp-2.11.1/tests/experimental/server/openapi/__init__.py +1 -0
  155. fastmcp-2.11.1/tests/experimental/server/openapi/test_comprehensive.py +706 -0
  156. fastmcp-2.11.1/tests/experimental/server/openapi/test_deepobject_style.py +338 -0
  157. fastmcp-2.11.1/tests/experimental/server/openapi/test_end_to_end_compatibility.py +323 -0
  158. fastmcp-2.11.1/tests/experimental/server/openapi/test_openapi_features.py +391 -0
  159. fastmcp-2.11.1/tests/experimental/server/openapi/test_parameter_collisions.py +215 -0
  160. fastmcp-2.11.1/tests/experimental/server/openapi/test_performance_comparison.py +291 -0
  161. fastmcp-2.11.1/tests/experimental/server/openapi/test_server.py +340 -0
  162. fastmcp-2.11.1/tests/experimental/server/test_openapi_performance.py +142 -0
  163. fastmcp-2.11.1/tests/experimental/utilities/openapi/__init__.py +1 -0
  164. fastmcp-2.11.1/tests/experimental/utilities/openapi/conftest.py +222 -0
  165. fastmcp-2.11.1/tests/experimental/utilities/openapi/test_director.py +462 -0
  166. fastmcp-2.11.1/tests/experimental/utilities/openapi/test_legacy_compatibility.py +333 -0
  167. fastmcp-2.11.1/tests/experimental/utilities/openapi/test_models.py +453 -0
  168. fastmcp-2.11.1/tests/experimental/utilities/openapi/test_nullable_fields.py +245 -0
  169. fastmcp-2.11.1/tests/experimental/utilities/openapi/test_parser.py +331 -0
  170. fastmcp-2.11.1/tests/experimental/utilities/openapi/test_schemas.py +532 -0
  171. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/prompts/test_prompt.py +15 -0
  172. fastmcp-2.11.1/tests/resources/test_resource_template_meta.py +25 -0
  173. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/resources/test_resources.py +20 -0
  174. fastmcp-2.10.6/tests/auth/providers/test_bearer.py → fastmcp-2.11.1/tests/server/auth/test_jwt_provider.py +61 -45
  175. fastmcp-2.11.1/tests/server/auth/test_static_token_verifier.py +89 -0
  176. fastmcp-2.11.1/tests/server/auth/test_workos.py +58 -0
  177. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/http/test_bearer_auth_backend.py +15 -15
  178. fastmcp-2.11.1/tests/server/http/test_http_auth_middleware.py +78 -0
  179. fastmcp-2.11.1/tests/server/middleware/__init__.py +0 -0
  180. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/middleware/test_middleware.py +166 -2
  181. fastmcp-2.11.1/tests/server/openapi/__init__.py +0 -0
  182. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/openapi/test_basic_functionality.py +2 -2
  183. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/openapi/test_optional_parameters.py +14 -14
  184. fastmcp-2.11.1/tests/server/proxy/__init__.py +0 -0
  185. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/proxy/test_proxy_client.py +58 -0
  186. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/proxy/test_proxy_server.py +51 -4
  187. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/proxy/test_stateful_proxy_client.py +28 -0
  188. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/test_context.py +78 -24
  189. fastmcp-2.11.1/tests/server/test_experimental_openapi_feature_flag.py +98 -0
  190. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/test_mount.py +14 -6
  191. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/test_server.py +213 -1
  192. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/test_server_interactions.py +272 -1
  193. fastmcp-2.11.1/tests/server/test_tool_transformation.py +40 -0
  194. fastmcp-2.11.1/tests/test_mcp_config.py +586 -0
  195. fastmcp-2.11.1/tests/tools/__init__.py +0 -0
  196. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/tools/test_tool.py +16 -0
  197. fastmcp-2.11.1/tests/tools/test_tool_future_annotations.py +170 -0
  198. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/tools/test_tool_manager.py +80 -0
  199. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/tools/test_tool_transform.py +95 -2
  200. fastmcp-2.11.1/tests/utilities/openapi/test_nullable_fields.py +243 -0
  201. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/utilities/test_json_schema.py +59 -14
  202. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/utilities/test_json_schema_type.py +55 -0
  203. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/utilities/test_typeadapter.py +29 -0
  204. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/utilities/test_types.py +75 -0
  205. {fastmcp-2.10.6 → fastmcp-2.11.1}/uv.lock +478 -202
  206. fastmcp-2.10.6/docs/clients/logging.mdx +0 -76
  207. fastmcp-2.10.6/docs/integrations/fastapi.mdx +0 -229
  208. fastmcp-2.10.6/docs/python-sdk/fastmcp-server-auth-auth.mdx +0 -30
  209. fastmcp-2.10.6/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +0 -152
  210. fastmcp-2.10.6/docs/python-sdk/fastmcp-server-middleware.mdx +0 -56
  211. fastmcp-2.10.6/docs/python-sdk/fastmcp-utilities-cache.mdx +0 -30
  212. fastmcp-2.10.6/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +0 -50
  213. fastmcp-2.10.6/docs/servers/auth/bearer.mdx +0 -238
  214. fastmcp-2.10.6/src/fastmcp/server/auth/__init__.py +0 -4
  215. fastmcp-2.10.6/src/fastmcp/server/auth/auth.py +0 -60
  216. fastmcp-2.10.6/src/fastmcp/server/auth/providers/bearer_env.py +0 -63
  217. fastmcp-2.10.6/src/fastmcp/utilities/cache.py +0 -26
  218. fastmcp-2.10.6/src/fastmcp/utilities/json_schema.py +0 -175
  219. fastmcp-2.10.6/tests/auth/providers/test_bearer_env.py +0 -91
  220. fastmcp-2.10.6/tests/auth/providers/test_token_verifier.py +0 -179
  221. fastmcp-2.10.6/tests/auth/test_oauth_client.py +0 -267
  222. fastmcp-2.10.6/tests/client/test_openapi.py +0 -166
  223. fastmcp-2.10.6/tests/server/http/test_auth_setup.py +0 -187
  224. fastmcp-2.10.6/tests/utilities/test_cache.py +0 -233
  225. fastmcp-2.10.6/tests/utilities/test_mcp_config.py +0 -286
  226. {fastmcp-2.10.6 → fastmcp-2.11.1}/.ccignore +0 -0
  227. {fastmcp-2.10.6 → fastmcp-2.11.1}/.cursor/rules/core-mcp-objects.mdc +0 -0
  228. {fastmcp-2.10.6 → fastmcp-2.11.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  229. {fastmcp-2.10.6 → fastmcp-2.11.1}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
  230. {fastmcp-2.10.6 → fastmcp-2.11.1}/.github/dependabot.yml +0 -0
  231. {fastmcp-2.10.6 → fastmcp-2.11.1}/.github/labeler.yml +0 -0
  232. {fastmcp-2.10.6 → fastmcp-2.11.1}/.github/workflows/labeler.yml +0 -0
  233. {fastmcp-2.10.6 → fastmcp-2.11.1}/.github/workflows/publish.yml +0 -0
  234. {fastmcp-2.10.6 → fastmcp-2.11.1}/.github/workflows/run-static.yml +0 -0
  235. {fastmcp-2.10.6 → fastmcp-2.11.1}/.gitignore +0 -0
  236. {fastmcp-2.10.6 → fastmcp-2.11.1}/.pre-commit-config.yaml +0 -0
  237. {fastmcp-2.10.6 → fastmcp-2.11.1}/AGENTS.md +0 -0
  238. {fastmcp-2.10.6 → fastmcp-2.11.1}/CLAUDE.md +0 -0
  239. {fastmcp-2.10.6 → fastmcp-2.11.1}/LICENSE +0 -0
  240. {fastmcp-2.10.6 → fastmcp-2.11.1}/README_OPENAPI.md +0 -0
  241. {fastmcp-2.10.6 → fastmcp-2.11.1}/Windows_Notes.md +0 -0
  242. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/.cursor/rules/mintlify.mdc +0 -0
  243. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/assets/favicon.svg +0 -0
  244. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/assets/images/tutorial-rest-api-result.png +0 -0
  245. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/assets/updates/release-2-7.png +0 -0
  246. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/clients/client.mdx +0 -0
  247. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/clients/elicitation.mdx +0 -0
  248. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/clients/messages.mdx +0 -0
  249. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/clients/progress.mdx +0 -0
  250. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/clients/roots.mdx +0 -0
  251. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/clients/sampling.mdx +0 -0
  252. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/community/README.md +0 -0
  253. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/community/showcase.mdx +0 -0
  254. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/css/banner.css +0 -0
  255. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/css/python-sdk.css +0 -0
  256. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/css/style.css +0 -0
  257. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/css/version-badge.css +0 -0
  258. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/getting-started/installation.mdx +0 -0
  259. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/getting-started/quickstart.mdx +0 -0
  260. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/getting-started/welcome.mdx +0 -0
  261. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/integrations/cursor-install-mcp.png +0 -0
  262. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/integrations/gemini.mdx +0 -0
  263. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/integrations/starlette.mdx +0 -0
  264. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/patterns/contrib.mdx +0 -0
  265. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/patterns/http-requests.mdx +0 -0
  266. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/patterns/testing.mdx +0 -0
  267. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-__init__.mdx +0 -0
  268. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-claude.mdx +0 -0
  269. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-install-__init__.mdx +0 -0
  270. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-cli-install-shared.mdx +0 -0
  271. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-__init__.mdx +0 -0
  272. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-auth-__init__.mdx +0 -0
  273. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-auth-bearer.mdx +0 -0
  274. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-client.mdx +0 -0
  275. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-elicitation.mdx +0 -0
  276. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-logging.mdx +0 -0
  277. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-messages.mdx +0 -0
  278. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-oauth_callback.mdx +0 -0
  279. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-progress.mdx +0 -0
  280. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-roots.mdx +0 -0
  281. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-client-sampling.mdx +0 -0
  282. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-exceptions.mdx +0 -0
  283. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-prompts-__init__.mdx +0 -0
  284. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +0 -0
  285. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-resources-__init__.mdx +0 -0
  286. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-resources-resource_manager.mdx +0 -0
  287. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-resources-types.mdx +0 -0
  288. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-__init__.mdx +0 -0
  289. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-auth-__init__.mdx +0 -0
  290. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-auth-providers-__init__.mdx +0 -0
  291. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-auth-providers-bearer_env.mdx +0 -0
  292. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-elicitation.mdx +0 -0
  293. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-low_level.mdx +0 -0
  294. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-middleware-__init__.mdx +0 -0
  295. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-middleware-error_handling.mdx +0 -0
  296. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-middleware-logging.mdx +0 -0
  297. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-middleware-rate_limiting.mdx +0 -0
  298. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-middleware-timing.mdx +0 -0
  299. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-server-openapi.mdx +0 -0
  300. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-tools-__init__.mdx +0 -0
  301. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-__init__.mdx +0 -0
  302. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-cli.mdx +0 -0
  303. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-exceptions.mdx +0 -0
  304. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-http.mdx +0 -0
  305. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-inspect.mdx +0 -0
  306. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-json_schema_type.mdx +0 -0
  307. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/python-sdk/fastmcp-utilities-logging.mdx +0 -0
  308. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/servers/composition.mdx +0 -0
  309. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/servers/elicitation.mdx +0 -0
  310. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/servers/progress.mdx +0 -0
  311. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/servers/sampling.mdx +0 -0
  312. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/snippets/local-focus.mdx +0 -0
  313. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/snippets/version-badge.mdx +0 -0
  314. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/snippets/youtube-embed.mdx +0 -0
  315. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/tutorials/create-mcp-server.mdx +0 -0
  316. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/tutorials/mcp.mdx +0 -0
  317. {fastmcp-2.10.6 → fastmcp-2.11.1}/docs/updates.mdx +0 -0
  318. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/atproto_mcp/README.md +0 -0
  319. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/atproto_mcp/demo.py +0 -0
  320. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/atproto_mcp/pyproject.toml +0 -0
  321. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/__init__.py +0 -0
  322. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/__main__.py +0 -0
  323. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/__init__.py +0 -0
  324. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_client.py +0 -0
  325. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_posts.py +0 -0
  326. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_profile.py +0 -0
  327. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_read.py +0 -0
  328. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/_atproto/_social.py +0 -0
  329. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/py.typed +0 -0
  330. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/server.py +0 -0
  331. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/settings.py +0 -0
  332. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/atproto_mcp/src/atproto_mcp/types.py +0 -0
  333. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/complex_inputs.py +0 -0
  334. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/config_server.py +0 -0
  335. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/desktop.py +0 -0
  336. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/echo.py +0 -0
  337. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/get_file.py +0 -0
  338. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/in_memory_proxy_example.py +0 -0
  339. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/memory.py +0 -0
  340. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/mount_example.py +0 -0
  341. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/sampling.py +0 -0
  342. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/screenshot.py +0 -0
  343. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/serializer.py +0 -0
  344. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/simple_echo.py +0 -0
  345. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/smart_home/README.md +0 -0
  346. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/smart_home/pyproject.toml +0 -0
  347. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/smart_home/src/smart_home/__init__.py +0 -0
  348. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/smart_home/src/smart_home/__main__.py +0 -0
  349. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/smart_home/src/smart_home/hub.py +0 -0
  350. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
  351. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -0
  352. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/smart_home/src/smart_home/lights/server.py +0 -0
  353. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/smart_home/src/smart_home/py.typed +0 -0
  354. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/smart_home/src/smart_home/settings.py +0 -0
  355. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/smart_home/uv.lock +0 -0
  356. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/tags_example.py +0 -0
  357. {fastmcp-2.10.6 → fastmcp-2.11.1}/examples/text_me.py +0 -0
  358. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/__init__.py +0 -0
  359. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/cli/__init__.py +0 -0
  360. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/cli/claude.py +0 -0
  361. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/cli/install/__init__.py +0 -0
  362. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/cli/install/shared.py +0 -0
  363. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/client/auth/__init__.py +0 -0
  364. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/client/auth/bearer.py +0 -0
  365. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/client/client.py +0 -0
  366. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/client/elicitation.py +0 -0
  367. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/client/logging.py +0 -0
  368. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/client/messages.py +0 -0
  369. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/client/progress.py +0 -0
  370. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/client/roots.py +0 -0
  371. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/client/sampling.py +0 -0
  372. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/contrib/README.md +0 -0
  373. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  374. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  375. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  376. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  377. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/contrib/component_manager/README.md +0 -0
  378. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/contrib/component_manager/__init__.py +0 -0
  379. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/contrib/component_manager/component_manager.py +0 -0
  380. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/contrib/component_manager/component_service.py +0 -0
  381. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/contrib/mcp_mixin/README.md +0 -0
  382. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  383. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
  384. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  385. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/exceptions.py +0 -0
  386. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/prompts/__init__.py +0 -0
  387. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/prompts/prompt_manager.py +0 -0
  388. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/py.typed +0 -0
  389. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/resources/__init__.py +0 -0
  390. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/resources/resource_manager.py +0 -0
  391. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/resources/types.py +0 -0
  392. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/server/__init__.py +0 -0
  393. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/server/auth/providers/__init__.py +0 -0
  394. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/server/elicitation.py +0 -0
  395. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/server/low_level.py +0 -0
  396. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/server/middleware/__init__.py +0 -0
  397. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/server/middleware/error_handling.py +0 -0
  398. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/server/middleware/logging.py +0 -0
  399. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/server/middleware/rate_limiting.py +0 -0
  400. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/server/middleware/timing.py +0 -0
  401. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/tools/__init__.py +0 -0
  402. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/utilities/__init__.py +0 -0
  403. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/utilities/cli.py +0 -0
  404. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/utilities/exceptions.py +0 -0
  405. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/utilities/http.py +0 -0
  406. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/utilities/inspect.py +0 -0
  407. {fastmcp-2.10.6 → fastmcp-2.11.1}/src/fastmcp/utilities/logging.py +0 -0
  408. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/__init__.py +0 -0
  409. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/cli/__init__.py +0 -0
  410. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/cli/test_shared.py +0 -0
  411. {fastmcp-2.10.6/tests/auth → fastmcp-2.11.1/tests/client}/__init__.py +0 -0
  412. {fastmcp-2.10.6/tests/client → fastmcp-2.11.1/tests/client/auth}/__init__.py +0 -0
  413. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/client/test_elicitation.py +0 -0
  414. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/client/test_notifications.py +0 -0
  415. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/client/test_progress.py +0 -0
  416. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/client/test_roots.py +0 -0
  417. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/client/test_sse.py +0 -0
  418. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/client/test_stdio.py +0 -0
  419. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/client/test_streamable_http.py +0 -0
  420. {fastmcp-2.10.6/tests/integration_tests → fastmcp-2.11.1/tests/client/transports}/__init__.py +0 -0
  421. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/conftest.py +0 -0
  422. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/contrib/__init__.py +0 -0
  423. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/contrib/test_bulk_tool_caller.py +0 -0
  424. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/contrib/test_mcp_mixin.py +0 -0
  425. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/deprecated/__init__.py +0 -0
  426. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/deprecated/test_deprecated.py +0 -0
  427. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/deprecated/test_mount_import_arg_order.py +0 -0
  428. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/deprecated/test_mount_separators.py +0 -0
  429. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/deprecated/test_proxy_client.py +0 -0
  430. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/deprecated/test_resource_prefixes.py +0 -0
  431. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/deprecated/test_route_type_ignore.py +0 -0
  432. {fastmcp-2.10.6/tests/prompts → fastmcp-2.11.1/tests/experimental}/__init__.py +0 -0
  433. {fastmcp-2.10.6/tests/resources → fastmcp-2.11.1/tests/experimental/server}/__init__.py +0 -0
  434. {fastmcp-2.10.6/tests/server → fastmcp-2.11.1/tests/experimental/utilities}/__init__.py +0 -0
  435. {fastmcp-2.10.6/tests/server/http → fastmcp-2.11.1/tests/integration_tests}/__init__.py +0 -0
  436. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/integration_tests/conftest.py +0 -0
  437. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/integration_tests/test_github_mcp_remote.py +0 -0
  438. {fastmcp-2.10.6/tests/server/middleware → fastmcp-2.11.1/tests/prompts}/__init__.py +0 -0
  439. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/prompts/test_prompt_manager.py +0 -0
  440. {fastmcp-2.10.6/tests/server/openapi → fastmcp-2.11.1/tests/resources}/__init__.py +0 -0
  441. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/resources/test_file_resources.py +0 -0
  442. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/resources/test_function_resources.py +0 -0
  443. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/resources/test_resource_manager.py +0 -0
  444. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/resources/test_resource_template.py +0 -0
  445. {fastmcp-2.10.6/tests/server/proxy → fastmcp-2.11.1/tests/server}/__init__.py +0 -0
  446. {fastmcp-2.10.6/tests/tools → fastmcp-2.11.1/tests/server/http}/__init__.py +0 -0
  447. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/http/test_custom_routes.py +0 -0
  448. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/http/test_http_dependencies.py +0 -0
  449. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/http/test_http_middleware.py +0 -0
  450. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/middleware/test_error_handling.py +0 -0
  451. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/middleware/test_logging.py +0 -0
  452. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/middleware/test_rate_limiting.py +0 -0
  453. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/middleware/test_timing.py +0 -0
  454. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/openapi/conftest.py +0 -0
  455. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/openapi/test_advanced_behavior.py +0 -0
  456. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/openapi/test_configuration.py +0 -0
  457. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/openapi/test_deepobject_style.py +0 -0
  458. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/openapi/test_description_propagation.py +0 -0
  459. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/openapi/test_explode_integration.py +0 -0
  460. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/openapi/test_openapi_compatibility.py +0 -0
  461. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/openapi/test_openapi_path_parameters.py +0 -0
  462. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/openapi/test_parameter_collisions.py +0 -0
  463. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/openapi/test_route_map_fn.py +0 -0
  464. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/test_app_state.py +0 -0
  465. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/test_auth_integration.py +0 -0
  466. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/test_file_server.py +0 -0
  467. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/test_import_server.py +0 -0
  468. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/test_logging.py +0 -0
  469. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/test_resource_prefix_formats.py +0 -0
  470. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/test_run_server.py +0 -0
  471. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/test_tool_annotations.py +0 -0
  472. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/server/test_tool_exclude_args.py +0 -0
  473. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/test_examples.py +0 -0
  474. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/utilities/__init__.py +0 -0
  475. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/utilities/openapi/__init__.py +0 -0
  476. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/utilities/openapi/conftest.py +0 -0
  477. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/utilities/openapi/test_openapi.py +0 -0
  478. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/utilities/openapi/test_openapi_advanced.py +0 -0
  479. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/utilities/openapi/test_openapi_fastapi.py +0 -0
  480. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/utilities/openapi/test_openapi_output_schemas.py +0 -0
  481. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/utilities/test_inspect.py +0 -0
  482. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/utilities/test_logging.py +0 -0
  483. {fastmcp-2.10.6 → fastmcp-2.11.1}/tests/utilities/test_tests.py +0 -0
@@ -7,6 +7,19 @@ body:
7
7
  attributes:
8
8
  value: Thank you for contributing to FastMCP! 🙏
9
9
 
10
+ - type: markdown
11
+ attributes:
12
+ value: |
13
+ ## Before you submit 📝
14
+
15
+ To help us help you, please:
16
+
17
+ - 🔄 **Make sure you're testing on the latest version of FastMCP** - many issues are already fixed in newer versions
18
+ - 🔍 **Check if someone else has already reported this issue** or if it's been fixed on the main branch
19
+ - 📋 **You MUST include a copy/pasteable and properly formatted MRE** (minimal reproducible example) below or your issue may be closed without response
20
+
21
+ Thanks for helping make FastMCP better! 🚀
22
+
10
23
  - type: textarea
11
24
  id: description
12
25
  attributes:
@@ -7,9 +7,6 @@ changelog:
7
7
  - title: New Features 🎉
8
8
  labels:
9
9
  - feature
10
- exclude:
11
- labels:
12
- - contrib
13
10
 
14
11
  - title: Enhancements 🔧
15
12
  labels:
@@ -17,7 +14,6 @@ changelog:
17
14
  exclude:
18
15
  labels:
19
16
  - breaking change
20
- - contrib
21
17
 
22
18
  - title: Fixes 🐞
23
19
  labels:
@@ -46,8 +46,11 @@ jobs:
46
46
  - name: Install FastMCP
47
47
  run: uv sync --locked
48
48
 
49
- - name: Run tests (excluding integration)
50
- run: uv run pytest tests -m "not integration"
49
+ - name: Run tests (excluding integration and client_process)
50
+ run: uv run pytest tests -m "not integration and not client_process"
51
+
52
+ - name: Run client process tests separately
53
+ run: uv run pytest tests -m "client_process" -x
51
54
 
52
55
  run_integration_tests:
53
56
  name: "Run integration tests"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastmcp
3
- Version: 2.10.6
3
+ Version: 2.11.1
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,6 +22,7 @@ Requires-Dist: cyclopts>=3.0.0
22
22
  Requires-Dist: exceptiongroup>=1.2.2
23
23
  Requires-Dist: httpx>=0.28.1
24
24
  Requires-Dist: mcp>=1.10.0
25
+ Requires-Dist: openapi-core>=0.19.5
25
26
  Requires-Dist: openapi-pydantic>=0.5.1
26
27
  Requires-Dist: pydantic[email]>=2.11.7
27
28
  Requires-Dist: pyperclip>=1.9.0
@@ -38,7 +39,7 @@ Description-Content-Type: text/markdown
38
39
 
39
40
  <strong>The fast, Pythonic way to build MCP servers and clients.</strong>
40
41
 
41
- *FastMCP is made with ☕️ by [Prefect](https://www.prefect.io/)*
42
+ *Made with ☕️ by [Prefect](https://www.prefect.io/)*
42
43
 
43
44
  [![Docs](https://img.shields.io/badge/docs-gofastmcp.com-blue)](https://gofastmcp.com)
44
45
  [![PyPI - Version](https://img.shields.io/pypi/v/fastmcp.svg)](https://pypi.org/project/fastmcp)
@@ -341,7 +342,7 @@ Learn more in the [**Composition Documentation**](https://gofastmcp.com/patterns
341
342
 
342
343
  Automatically generate FastMCP servers from existing OpenAPI specifications (`FastMCP.from_openapi()`) or FastAPI applications (`FastMCP.from_fastapi()`), instantly bringing your web APIs to the MCP ecosystem.
343
344
 
344
- Learn more: [**OpenAPI Integration**](https://gofastmcp.com/servers/openapi#openapi-integration) | [**FastAPI Integration**](https://gofastmcp.com/deployment/asgi#fastapi-integration).
345
+ Learn more: [**OpenAPI Integration**](https://gofastmcp.com/integrations/openapi) | [**FastAPI Integration**](https://gofastmcp.com/integrations/fastapi).
345
346
 
346
347
  ### Authentication & Security
347
348
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  <strong>The fast, Pythonic way to build MCP servers and clients.</strong>
7
7
 
8
- *FastMCP is made with ☕️ by [Prefect](https://www.prefect.io/)*
8
+ *Made with ☕️ by [Prefect](https://www.prefect.io/)*
9
9
 
10
10
  [![Docs](https://img.shields.io/badge/docs-gofastmcp.com-blue)](https://gofastmcp.com)
11
11
  [![PyPI - Version](https://img.shields.io/pypi/v/fastmcp.svg)](https://pypi.org/project/fastmcp)
@@ -308,7 +308,7 @@ Learn more in the [**Composition Documentation**](https://gofastmcp.com/patterns
308
308
 
309
309
  Automatically generate FastMCP servers from existing OpenAPI specifications (`FastMCP.from_openapi()`) or FastAPI applications (`FastMCP.from_fastapi()`), instantly bringing your web APIs to the MCP ecosystem.
310
310
 
311
- Learn more: [**OpenAPI Integration**](https://gofastmcp.com/servers/openapi#openapi-integration) | [**FastAPI Integration**](https://gofastmcp.com/deployment/asgi#fastapi-integration).
311
+ Learn more: [**OpenAPI Integration**](https://gofastmcp.com/integrations/openapi) | [**FastAPI Integration**](https://gofastmcp.com/integrations/fastapi).
312
312
 
313
313
  ### Authentication & Security
314
314
 
@@ -0,0 +1,2 @@
1
+ changelog.mdx
2
+ python-sdk/
@@ -2,6 +2,157 @@
2
2
  icon: "list-check"
3
3
  ---
4
4
 
5
+ <Update label="v2.11.0" description="2025-08-01">
6
+
7
+ ## [v2.11.0: Auth to a Good Start](https://github.com/jlowin/fastmcp/releases/tag/v2.11.0)
8
+
9
+ FastMCP 2.11 doubles down on what developers need most: speed and simplicity. This massive release delivers significant performance improvements and a dramatically better developer experience.
10
+
11
+ 🔐 **Enterprise-Ready Authentication** brings comprehensive OAuth 2.1 support with WorkOS's AuthKit integration. The new AuthProvider interface leverages MCP's support for separate resource and authorization servers, handling API keys and remote authentication with Dynamic Client Registration. AuthKit integration means you can plug into existing enterprise identity systems without rebuilding your auth stack, setting the stage for plug-and-play auth that doesn't require users to become security experts overnight.
12
+
13
+ ⚡ The **Experimental OpenAPI Parser** delivers dramatic performance improvements through single-pass schema processing and optimized memory usage. OpenAPI integrations are now significantly faster, with cleaner, more maintainable code. _(Note: the experimental parser is disabled by default, set `FASTMCPEXPERIMENTALENABLENEWOPENAPIPARSER=1` to enable it. A message will be shown to all users on the legacy parser encouraging them to try the new one before it becomes the default.)_
14
+
15
+ 🧠 **Context State Management** finally gives you persistent state across tool calls with a simple dict interface, while enhanced meta support lets you expose rich component metadata to clients. Combined with improved type annotations, string-based argument descriptions, and UV transport support, this release makes FastMCP feel more intuitive than ever.
16
+
17
+ This release represents a TON of community contributions and sets the foundation for even more ambitious features ahead.
18
+
19
+ ## What's Changed
20
+ ### New Features 🎉
21
+ * Introduce experimental OpenAPI parser with improved performance and maintainability by [@jlowin](https://github.com/jlowin) in [#1209](https://github.com/jlowin/fastmcp/pull/1209)
22
+ * Add state dict to Context (#1118) by [@mukulmurthy](https://github.com/mukulmurthy) in [#1160](https://github.com/jlowin/fastmcp/pull/1160)
23
+ * Expose FastMCP tags to clients via component `meta` dict by [@jlowin](https://github.com/jlowin) in [#1281](https://github.com/jlowin/fastmcp/pull/1281)
24
+ * Add _fastmcp meta namespace by [@jlowin](https://github.com/jlowin) in [#1290](https://github.com/jlowin/fastmcp/pull/1290)
25
+ * Add TokenVerifier protocol support alongside existing OAuthProvider authentication by [@jlowin](https://github.com/jlowin) in [#1297](https://github.com/jlowin/fastmcp/pull/1297)
26
+ * Add comprehensive OAuth 2.1 authentication system with WorkOS integration by [@jlowin](https://github.com/jlowin) in [#1327](https://github.com/jlowin/fastmcp/pull/1327)
27
+ ### Enhancements 🔧
28
+ * [🐶] Transform MCP Server Tools by [@strawgate](https://github.com/strawgate) in [#1132](https://github.com/jlowin/fastmcp/pull/1132)
29
+ * Add --python, --project, and --with-requirements options to CLI commands by [@jlowin](https://github.com/jlowin) in [#1190](https://github.com/jlowin/fastmcp/pull/1190)
30
+ * Support `fastmcp run mcp.json` by [@strawgate](https://github.com/strawgate) in [#1138](https://github.com/jlowin/fastmcp/pull/1138)
31
+ * Support from __future__ import annotations by [@jlowin](https://github.com/jlowin) in [#1199](https://github.com/jlowin/fastmcp/pull/1199)
32
+ * Optimize OpenAPI parser performance with single-pass schema processing by [@jlowin](https://github.com/jlowin) in [#1214](https://github.com/jlowin/fastmcp/pull/1214)
33
+ * Log tool name on transform validation error by [@strawgate](https://github.com/strawgate) in [#1238](https://github.com/jlowin/fastmcp/pull/1238)
34
+ * Refactor `get_http_request` and `context.session_id` by [@hopeful0](https://github.com/hopeful0) in [#1242](https://github.com/jlowin/fastmcp/pull/1242)
35
+ * Support creating tool argument descriptions from string annotations by [@jlowin](https://github.com/jlowin) in [#1255](https://github.com/jlowin/fastmcp/pull/1255)
36
+ * feat: Add Annotations support for resources and resource templates by [@chughtapan](https://github.com/chughtapan) in [#1260](https://github.com/jlowin/fastmcp/pull/1260)
37
+ * Add UV Transport by [@strawgate](https://github.com/strawgate) in [#1270](https://github.com/jlowin/fastmcp/pull/1270)
38
+ * Improve OpenAPI-to-JSONSchema conversion utilities by [@jlowin](https://github.com/jlowin) in [#1283](https://github.com/jlowin/fastmcp/pull/1283)
39
+ * Ensure proxy components forward meta dicts by [@jlowin](https://github.com/jlowin) in [#1282](https://github.com/jlowin/fastmcp/pull/1282)
40
+ * fix: server argument passing in CLI run command by [@chughtapan](https://github.com/chughtapan) in [#1293](https://github.com/jlowin/fastmcp/pull/1293)
41
+ * Add meta support to tool transformation utilities by [@jlowin](https://github.com/jlowin) in [#1295](https://github.com/jlowin/fastmcp/pull/1295)
42
+ * feat: Allow Resource Metadata URL as field in OAuthProvider by [@dacamposol](https://github.com/dacamposol) in [#1287](https://github.com/jlowin/fastmcp/pull/1287)
43
+ * Use a simple overwrite instead of a merge for meta by [@jlowin](https://github.com/jlowin) in [#1296](https://github.com/jlowin/fastmcp/pull/1296)
44
+ * Remove unused TimedCache by [@strawgate](https://github.com/strawgate) in [#1303](https://github.com/jlowin/fastmcp/pull/1303)
45
+ * refactor: standardize logging usage across OpenAPI utilities by [@chi2liu](https://github.com/chi2liu) in [#1322](https://github.com/jlowin/fastmcp/pull/1322)
46
+ * perf: optimize OpenAPI parsing by reducing dict copy operations by [@chi2liu](https://github.com/chi2liu) in [#1321](https://github.com/jlowin/fastmcp/pull/1321)
47
+ * Structured client-side logging by [@cjermain](https://github.com/cjermain) in [#1326](https://github.com/jlowin/fastmcp/pull/1326)
48
+ ### Fixes 🐞
49
+ * fix: preserve def reference when referenced in allOf / oneOf / anyOf by [@algirdasci](https://github.com/algirdasci) in [#1208](https://github.com/jlowin/fastmcp/pull/1208)
50
+ * fix: add type hint to custom_route decorator by [@zzstoatzz](https://github.com/zzstoatzz) in [#1210](https://github.com/jlowin/fastmcp/pull/1210)
51
+ * chore: typo by [@richardkmichael](https://github.com/richardkmichael) in [#1216](https://github.com/jlowin/fastmcp/pull/1216)
52
+ * fix: handle non-string $ref values in experimental OpenAPI parser by [@jlowin](https://github.com/jlowin) in [#1217](https://github.com/jlowin/fastmcp/pull/1217)
53
+ * Skip repeated type conversion and validation in proxy client elicitation handler by [@chughtapan](https://github.com/chughtapan) in [#1222](https://github.com/jlowin/fastmcp/pull/1222)
54
+ * Ensure default fields are not marked nullable by [@jlowin](https://github.com/jlowin) in [#1224](https://github.com/jlowin/fastmcp/pull/1224)
55
+ * Fix stateful proxy client mixing in multi-proxies sessions by [@hopeful0](https://github.com/hopeful0) in [#1245](https://github.com/jlowin/fastmcp/pull/1245)
56
+ * Fix invalid async context manager usage in proxy documentation by [@zzstoatzz](https://github.com/zzstoatzz) in [#1246](https://github.com/jlowin/fastmcp/pull/1246)
57
+ * fix: experimental FastMCPOpenAPI server lost headers in request when __init__(client with headers) by [@itaru2622](https://github.com/itaru2622) in [#1254](https://github.com/jlowin/fastmcp/pull/1254)
58
+ * Fix typing, add tests for tool call middleware by [@jlowin](https://github.com/jlowin) in [#1269](https://github.com/jlowin/fastmcp/pull/1269)
59
+ * Fix: prune hidden parameter defs by [@muhammadkhalid-03](https://github.com/muhammadkhalid-03) in [#1257](https://github.com/jlowin/fastmcp/pull/1257)
60
+ * Fix nullable field handling in OpenAPI to JSON Schema conversion by [@jlowin](https://github.com/jlowin) in [#1279](https://github.com/jlowin/fastmcp/pull/1279)
61
+ * Ensure fastmcp run supports v1 servers by [@jlowin](https://github.com/jlowin) in [#1332](https://github.com/jlowin/fastmcp/pull/1332)
62
+ ### Breaking Changes 🛫
63
+ * Change server flag to --name by [@jlowin](https://github.com/jlowin) in [#1248](https://github.com/jlowin/fastmcp/pull/1248)
64
+ ### Docs 📚
65
+ * Remove unused import from FastAPI integration documentation by [@mariotaddeucci](https://github.com/mariotaddeucci) in [#1194](https://github.com/jlowin/fastmcp/pull/1194)
66
+ * Update fastapi docs by [@jlowin](https://github.com/jlowin) in [#1198](https://github.com/jlowin/fastmcp/pull/1198)
67
+ * Add docs for context state management by [@jlowin](https://github.com/jlowin) in [#1227](https://github.com/jlowin/fastmcp/pull/1227)
68
+ * Permit.io integration docs by [@orweis](https://github.com/orweis) in [#1226](https://github.com/jlowin/fastmcp/pull/1226)
69
+ * Update docs to reflect sync tools by [@jlowin](https://github.com/jlowin) in [#1234](https://github.com/jlowin/fastmcp/pull/1234)
70
+ * Update changelog.mdx by [@jlowin](https://github.com/jlowin) in [#1235](https://github.com/jlowin/fastmcp/pull/1235)
71
+ * Update SDK docs by [@jlowin](https://github.com/jlowin) in [#1236](https://github.com/jlowin/fastmcp/pull/1236)
72
+ * Update --name flag documentation for Cursor/Claude by [@adam-conway](https://github.com/adam-conway) in [#1239](https://github.com/jlowin/fastmcp/pull/1239)
73
+ * Add annotations docs by [@jlowin](https://github.com/jlowin) in [#1268](https://github.com/jlowin/fastmcp/pull/1268)
74
+ * Update openapi/fastapi URLs README.md by [@jbn](https://github.com/jbn) in [#1278](https://github.com/jlowin/fastmcp/pull/1278)
75
+ * Add 2.11 version badge for state management by [@jlowin](https://github.com/jlowin) in [#1289](https://github.com/jlowin/fastmcp/pull/1289)
76
+ * Add meta parameter support to tools, resources, templates, and prompts decorators by [@jlowin](https://github.com/jlowin) in [#1294](https://github.com/jlowin/fastmcp/pull/1294)
77
+ * docs: update get_state and set_state references by [@Maxi91f](https://github.com/Maxi91f) in [#1306](https://github.com/jlowin/fastmcp/pull/1306)
78
+ * Add unit tests and docs for denying tool calls with middleware by [@jlowin](https://github.com/jlowin) in [#1333](https://github.com/jlowin/fastmcp/pull/1333)
79
+ * Remove reference to stacked decorators by [@jlowin](https://github.com/jlowin) in [#1334](https://github.com/jlowin/fastmcp/pull/1334)
80
+ * Eunomia authorization server can run embedded within the MCP server by [@tommitt](https://github.com/tommitt) in [#1317](https://github.com/jlowin/fastmcp/pull/1317)
81
+ ### Other Changes 🦾
82
+ * Update README.md by [@jlowin](https://github.com/jlowin) in [#1230](https://github.com/jlowin/fastmcp/pull/1230)
83
+ * Logcapture addition to test_server file by [@Sourav-Tripathy](https://github.com/Sourav-Tripathy) in [#1229](https://github.com/jlowin/fastmcp/pull/1229)
84
+ * Add tests for headers with both legacy and experimental openapi parser by [@jlowin](https://github.com/jlowin) in [#1259](https://github.com/jlowin/fastmcp/pull/1259)
85
+ * Small clean-up from MCP Tool Transform PR by [@strawgate](https://github.com/strawgate) in [#1267](https://github.com/jlowin/fastmcp/pull/1267)
86
+ * Add test for proxy tags visibility by [@jlowin](https://github.com/jlowin) in [#1302](https://github.com/jlowin/fastmcp/pull/1302)
87
+ * Add unit test for sampling with image messages by [@jlowin](https://github.com/jlowin) in [#1329](https://github.com/jlowin/fastmcp/pull/1329)
88
+ * Remove redundant resource_metadata_url assignment by [@jlowin](https://github.com/jlowin) in [#1328](https://github.com/jlowin/fastmcp/pull/1328)
89
+ * Update bug.yml by [@jlowin](https://github.com/jlowin) in [#1331](https://github.com/jlowin/fastmcp/pull/1331)
90
+ * Ensure validation errors are raised when masked by [@jlowin](https://github.com/jlowin) in [#1330](https://github.com/jlowin/fastmcp/pull/1330)
91
+
92
+ ## New Contributors
93
+ * [@mariotaddeucci](https://github.com/mariotaddeucci) made their first contribution in [#1194](https://github.com/jlowin/fastmcp/pull/1194)
94
+ * [@algirdasci](https://github.com/algirdasci) made their first contribution in [#1208](https://github.com/jlowin/fastmcp/pull/1208)
95
+ * [@chughtapan](https://github.com/chughtapan) made their first contribution in [#1222](https://github.com/jlowin/fastmcp/pull/1222)
96
+ * [@mukulmurthy](https://github.com/mukulmurthy) made their first contribution in [#1160](https://github.com/jlowin/fastmcp/pull/1160)
97
+ * [@orweis](https://github.com/orweis) made their first contribution in [#1226](https://github.com/jlowin/fastmcp/pull/1226)
98
+ * [@Sourav-Tripathy](https://github.com/Sourav-Tripathy) made their first contribution in [#1229](https://github.com/jlowin/fastmcp/pull/1229)
99
+ * [@adam-conway](https://github.com/adam-conway) made their first contribution in [#1239](https://github.com/jlowin/fastmcp/pull/1239)
100
+ * [@muhammadkhalid-03](https://github.com/muhammadkhalid-03) made their first contribution in [#1257](https://github.com/jlowin/fastmcp/pull/1257)
101
+ * [@jbn](https://github.com/jbn) made their first contribution in [#1278](https://github.com/jlowin/fastmcp/pull/1278)
102
+ * [@dacamposol](https://github.com/dacamposol) made their first contribution in [#1287](https://github.com/jlowin/fastmcp/pull/1287)
103
+ * [@chi2liu](https://github.com/chi2liu) made their first contribution in [#1322](https://github.com/jlowin/fastmcp/pull/1322)
104
+ * [@cjermain](https://github.com/cjermain) made their first contribution in [#1326](https://github.com/jlowin/fastmcp/pull/1326)
105
+
106
+ **Full Changelog**: [v2.10.6...v2.11.0](https://github.com/jlowin/fastmcp/compare/v2.10.6...v2.11.0)
107
+
108
+ </Update>
109
+
110
+ <Update label="v2.10.6" description="2025-07-19">
111
+
112
+ ## [v2.10.6: Hymn for the Weekend](https://github.com/jlowin/fastmcp/releases/tag/v2.10.6)
113
+
114
+ A special Saturday release with many fixes.
115
+
116
+ ## What's Changed
117
+ ### Enhancements 🔧
118
+ * Resolve #1139 -- Implement include_context argument in Context.sample by [@codingjoe](https://github.com/codingjoe) in [#1141](https://github.com/jlowin/fastmcp/pull/1141)
119
+ * feat(settings): add log level normalization by [@ka2048](https://github.com/ka2048) in [#1171](https://github.com/jlowin/fastmcp/pull/1171)
120
+ * add server name to mounted server warnings by [@artificial-aidan](https://github.com/artificial-aidan) in [#1147](https://github.com/jlowin/fastmcp/pull/1147)
121
+ * Add StatefulProxyClient by [@hopeful0](https://github.com/hopeful0) in [#1109](https://github.com/jlowin/fastmcp/pull/1109)
122
+ ### Fixes 🐞
123
+ * Fix OpenAPI empty parameters by [@FabrizioSandri](https://github.com/FabrizioSandri) in [#1128](https://github.com/jlowin/fastmcp/pull/1128)
124
+ * Fix title field preservation in tool transformations by [@jlowin](https://github.com/jlowin) in [#1131](https://github.com/jlowin/fastmcp/pull/1131)
125
+ * Fix optional parameter validation in OpenAPI integration by [@jlowin](https://github.com/jlowin) in [#1135](https://github.com/jlowin/fastmcp/pull/1135)
126
+ * Do not silently exclude the "context" key from JSON body by [@melkamar](https://github.com/melkamar) in [#1153](https://github.com/jlowin/fastmcp/pull/1153)
127
+ * Fix tool output schema generation to respect Pydantic serialization aliases by [@zzstoatzz](https://github.com/zzstoatzz) in [#1148](https://github.com/jlowin/fastmcp/pull/1148)
128
+ * fix: _replace_ref_with_defs; ensure ref_path is string by [@itaru2622](https://github.com/itaru2622) in [#1164](https://github.com/jlowin/fastmcp/pull/1164)
129
+ * Fix nesting when making OpenAPI arrays and objects optional by [@melkamar](https://github.com/melkamar) in [#1178](https://github.com/jlowin/fastmcp/pull/1178)
130
+ * Fix `mcp-json` output format to include server name by [@jlowin](https://github.com/jlowin) in [#1185](https://github.com/jlowin/fastmcp/pull/1185)
131
+ * Only configure logging one time by [@jlowin](https://github.com/jlowin) in [#1187](https://github.com/jlowin/fastmcp/pull/1187)
132
+ ### Docs 📚
133
+ * Update changelog.mdx by [@jlowin](https://github.com/jlowin) in [#1127](https://github.com/jlowin/fastmcp/pull/1127)
134
+ * Eunomia Authorization with native FastMCP's Middleware by [@tommitt](https://github.com/tommitt) in [#1144](https://github.com/jlowin/fastmcp/pull/1144)
135
+ * update api ref for new `mdxify` version by [@zzstoatzz](https://github.com/zzstoatzz) in [#1182](https://github.com/jlowin/fastmcp/pull/1182)
136
+ ### Other Changes 🦾
137
+ * Expand empty parameter filtering and add comprehensive tests by [@jlowin](https://github.com/jlowin) in [#1129](https://github.com/jlowin/fastmcp/pull/1129)
138
+ * Add no-commit-to-branch hook by [@zzstoatzz](https://github.com/zzstoatzz) in [#1149](https://github.com/jlowin/fastmcp/pull/1149)
139
+ * Update README.md by [@jlowin](https://github.com/jlowin) in [#1165](https://github.com/jlowin/fastmcp/pull/1165)
140
+ * skip on rate limit by [@zzstoatzz](https://github.com/zzstoatzz) in [#1183](https://github.com/jlowin/fastmcp/pull/1183)
141
+ * Remove deprecated proxy creation by [@jlowin](https://github.com/jlowin) in [#1186](https://github.com/jlowin/fastmcp/pull/1186)
142
+ * Separate integration tests from unit tests in CI by [@jlowin](https://github.com/jlowin) in [#1188](https://github.com/jlowin/fastmcp/pull/1188)
143
+
144
+ ## New Contributors
145
+ * [@FabrizioSandri](https://github.com/FabrizioSandri) made their first contribution in [#1128](https://github.com/jlowin/fastmcp/pull/1128)
146
+ * [@melkamar](https://github.com/melkamar) made their first contribution in [#1153](https://github.com/jlowin/fastmcp/pull/1153)
147
+ * [@codingjoe](https://github.com/codingjoe) made their first contribution in [#1141](https://github.com/jlowin/fastmcp/pull/1141)
148
+ * [@itaru2622](https://github.com/itaru2622) made their first contribution in [#1164](https://github.com/jlowin/fastmcp/pull/1164)
149
+ * [@ka2048](https://github.com/ka2048) made their first contribution in [#1171](https://github.com/jlowin/fastmcp/pull/1171)
150
+ * [@artificial-aidan](https://github.com/artificial-aidan) made their first contribution in [#1147](https://github.com/jlowin/fastmcp/pull/1147)
151
+
152
+ **Full Changelog**: [v2.10.5...v2.10.6](https://github.com/jlowin/fastmcp/compare/v2.10.5...v2.10.6)
153
+
154
+ </Update>
155
+
5
156
  <Update label="v2.10.5" description="2025-07-11">
6
157
 
7
158
  ## [v2.10.5: Middle Management](https://github.com/jlowin/fastmcp/releases/tag/v2.10.5)
@@ -3,7 +3,6 @@ title: Bearer Token Authentication
3
3
  sidebarTitle: Bearer Auth
4
4
  description: Authenticate your FastMCP client with a Bearer token.
5
5
  icon: key
6
- tag: NEW
7
6
  ---
8
7
 
9
8
  import { VersionBadge } from "/snippets/version-badge.mdx"
@@ -55,6 +55,7 @@ async with Client("https://fastmcp.cloud/mcp", auth=oauth) as client:
55
55
  - **`client_name`** (`str`, optional): Client name for dynamic registration. Defaults to `"FastMCP Client"`
56
56
  - **`token_storage_cache_dir`** (`Path`, optional): Token cache directory. Defaults to `~/.fastmcp/oauth-mcp-client-cache/`
57
57
  - **`additional_client_metadata`** (`dict[str, Any]`, optional): Extra metadata for client registration
58
+ - **`callback_port`** (`int`, optional): Fixed port for OAuth callback server. If not specified, uses a random available port
58
59
 
59
60
 
60
61
  ## OAuth Flow
@@ -72,7 +73,7 @@ If no valid tokens exist, the client attempts to discover the OAuth server's end
72
73
  If the OAuth server supports it and the client isn't already registered (or credentials aren't cached), the client performs dynamic client registration according to RFC 7591.
73
74
  </Step>
74
75
  <Step title="Local Callback Server">
75
- A temporary local HTTP server is started on an available port. This server's address (e.g., `http://127.0.0.1:<port>/callback`) acts as the `redirect_uri` for the OAuth flow.
76
+ A temporary local HTTP server is started on an available port (or the port specified via `callback_port`). This server's address (e.g., `http://127.0.0.1:<port>/callback`) acts as the `redirect_uri` for the OAuth flow.
76
77
  </Step>
77
78
  <Step title="Browser Interaction">
78
79
  The user's default web browser is automatically opened, directing them to the OAuth server's authorization endpoint. The user logs in and grants (or denies) the requested `scopes`.
@@ -0,0 +1,111 @@
1
+ ---
2
+ title: Server Logging
3
+ sidebarTitle: Logging
4
+ description: Receive and handle log messages from MCP servers.
5
+ icon: receipt
6
+ ---
7
+
8
+ import { VersionBadge } from '/snippets/version-badge.mdx'
9
+
10
+ <VersionBadge version="2.0.0" />
11
+
12
+ MCP servers can emit log messages to clients. The client can handle these logs through a log handler callback.
13
+
14
+ ## Log Handler
15
+
16
+ Provide a `log_handler` function when creating the client. For robust logging, the log messages can be integrated with Python's standard `logging` module.
17
+
18
+ ```python
19
+ import logging
20
+ from fastmcp import Client
21
+ from fastmcp.client.logging import LogMessage
22
+
23
+ # In a real app, you might configure this in your main entry point
24
+ logging.basicConfig(
25
+ level=logging.INFO,
26
+ format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
27
+ )
28
+
29
+ # Get a logger for the module where the client is used
30
+ logger = logging.getLogger(__name__)
31
+
32
+ # This mapping is useful for converting MCP level strings to Python's levels
33
+ LOGGING_LEVEL_MAP = logging.getLevelNamesMapping()
34
+
35
+ async def log_handler(message: LogMessage):
36
+ """
37
+ Handles incoming logs from the MCP server and forwards them
38
+ to the standard Python logging system.
39
+ """
40
+ msg = message.data.get('msg')
41
+ extra = message.data.get('extra')
42
+
43
+ # Convert the MCP log level to a Python log level
44
+ level = LOGGING_LEVEL_MAP.get(message.level.upper(), logging.INFO)
45
+
46
+ # Log the message using the standard logging library
47
+ logger.log(level, msg, extra=extra)
48
+
49
+
50
+ client = Client(
51
+ "my_mcp_server.py",
52
+ log_handler=log_handler,
53
+ )
54
+ ```
55
+
56
+ ## Handling Structured Logs
57
+
58
+ The `message.data` attribute is a dictionary that contains the log payload from the server. This enables structured logging, allowing you to receive rich, contextual information.
59
+
60
+ The dictionary contains two keys:
61
+ - `msg`: The string log message.
62
+ - `extra`: A dictionary containing any extra data sent from the server.
63
+
64
+ This structure is preserved even when logs are forwarded through a FastMCP proxy, making it a powerful tool for debugging complex, multi-server applications.
65
+
66
+ ### Handler Parameters
67
+
68
+ The `log_handler` is called every time a log message is received. It receives a `LogMessage` object:
69
+
70
+ <Card icon="code" title="Log Handler Parameters">
71
+ <ResponseField name="LogMessage" type="Log Message Object">
72
+ <Expandable title="attributes">
73
+ <ResponseField name="level" type='Literal["debug", "info", "notice", "warning", "error", "critical", "alert", "emergency"]'>
74
+ The log level
75
+ </ResponseField>
76
+
77
+ <ResponseField name="logger" type="str | None">
78
+ The logger name (optional, may be None)
79
+ </ResponseField>
80
+
81
+ <ResponseField name="data" type="dict">
82
+ The log payload, containing `msg` and `extra` keys.
83
+ </ResponseField>
84
+ </Expandable>
85
+ </ResponseField>
86
+ </Card>
87
+
88
+ ```python
89
+ async def detailed_log_handler(message: LogMessage):
90
+ msg = message.data.get('msg')
91
+ extra = message.data.get('extra')
92
+
93
+ if message.level == "error":
94
+ print(f"ERROR: {msg} | Details: {extra}")
95
+ elif message.level == "warning":
96
+ print(f"WARNING: {msg} | Details: {extra}")
97
+ else:
98
+ print(f"{message.level.upper()}: {msg}")
99
+ ```
100
+
101
+ ## Default Log Handling
102
+
103
+ If you don't provide a custom `log_handler`, FastMCP uses a default handler that emits a DEBUG-level FastMCP log for every log message received from the server, which is useful for visibility without polluting your own logs.
104
+
105
+ ```python
106
+ client = Client("my_mcp_server.py")
107
+
108
+ async with client:
109
+ # Server logs will be emitted at DEBUG level automatically
110
+ await client.call_tool("some_tool")
111
+ ```
@@ -25,8 +25,37 @@ async with client:
25
25
  print(f"Description: {prompt.description}")
26
26
  if prompt.arguments:
27
27
  print(f"Arguments: {[arg.name for arg in prompt.arguments]}")
28
+ # Access tags and other metadata
29
+ if hasattr(prompt, '_meta') and prompt._meta:
30
+ fastmcp_meta = prompt._meta.get('_fastmcp', {})
31
+ print(f"Tags: {fastmcp_meta.get('tags', [])}")
28
32
  ```
29
33
 
34
+ ### Filtering by Tags
35
+
36
+ <VersionBadge version="2.11.0" />
37
+
38
+ You can use the `meta` field to filter prompts based on their tags:
39
+
40
+ ```python
41
+ async with client:
42
+ prompts = await client.list_prompts()
43
+
44
+ # Filter prompts by tag
45
+ analysis_prompts = [
46
+ prompt for prompt in prompts
47
+ if hasattr(prompt, '_meta') and prompt._meta and
48
+ prompt._meta.get('_fastmcp', {}) and
49
+ 'analysis' in prompt._meta.get('_fastmcp', {}).get('tags', [])
50
+ ]
51
+
52
+ print(f"Found {len(analysis_prompts)} analysis prompts")
53
+ ```
54
+
55
+ <Note>
56
+ The `_meta` field is part of the standard MCP specification. FastMCP servers include tags and other metadata within a `_fastmcp` namespace (e.g., `_meta._fastmcp.tags`) to avoid conflicts with user-defined metadata. This behavior can be controlled with the server's `include_fastmcp_meta` setting - when disabled, the `_fastmcp` namespace won't be included. Other MCP server implementations may not provide this metadata structure.
57
+ </Note>
58
+
30
59
  ## Using Prompts
31
60
 
32
61
  ### Basic Usage
@@ -34,6 +34,10 @@ async with client:
34
34
  print(f"Name: {resource.name}")
35
35
  print(f"Description: {resource.description}")
36
36
  print(f"MIME Type: {resource.mimeType}")
37
+ # Access tags and other metadata
38
+ if hasattr(resource, '_meta') and resource._meta:
39
+ fastmcp_meta = resource._meta.get('_fastmcp', {})
40
+ print(f"Tags: {fastmcp_meta.get('tags', [])}")
37
41
  ```
38
42
 
39
43
  ### Resource Templates
@@ -49,8 +53,37 @@ async with client:
49
53
  print(f"Template URI: {template.uriTemplate}")
50
54
  print(f"Name: {template.name}")
51
55
  print(f"Description: {template.description}")
56
+ # Access tags and other metadata
57
+ if hasattr(template, '_meta') and template._meta:
58
+ fastmcp_meta = template._meta.get('_fastmcp', {})
59
+ print(f"Tags: {fastmcp_meta.get('tags', [])}")
52
60
  ```
53
61
 
62
+ ### Filtering by Tags
63
+
64
+ <VersionBadge version="2.11.0" />
65
+
66
+ You can use the `meta` field to filter resources based on their tags:
67
+
68
+ ```python
69
+ async with client:
70
+ resources = await client.list_resources()
71
+
72
+ # Filter resources by tag
73
+ config_resources = [
74
+ resource for resource in resources
75
+ if hasattr(resource, '_meta') and resource._meta and
76
+ resource._meta.get('_fastmcp', {}) and
77
+ 'config' in resource._meta.get('_fastmcp', {}).get('tags', [])
78
+ ]
79
+
80
+ print(f"Found {len(config_resources)} config resources")
81
+ ```
82
+
83
+ <Note>
84
+ The `_meta` field is part of the standard MCP specification. FastMCP servers include tags and other metadata within a `_fastmcp` namespace (e.g., `_meta._fastmcp.tags`) to avoid conflicts with user-defined metadata. This behavior can be controlled with the server's `include_fastmcp_meta` setting - when disabled, the `_fastmcp` namespace won't be included. Other MCP server implementations may not provide this metadata structure.
85
+ </Note>
86
+
54
87
  ## Reading Resources
55
88
 
56
89
  ### Static Resources
@@ -25,8 +25,37 @@ async with client:
25
25
  print(f"Description: {tool.description}")
26
26
  if tool.inputSchema:
27
27
  print(f"Parameters: {tool.inputSchema}")
28
+ # Access tags and other metadata
29
+ if hasattr(tool, '_meta') and tool._meta:
30
+ fastmcp_meta = tool._meta.get('_fastmcp', {})
31
+ print(f"Tags: {fastmcp_meta.get('tags', [])}")
28
32
  ```
29
33
 
34
+ ### Filtering by Tags
35
+
36
+ <VersionBadge version="2.11.0" />
37
+
38
+ You can use the `meta` field to filter tools based on their tags:
39
+
40
+ ```python
41
+ async with client:
42
+ tools = await client.list_tools()
43
+
44
+ # Filter tools by tag
45
+ analysis_tools = [
46
+ tool for tool in tools
47
+ if hasattr(tool, '_meta') and tool._meta and
48
+ tool._meta.get('_fastmcp', {}) and
49
+ 'analysis' in tool._meta.get('_fastmcp', {}).get('tags', [])
50
+ ]
51
+
52
+ print(f"Found {len(analysis_tools)} analysis tools")
53
+ ```
54
+
55
+ <Note>
56
+ The `_meta` field is part of the standard MCP specification. FastMCP servers include tags and other metadata within a `_fastmcp` namespace (e.g., `_meta._fastmcp.tags`) to avoid conflicts with user-defined metadata. This behavior can be controlled with the server's `include_fastmcp_meta` setting - when disabled, the `_fastmcp` namespace won't be included. Other MCP server implementations may not provide this metadata structure.
57
+ </Note>
58
+
30
59
  ## Executing Tools
31
60
 
32
61
  ### Basic Execution
@@ -180,6 +180,7 @@ FastMCP provides convenience transports that are thin wrappers around `StdioTran
180
180
 
181
181
  - **`PythonStdioTransport`** - Uses `python` command for `.py` files
182
182
  - **`NodeStdioTransport`** - Uses `node` command for `.js` files
183
+ - **`UvStdioTransport`** - Uses `uv` for Python packages (uses `env_vars` parameter)
183
184
  - **`UvxStdioTransport`** - Uses `uvx` for Python packages (uses `env_vars` parameter)
184
185
  - **`NpxStdioTransport`** - Uses `npx` for Node packages (uses `env_vars` parameter)
185
186
 
@@ -308,3 +309,75 @@ async with client:
308
309
  answer = await client.call_tool("assistant_ask", {"question": "What?"})
309
310
  ```
310
311
 
312
+ ### Tool Transformation with FastMCP and MCPConfig
313
+
314
+ FastMCP supports basic tool transformations to be defined alongside the MCP Servers in the MCPConfig file.
315
+
316
+ ```python
317
+ config = {
318
+ "mcpServers": {
319
+ "weather": {
320
+ "url": "https://weather.example.com/mcp",
321
+ "transport": "http",
322
+ "tools": { } # <--- This is the tool transformation section
323
+ }
324
+ }
325
+ }
326
+ ```
327
+
328
+ With these transformations, you can transform (change) the name, title, description, tags, enablement, and arguments of a tool.
329
+
330
+ For each argument the tool takes, you can transform (change) the name, description, default, visibility, whether it's required, and you can provide example values.
331
+
332
+ In the following example, we're transforming the `weather_get_forecast` tool to only retrieve the weather for `Miami` and hiding the `city` argument from the client.
333
+
334
+ ```python
335
+ tool_transformations = {
336
+ "weather_get_forecast": {
337
+ "name": "miami_weather",
338
+ "description": "Get the weather for Miami",
339
+ "arguments": {
340
+ "city": {
341
+ "name": "city",
342
+ "default": "Miami",
343
+ "hide": True,
344
+ }
345
+ }
346
+ }
347
+ }
348
+
349
+ config = {
350
+ "mcpServers": {
351
+ "weather": {
352
+ "url": "https://weather.example.com/mcp",
353
+ "transport": "http",
354
+ "tools": tool_transformations
355
+ }
356
+ }
357
+ }
358
+ ```
359
+
360
+ #### Allowlisting and Blocklisting Tools
361
+
362
+ Tools can be allowlisted or blocklisted from the client by applying `tags` to the tools on the server. In the following example, we're allowlisting only tools marked with the `forecast` tag, all other tools will be unavailable to the client.
363
+
364
+ ```python
365
+ tool_transformations = {
366
+ "weather_get_forecast": {
367
+ "enabled": True,
368
+ "tags": ["forecast"]
369
+ }
370
+ }
371
+
372
+
373
+ config = {
374
+ "mcpServers": {
375
+ "weather": {
376
+ "url": "https://weather.example.com/mcp",
377
+ "transport": "http",
378
+ "tools": tool_transformations,
379
+ "include_tags": ["forecast"]
380
+ }
381
+ }
382
+ }
383
+ ```