fastmcp 2.11.1__tar.gz → 2.11.3__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 (481) hide show
  1. {fastmcp-2.11.1 → fastmcp-2.11.3}/.github/ISSUE_TEMPLATE/bug.yml +13 -25
  2. fastmcp-2.11.3/.github/ISSUE_TEMPLATE/enhancement.yml +34 -0
  3. fastmcp-2.11.3/.github/copilot-instructions.md +1 -0
  4. fastmcp-2.11.3/.github/workflows/marvin.yml +52 -0
  5. {fastmcp-2.11.1 → fastmcp-2.11.3}/.github/workflows/run-static.yml +22 -0
  6. {fastmcp-2.11.1 → fastmcp-2.11.3}/.github/workflows/run-tests.yml +4 -2
  7. {fastmcp-2.11.1 → fastmcp-2.11.3}/.gitignore +5 -0
  8. fastmcp-2.11.3/AGENTS.md +134 -0
  9. fastmcp-2.11.3/CLAUDE.md +1 -0
  10. {fastmcp-2.11.1 → fastmcp-2.11.3}/PKG-INFO +2 -2
  11. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/clients/logging.mdx +2 -2
  12. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/docs.json +19 -6
  13. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/patterns/cli.mdx +145 -89
  14. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-cli-run.mdx +14 -14
  15. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-client-logging.mdx +5 -1
  16. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-client-transports.mdx +26 -26
  17. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-resources-resource_manager.mdx +12 -12
  18. fastmcp-2.11.3/docs/python-sdk/fastmcp-server-auth-auth.mdx +175 -0
  19. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-auth-providers-jwt.mdx +11 -11
  20. fastmcp-2.11.3/docs/python-sdk/fastmcp-server-auth-providers-workos.mdx +48 -0
  21. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-dependencies.mdx +16 -3
  22. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-http.mdx +14 -24
  23. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-proxy.mdx +42 -36
  24. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-server.mdx +53 -47
  25. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-tools-tool.mdx +13 -13
  26. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-tools-tool_manager.mdx +11 -11
  27. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-tools-tool_transform.mdx +12 -12
  28. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-utilities-components.mdx +17 -9
  29. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-utilities-inspect.mdx +10 -10
  30. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-utilities-openapi.mdx +13 -13
  31. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-utilities-types.mdx +10 -10
  32. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/servers/composition.mdx +6 -4
  33. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/servers/context.mdx +142 -2
  34. {fastmcp-2.11.1 → fastmcp-2.11.3}/justfile +0 -1
  35. {fastmcp-2.11.1 → fastmcp-2.11.3}/pyproject.toml +1 -1
  36. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/cli/cli.py +5 -5
  37. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/cli/install/claude_code.py +2 -2
  38. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/cli/install/claude_desktop.py +2 -2
  39. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/cli/install/cursor.py +2 -2
  40. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/cli/install/mcp_json.py +2 -2
  41. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/cli/install/shared.py +2 -2
  42. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/cli/run.py +74 -24
  43. fastmcp-2.11.3/src/fastmcp/client/logging.py +50 -0
  44. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/client/transports.py +4 -3
  45. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/experimental/server/openapi/routing.py +1 -1
  46. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/experimental/server/openapi/server.py +10 -23
  47. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/experimental/utilities/openapi/__init__.py +2 -2
  48. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/experimental/utilities/openapi/formatters.py +34 -0
  49. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/experimental/utilities/openapi/models.py +5 -2
  50. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/experimental/utilities/openapi/parser.py +248 -70
  51. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/experimental/utilities/openapi/schemas.py +135 -106
  52. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/prompts/prompt_manager.py +2 -2
  53. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/resources/resource_manager.py +12 -6
  54. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/auth/__init__.py +9 -1
  55. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/auth/auth.py +17 -1
  56. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/auth/providers/jwt.py +3 -4
  57. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/auth/registry.py +1 -1
  58. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/dependencies.py +32 -2
  59. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/http.py +41 -34
  60. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/proxy.py +33 -15
  61. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/server.py +18 -11
  62. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/settings.py +6 -9
  63. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/tools/tool.py +7 -7
  64. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/tools/tool_manager.py +3 -1
  65. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/tools/tool_transform.py +41 -27
  66. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/utilities/components.py +19 -4
  67. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/utilities/inspect.py +12 -17
  68. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/utilities/openapi.py +4 -4
  69. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/cli/test_cursor.py +4 -4
  70. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/cli/test_run.py +11 -11
  71. fastmcp-2.11.3/tests/client/test_logs.py +193 -0
  72. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/client/test_openapi_experimental.py +3 -3
  73. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/client/test_openapi_legacy.py +3 -3
  74. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/client/test_streamable_http.py +4 -8
  75. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/deprecated/test_settings.py +0 -1
  76. fastmcp-2.11.3/tests/experimental/README.md +3 -0
  77. fastmcp-2.11.3/tests/experimental/openapi_parser/README.md +5 -0
  78. fastmcp-2.11.3/tests/experimental/openapi_parser/conftest.py +11 -0
  79. {fastmcp-2.11.1/tests/experimental → fastmcp-2.11.3/tests/experimental/openapi_parser}/server/openapi/test_end_to_end_compatibility.py +4 -2
  80. {fastmcp-2.11.1/tests/experimental/server → fastmcp-2.11.3/tests/experimental/openapi_parser/server/openapi}/test_openapi_performance.py +2 -2
  81. {fastmcp-2.11.1/tests/experimental → fastmcp-2.11.3/tests/experimental/openapi_parser}/server/openapi/test_performance_comparison.py +5 -5
  82. fastmcp-2.11.3/tests/experimental/openapi_parser/utilities/openapi/test_allof_requestbody.py +227 -0
  83. {fastmcp-2.11.1/tests/experimental → fastmcp-2.11.3/tests/experimental/openapi_parser}/utilities/openapi/test_models.py +7 -5
  84. {fastmcp-2.11.1/tests/experimental → fastmcp-2.11.3/tests/experimental/openapi_parser}/utilities/openapi/test_parser.py +129 -0
  85. {fastmcp-2.11.1/tests/experimental → fastmcp-2.11.3/tests/experimental/openapi_parser}/utilities/openapi/test_schemas.py +5 -3
  86. fastmcp-2.11.3/tests/experimental/openapi_parser/utilities/openapi/test_transitive_references.py +788 -0
  87. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/resources/test_resource_manager.py +8 -8
  88. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/auth/test_jwt_provider.py +14 -4
  89. fastmcp-2.11.3/tests/server/auth/test_remote_auth_provider.py +392 -0
  90. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/auth/test_static_token_verifier.py +26 -3
  91. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/http/test_bearer_auth_backend.py +1 -1
  92. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/http/test_http_auth_middleware.py +9 -9
  93. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/proxy/test_proxy_server.py +20 -3
  94. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/test_import_server.py +38 -0
  95. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/test_mount.py +52 -14
  96. fastmcp-2.11.3/tests/server/test_streamable_http_no_redirect.py +85 -0
  97. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/test_tool_transformation.py +28 -0
  98. fastmcp-2.11.3/tests/tools/__init__.py +0 -0
  99. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/tools/test_tool.py +18 -12
  100. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/tools/test_tool_manager.py +2 -2
  101. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/tools/test_tool_transform.py +30 -22
  102. fastmcp-2.11.3/tests/utilities/test_components.py +438 -0
  103. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/utilities/test_inspect.py +23 -19
  104. {fastmcp-2.11.1 → fastmcp-2.11.3}/uv.lock +4 -4
  105. fastmcp-2.11.1/.github/ISSUE_TEMPLATE/enhancement.yml +0 -38
  106. fastmcp-2.11.1/AGENTS.md +0 -67
  107. fastmcp-2.11.1/CLAUDE.md +0 -46
  108. fastmcp-2.11.1/docs/patterns/http-requests.mdx +0 -87
  109. fastmcp-2.11.1/docs/python-sdk/fastmcp-server-auth-auth.mdx +0 -124
  110. fastmcp-2.11.1/docs/python-sdk/fastmcp-server-auth-providers-bearer_env.mdx +0 -22
  111. fastmcp-2.11.1/docs/python-sdk/fastmcp-server-auth-providers-workos.mdx +0 -58
  112. fastmcp-2.11.1/src/fastmcp/client/logging.py +0 -26
  113. fastmcp-2.11.1/tests/client/test_logs.py +0 -90
  114. {fastmcp-2.11.1 → fastmcp-2.11.3}/.ccignore +0 -0
  115. {fastmcp-2.11.1 → fastmcp-2.11.3}/.cursor/rules/core-mcp-objects.mdc +0 -0
  116. {fastmcp-2.11.1 → fastmcp-2.11.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  117. {fastmcp-2.11.1 → fastmcp-2.11.3}/.github/dependabot.yml +0 -0
  118. {fastmcp-2.11.1 → fastmcp-2.11.3}/.github/labeler.yml +0 -0
  119. {fastmcp-2.11.1 → fastmcp-2.11.3}/.github/release.yml +0 -0
  120. {fastmcp-2.11.1 → fastmcp-2.11.3}/.github/workflows/labeler.yml +0 -0
  121. {fastmcp-2.11.1 → fastmcp-2.11.3}/.github/workflows/publish.yml +0 -0
  122. {fastmcp-2.11.1 → fastmcp-2.11.3}/.pre-commit-config.yaml +0 -0
  123. {fastmcp-2.11.1 → fastmcp-2.11.3}/LICENSE +0 -0
  124. {fastmcp-2.11.1 → fastmcp-2.11.3}/README.md +0 -0
  125. {fastmcp-2.11.1 → fastmcp-2.11.3}/README_OPENAPI.md +0 -0
  126. {fastmcp-2.11.1 → fastmcp-2.11.3}/Windows_Notes.md +0 -0
  127. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/.ccignore +0 -0
  128. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/.cursor/rules/mintlify.mdc +0 -0
  129. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/assets/favicon.svg +0 -0
  130. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/assets/images/tutorial-rest-api-result.png +0 -0
  131. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/assets/updates/release-2-7.png +0 -0
  132. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/changelog.mdx +0 -0
  133. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/clients/auth/bearer.mdx +0 -0
  134. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/clients/auth/oauth.mdx +0 -0
  135. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/clients/client.mdx +0 -0
  136. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/clients/elicitation.mdx +0 -0
  137. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/clients/messages.mdx +0 -0
  138. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/clients/progress.mdx +0 -0
  139. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/clients/prompts.mdx +0 -0
  140. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/clients/resources.mdx +0 -0
  141. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/clients/roots.mdx +0 -0
  142. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/clients/sampling.mdx +0 -0
  143. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/clients/tools.mdx +0 -0
  144. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/clients/transports.mdx +0 -0
  145. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/community/README.md +0 -0
  146. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/community/showcase.mdx +0 -0
  147. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/css/banner.css +0 -0
  148. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/css/python-sdk.css +0 -0
  149. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/css/style.css +0 -0
  150. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/css/version-badge.css +0 -0
  151. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/deployment/running-server.mdx +0 -0
  152. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/getting-started/installation.mdx +0 -0
  153. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/getting-started/quickstart.mdx +0 -0
  154. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/getting-started/welcome.mdx +0 -0
  155. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/anthropic.mdx +0 -0
  156. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/authkit.mdx +0 -0
  157. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/chatgpt.mdx +0 -0
  158. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/claude-code.mdx +0 -0
  159. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/claude-desktop.mdx +0 -0
  160. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/cursor-install-mcp.png +0 -0
  161. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/cursor.mdx +0 -0
  162. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/eunomia-authorization.mdx +0 -0
  163. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/fastapi.mdx +0 -0
  164. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/gemini.mdx +0 -0
  165. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/images/authkit/enable_dcr.png +0 -0
  166. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/images/permit/abac_condition_example.png +0 -0
  167. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/images/permit/abac_policy_example.png +0 -0
  168. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/images/permit/policy_mapping.png +0 -0
  169. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/images/permit/role_assignement.png +0 -0
  170. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/mcp-json-configuration.mdx +0 -0
  171. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/openai.mdx +0 -0
  172. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/openapi.mdx +0 -0
  173. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/permit.mdx +0 -0
  174. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/integrations/starlette.mdx +0 -0
  175. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/patterns/contrib.mdx +0 -0
  176. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/patterns/decorating-methods.mdx +0 -0
  177. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/patterns/testing.mdx +0 -0
  178. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/patterns/tool-transformation.mdx +0 -0
  179. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-cli-__init__.mdx +0 -0
  180. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-cli-claude.mdx +0 -0
  181. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-cli-cli.mdx +0 -0
  182. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-cli-install-__init__.mdx +0 -0
  183. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-cli-install-claude_code.mdx +0 -0
  184. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-cli-install-claude_desktop.mdx +0 -0
  185. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-cli-install-cursor.mdx +0 -0
  186. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-cli-install-mcp_json.mdx +0 -0
  187. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-cli-install-shared.mdx +0 -0
  188. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-client-__init__.mdx +0 -0
  189. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-client-auth-__init__.mdx +0 -0
  190. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-client-auth-bearer.mdx +0 -0
  191. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-client-auth-oauth.mdx +0 -0
  192. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-client-client.mdx +0 -0
  193. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-client-elicitation.mdx +0 -0
  194. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-client-messages.mdx +0 -0
  195. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-client-oauth_callback.mdx +0 -0
  196. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-client-progress.mdx +0 -0
  197. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-client-roots.mdx +0 -0
  198. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-client-sampling.mdx +0 -0
  199. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-exceptions.mdx +0 -0
  200. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-mcp_config.mdx +0 -0
  201. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-prompts-__init__.mdx +0 -0
  202. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-prompts-prompt.mdx +0 -0
  203. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +0 -0
  204. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-resources-__init__.mdx +0 -0
  205. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-resources-resource.mdx +0 -0
  206. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-resources-template.mdx +0 -0
  207. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-resources-types.mdx +0 -0
  208. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-__init__.mdx +0 -0
  209. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-auth-__init__.mdx +0 -0
  210. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-auth-providers-__init__.mdx +0 -0
  211. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +0 -0
  212. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +0 -0
  213. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-auth-registry.mdx +0 -0
  214. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-context.mdx +0 -0
  215. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-elicitation.mdx +0 -0
  216. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-low_level.mdx +0 -0
  217. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-middleware-__init__.mdx +0 -0
  218. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-middleware-error_handling.mdx +0 -0
  219. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-middleware-logging.mdx +0 -0
  220. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +0 -0
  221. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-middleware-rate_limiting.mdx +0 -0
  222. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-middleware-timing.mdx +0 -0
  223. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-server-openapi.mdx +0 -0
  224. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-settings.mdx +0 -0
  225. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-tools-__init__.mdx +0 -0
  226. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-utilities-__init__.mdx +0 -0
  227. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-utilities-cli.mdx +0 -0
  228. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-utilities-exceptions.mdx +0 -0
  229. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-utilities-http.mdx +0 -0
  230. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-utilities-json_schema.mdx +0 -0
  231. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-utilities-json_schema_type.mdx +0 -0
  232. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-utilities-logging.mdx +0 -0
  233. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +0 -0
  234. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/python-sdk/fastmcp-utilities-tests.mdx +0 -0
  235. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/servers/auth/authentication.mdx +0 -0
  236. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/servers/auth/full-oauth-server.mdx +0 -0
  237. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/servers/auth/remote-oauth.mdx +0 -0
  238. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/servers/auth/token-verification.mdx +0 -0
  239. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/servers/elicitation.mdx +0 -0
  240. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/servers/logging.mdx +0 -0
  241. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/servers/middleware.mdx +0 -0
  242. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/servers/progress.mdx +0 -0
  243. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/servers/prompts.mdx +0 -0
  244. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/servers/proxy.mdx +0 -0
  245. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/servers/resources.mdx +0 -0
  246. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/servers/sampling.mdx +0 -0
  247. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/servers/server.mdx +0 -0
  248. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/servers/tools.mdx +0 -0
  249. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/snippets/local-focus.mdx +0 -0
  250. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/snippets/version-badge.mdx +0 -0
  251. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/snippets/youtube-embed.mdx +0 -0
  252. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/tutorials/create-mcp-server.mdx +0 -0
  253. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/tutorials/mcp.mdx +0 -0
  254. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/tutorials/rest-api.mdx +0 -0
  255. {fastmcp-2.11.1 → fastmcp-2.11.3}/docs/updates.mdx +0 -0
  256. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/atproto_mcp/README.md +0 -0
  257. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/atproto_mcp/demo.py +0 -0
  258. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/atproto_mcp/pyproject.toml +0 -0
  259. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/atproto_mcp/src/atproto_mcp/__init__.py +0 -0
  260. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/atproto_mcp/src/atproto_mcp/__main__.py +0 -0
  261. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/__init__.py +0 -0
  262. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_client.py +0 -0
  263. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_posts.py +0 -0
  264. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_profile.py +0 -0
  265. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_read.py +0 -0
  266. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_social.py +0 -0
  267. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/atproto_mcp/src/atproto_mcp/py.typed +0 -0
  268. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/atproto_mcp/src/atproto_mcp/server.py +0 -0
  269. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/atproto_mcp/src/atproto_mcp/settings.py +0 -0
  270. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/atproto_mcp/src/atproto_mcp/types.py +0 -0
  271. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/complex_inputs.py +0 -0
  272. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/config_server.py +0 -0
  273. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/desktop.py +0 -0
  274. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/echo.py +0 -0
  275. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/get_file.py +0 -0
  276. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/in_memory_proxy_example.py +0 -0
  277. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/memory.py +0 -0
  278. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/mount_example.py +0 -0
  279. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/sampling.py +0 -0
  280. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/screenshot.py +0 -0
  281. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/serializer.py +0 -0
  282. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/simple_echo.py +0 -0
  283. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/smart_home/README.md +0 -0
  284. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/smart_home/pyproject.toml +0 -0
  285. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/smart_home/src/smart_home/__init__.py +0 -0
  286. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/smart_home/src/smart_home/__main__.py +0 -0
  287. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/smart_home/src/smart_home/hub.py +0 -0
  288. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
  289. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -0
  290. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/smart_home/src/smart_home/lights/server.py +0 -0
  291. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/smart_home/src/smart_home/py.typed +0 -0
  292. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/smart_home/src/smart_home/settings.py +0 -0
  293. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/smart_home/uv.lock +0 -0
  294. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/tags_example.py +0 -0
  295. {fastmcp-2.11.1 → fastmcp-2.11.3}/examples/text_me.py +0 -0
  296. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/__init__.py +0 -0
  297. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/cli/__init__.py +0 -0
  298. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/cli/claude.py +0 -0
  299. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/cli/install/__init__.py +0 -0
  300. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/client/__init__.py +0 -0
  301. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/client/auth/__init__.py +0 -0
  302. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/client/auth/bearer.py +0 -0
  303. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/client/auth/oauth.py +0 -0
  304. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/client/client.py +0 -0
  305. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/client/elicitation.py +0 -0
  306. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/client/messages.py +0 -0
  307. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/client/oauth_callback.py +0 -0
  308. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/client/progress.py +0 -0
  309. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/client/roots.py +0 -0
  310. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/client/sampling.py +0 -0
  311. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/contrib/README.md +0 -0
  312. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  313. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  314. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  315. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  316. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/contrib/component_manager/README.md +0 -0
  317. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/contrib/component_manager/__init__.py +0 -0
  318. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/contrib/component_manager/component_manager.py +0 -0
  319. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/contrib/component_manager/component_service.py +0 -0
  320. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/contrib/component_manager/example.py +0 -0
  321. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/contrib/mcp_mixin/README.md +0 -0
  322. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  323. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
  324. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  325. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/exceptions.py +0 -0
  326. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/experimental/server/openapi/README.md +0 -0
  327. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/experimental/server/openapi/__init__.py +0 -0
  328. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/experimental/server/openapi/components.py +0 -0
  329. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/experimental/utilities/openapi/README.md +0 -0
  330. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/experimental/utilities/openapi/director.py +0 -0
  331. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/experimental/utilities/openapi/json_schema_converter.py +0 -0
  332. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/mcp_config.py +0 -0
  333. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/prompts/__init__.py +0 -0
  334. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/prompts/prompt.py +0 -0
  335. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/py.typed +0 -0
  336. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/resources/__init__.py +0 -0
  337. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/resources/resource.py +0 -0
  338. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/resources/template.py +0 -0
  339. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/resources/types.py +0 -0
  340. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/__init__.py +0 -0
  341. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/auth/providers/__init__.py +0 -0
  342. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/auth/providers/bearer.py +0 -0
  343. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/auth/providers/in_memory.py +0 -0
  344. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/auth/providers/workos.py +0 -0
  345. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/context.py +0 -0
  346. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/elicitation.py +0 -0
  347. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/low_level.py +0 -0
  348. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/middleware/__init__.py +0 -0
  349. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/middleware/error_handling.py +0 -0
  350. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/middleware/logging.py +0 -0
  351. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/middleware/middleware.py +0 -0
  352. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/middleware/rate_limiting.py +0 -0
  353. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/middleware/timing.py +0 -0
  354. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/server/openapi.py +0 -0
  355. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/tools/__init__.py +0 -0
  356. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/utilities/__init__.py +0 -0
  357. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/utilities/cli.py +0 -0
  358. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/utilities/exceptions.py +0 -0
  359. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/utilities/http.py +0 -0
  360. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/utilities/json_schema.py +0 -0
  361. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/utilities/json_schema_type.py +0 -0
  362. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/utilities/logging.py +0 -0
  363. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/utilities/mcp_config.py +0 -0
  364. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/utilities/tests.py +0 -0
  365. {fastmcp-2.11.1 → fastmcp-2.11.3}/src/fastmcp/utilities/types.py +0 -0
  366. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/__init__.py +0 -0
  367. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/cli/__init__.py +0 -0
  368. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/cli/test_cli.py +0 -0
  369. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/cli/test_install.py +0 -0
  370. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/cli/test_run_with_uv.py +0 -0
  371. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/cli/test_shared.py +0 -0
  372. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/client/__init__.py +0 -0
  373. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/client/auth/__init__.py +0 -0
  374. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/client/auth/test_oauth_client.py +0 -0
  375. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/client/test_client.py +0 -0
  376. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/client/test_elicitation.py +0 -0
  377. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/client/test_notifications.py +0 -0
  378. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/client/test_progress.py +0 -0
  379. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/client/test_roots.py +0 -0
  380. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/client/test_sampling.py +0 -0
  381. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/client/test_sse.py +0 -0
  382. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/client/test_stdio.py +0 -0
  383. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/client/transports/__init__.py +0 -0
  384. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/client/transports/test_uv_transport.py +0 -0
  385. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/conftest.py +0 -0
  386. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/contrib/__init__.py +0 -0
  387. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/contrib/test_bulk_tool_caller.py +0 -0
  388. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/contrib/test_component_manager.py +0 -0
  389. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/contrib/test_mcp_mixin.py +0 -0
  390. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/deprecated/__init__.py +0 -0
  391. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/deprecated/test_bearer_auth_provider.py +0 -0
  392. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/deprecated/test_deprecated.py +0 -0
  393. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/deprecated/test_mount_import_arg_order.py +0 -0
  394. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/deprecated/test_mount_separators.py +0 -0
  395. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/deprecated/test_proxy_client.py +0 -0
  396. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/deprecated/test_resource_prefixes.py +0 -0
  397. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/deprecated/test_route_type_ignore.py +0 -0
  398. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/experimental/__init__.py +0 -0
  399. {fastmcp-2.11.1/tests/experimental/server → fastmcp-2.11.3/tests/experimental/openapi_parser}/__init__.py +0 -0
  400. {fastmcp-2.11.1/tests/experimental/utilities → fastmcp-2.11.3/tests/experimental/openapi_parser/server}/__init__.py +0 -0
  401. {fastmcp-2.11.1/tests/experimental → fastmcp-2.11.3/tests/experimental/openapi_parser}/server/openapi/__init__.py +0 -0
  402. {fastmcp-2.11.1/tests/experimental → fastmcp-2.11.3/tests/experimental/openapi_parser}/server/openapi/test_comprehensive.py +0 -0
  403. {fastmcp-2.11.1/tests/experimental → fastmcp-2.11.3/tests/experimental/openapi_parser}/server/openapi/test_deepobject_style.py +0 -0
  404. {fastmcp-2.11.1/tests/experimental → fastmcp-2.11.3/tests/experimental/openapi_parser}/server/openapi/test_openapi_features.py +0 -0
  405. {fastmcp-2.11.1/tests/experimental → fastmcp-2.11.3/tests/experimental/openapi_parser}/server/openapi/test_parameter_collisions.py +0 -0
  406. {fastmcp-2.11.1/tests/experimental → fastmcp-2.11.3/tests/experimental/openapi_parser}/server/openapi/test_server.py +0 -0
  407. {fastmcp-2.11.1/tests/integration_tests → fastmcp-2.11.3/tests/experimental/openapi_parser/utilities}/__init__.py +0 -0
  408. {fastmcp-2.11.1/tests/experimental → fastmcp-2.11.3/tests/experimental/openapi_parser}/utilities/openapi/__init__.py +0 -0
  409. {fastmcp-2.11.1/tests/experimental → fastmcp-2.11.3/tests/experimental/openapi_parser}/utilities/openapi/conftest.py +0 -0
  410. {fastmcp-2.11.1/tests/experimental → fastmcp-2.11.3/tests/experimental/openapi_parser}/utilities/openapi/test_director.py +0 -0
  411. {fastmcp-2.11.1/tests/experimental → fastmcp-2.11.3/tests/experimental/openapi_parser}/utilities/openapi/test_legacy_compatibility.py +0 -0
  412. {fastmcp-2.11.1/tests/experimental → fastmcp-2.11.3/tests/experimental/openapi_parser}/utilities/openapi/test_nullable_fields.py +0 -0
  413. {fastmcp-2.11.1/tests/prompts → fastmcp-2.11.3/tests/integration_tests}/__init__.py +0 -0
  414. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/integration_tests/conftest.py +0 -0
  415. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/integration_tests/test_github_mcp_remote.py +0 -0
  416. {fastmcp-2.11.1/tests/resources → fastmcp-2.11.3/tests/prompts}/__init__.py +0 -0
  417. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/prompts/test_prompt.py +0 -0
  418. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/prompts/test_prompt_manager.py +0 -0
  419. {fastmcp-2.11.1/tests/server → fastmcp-2.11.3/tests/resources}/__init__.py +0 -0
  420. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/resources/test_file_resources.py +0 -0
  421. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/resources/test_function_resources.py +0 -0
  422. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/resources/test_resource_template.py +0 -0
  423. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/resources/test_resource_template_meta.py +0 -0
  424. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/resources/test_resources.py +0 -0
  425. {fastmcp-2.11.1/tests/server/http → fastmcp-2.11.3/tests/server}/__init__.py +0 -0
  426. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/auth/test_workos.py +0 -0
  427. {fastmcp-2.11.1/tests/server/middleware → fastmcp-2.11.3/tests/server/http}/__init__.py +0 -0
  428. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/http/test_custom_routes.py +0 -0
  429. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/http/test_http_dependencies.py +0 -0
  430. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/http/test_http_middleware.py +0 -0
  431. {fastmcp-2.11.1/tests/server/openapi → fastmcp-2.11.3/tests/server/middleware}/__init__.py +0 -0
  432. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/middleware/test_error_handling.py +0 -0
  433. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/middleware/test_logging.py +0 -0
  434. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/middleware/test_middleware.py +0 -0
  435. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/middleware/test_rate_limiting.py +0 -0
  436. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/middleware/test_timing.py +0 -0
  437. {fastmcp-2.11.1/tests/server/proxy → fastmcp-2.11.3/tests/server/openapi}/__init__.py +0 -0
  438. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/openapi/conftest.py +0 -0
  439. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/openapi/test_advanced_behavior.py +0 -0
  440. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/openapi/test_basic_functionality.py +0 -0
  441. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/openapi/test_configuration.py +0 -0
  442. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/openapi/test_deepobject_style.py +0 -0
  443. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/openapi/test_description_propagation.py +0 -0
  444. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/openapi/test_explode_integration.py +0 -0
  445. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/openapi/test_openapi_compatibility.py +0 -0
  446. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/openapi/test_openapi_path_parameters.py +0 -0
  447. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/openapi/test_optional_parameters.py +0 -0
  448. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/openapi/test_parameter_collisions.py +0 -0
  449. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/openapi/test_route_map_fn.py +0 -0
  450. {fastmcp-2.11.1/tests/tools → fastmcp-2.11.3/tests/server/proxy}/__init__.py +0 -0
  451. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/proxy/test_proxy_client.py +0 -0
  452. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/proxy/test_stateful_proxy_client.py +0 -0
  453. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/test_app_state.py +0 -0
  454. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/test_auth_integration.py +0 -0
  455. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/test_context.py +0 -0
  456. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/test_experimental_openapi_feature_flag.py +0 -0
  457. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/test_file_server.py +0 -0
  458. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/test_logging.py +0 -0
  459. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/test_resource_prefix_formats.py +0 -0
  460. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/test_run_server.py +0 -0
  461. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/test_server.py +0 -0
  462. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/test_server_interactions.py +0 -0
  463. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/test_tool_annotations.py +0 -0
  464. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/server/test_tool_exclude_args.py +0 -0
  465. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/test_examples.py +0 -0
  466. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/test_mcp_config.py +0 -0
  467. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/tools/test_tool_future_annotations.py +0 -0
  468. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/utilities/__init__.py +0 -0
  469. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/utilities/openapi/__init__.py +0 -0
  470. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/utilities/openapi/conftest.py +0 -0
  471. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/utilities/openapi/test_nullable_fields.py +0 -0
  472. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/utilities/openapi/test_openapi.py +0 -0
  473. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/utilities/openapi/test_openapi_advanced.py +0 -0
  474. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/utilities/openapi/test_openapi_fastapi.py +0 -0
  475. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/utilities/openapi/test_openapi_output_schemas.py +0 -0
  476. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/utilities/test_json_schema.py +0 -0
  477. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/utilities/test_json_schema_type.py +0 -0
  478. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/utilities/test_logging.py +0 -0
  479. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/utilities/test_tests.py +0 -0
  480. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/utilities/test_typeadapter.py +0 -0
  481. {fastmcp-2.11.1 → fastmcp-2.11.3}/tests/utilities/test_types.py +0 -0
@@ -5,12 +5,12 @@ labels: [bug, pending]
5
5
  body:
6
6
  - type: markdown
7
7
  attributes:
8
- value: Thank you for contributing to FastMCP! 🙏
8
+ value: Thanks for contributing to FastMCP! 🙏
9
9
 
10
10
  - type: markdown
11
11
  attributes:
12
12
  value: |
13
- ## Before you submit 📝
13
+ ### Before you submit
14
14
 
15
15
  To help us help you, please:
16
16
 
@@ -18,7 +18,7 @@ body:
18
18
  - 🔍 **Check if someone else has already reported this issue** or if it's been fixed on the main branch
19
19
  - 📋 **You MUST include a copy/pasteable and properly formatted MRE** (minimal reproducible example) below or your issue may be closed without response
20
20
 
21
- Thanks for helping make FastMCP better! 🚀
21
+ Thanks for helping to make FastMCP better! 🚀
22
22
 
23
23
  - type: textarea
24
24
  id: description
@@ -38,17 +38,20 @@ body:
38
38
  description: >
39
39
  If applicable, please provide a self-contained,
40
40
  [minimal, reproducible example](https://stackoverflow.com/help/minimal-reproducible-example)
41
- demonstrating the bug.
42
-
43
- If possible, your example should be a single-file script. Instead of `.run()`-ing an MCP server, use a `Client` to directly interact with it (`async with Client(mcp) as client: ...`) and demonstrate the issue.
41
+ demonstrating the bug. If possible, your example should be a single-file script.
44
42
 
45
43
  placeholder: |
44
+ import asyncio
46
45
  from fastmcp import FastMCP, Client
47
46
 
48
47
  mcp = FastMCP()
49
48
 
50
- async with Client(mcp) as client:
51
- ...
49
+ async def demo():
50
+ async with Client(mcp) as client:
51
+ ... # show the bug here
52
+
53
+ if __name__ == "__main__":
54
+ asyncio.run(demo())
52
55
  render: Python
53
56
 
54
57
  - type: textarea
@@ -56,28 +59,13 @@ body:
56
59
  attributes:
57
60
  label: Version Information
58
61
  description: |
59
- Please provide information about your FastMCP version, MCP version, Python version, and OS.
62
+ Please tell us about your FastMCP version, MCP version, Python version, and OS, as well as any other relevant details about your environment.
60
63
 
61
- To get this information, run the following command in your terminal and paste the output below:
64
+ To get the basic information, run the following command in your terminal and paste the output below:
62
65
 
63
66
  ```bash
64
67
  fastmcp version --copy
65
68
  ```
66
-
67
- *Note: if you're using FastMCP < 2.10.3, run `fastmcp version` instead.*
68
-
69
- If there is other information that would be helpful, please include it as well.
70
69
  render: Text
71
70
  validations:
72
71
  required: true
73
-
74
- - type: textarea
75
- id: additional_context
76
- attributes:
77
- label: Additional Context
78
- description: |
79
- Add any other context about the problem here. This could include:
80
- - The full error message and traceback (if applicable)
81
- - Information about your environment (e.g., virtual environment, installed packages)
82
- - Steps to reproduce the issue
83
- - Any recent changes in your code or setup that might be relevant
@@ -0,0 +1,34 @@
1
+ name: 💡 Enhancement Request
2
+ description: Suggest an idea or improvement for FastMCP
3
+ labels: [enhancement, pending]
4
+
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: Thanks for contributing to FastMCP! 🙏
9
+
10
+ - type: markdown
11
+ attributes:
12
+ value: |
13
+ ### Before you submit
14
+
15
+ To help us evaluate your enhancement request:
16
+
17
+ - 🔍 **Check if this has already been requested** - search existing issues first
18
+ - 💭 **Think about the broader impact** - how would this affect other users?
19
+ - 📋 **Consider implementation complexity** - is this a small change or a major feature?
20
+
21
+ Thanks for helping to make FastMCP better! 🚀
22
+
23
+ - type: textarea
24
+ id: description
25
+ attributes:
26
+ label: Enhancement
27
+ description: |
28
+ Please describe the enhancement:
29
+
30
+ - What problem or use case would it solve?
31
+ - How would it improve your workflow or experience with FastMCP?
32
+ - Are there any alternative solutions you've considered?
33
+ validations:
34
+ required: true
@@ -0,0 +1 @@
1
+ ../AGENTS.md
@@ -0,0 +1,52 @@
1
+ name: Marvin Context Protocol
2
+
3
+ on:
4
+ issue_comment: { types: [created] }
5
+ pull_request_review_comment: { types: [created] }
6
+ pull_request_review: { types: [submitted] }
7
+ issues: { types: [opened, edited, assigned, labeled] }
8
+ discussion: { types: [created, edited, labeled] }
9
+ discussion_comment: { types: [created] }
10
+
11
+ permissions:
12
+ contents: write
13
+ issues: write
14
+ pull-requests: write
15
+ discussions: write
16
+ actions: read
17
+ id-token: write
18
+
19
+ jobs:
20
+ marvin:
21
+ if: |
22
+ (github.event_name == 'issue_comment' && contains(github.event.comment.body, '/marvin')) ||
23
+ (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '/marvin')) ||
24
+ (github.event_name == 'pull_request_review' && contains(github.event.review.body, '/marvin')) ||
25
+ (github.event_name == 'issues' && contains(github.event.issue.body, '/marvin')) ||
26
+ (github.event_name == 'discussion' && contains(github.event.discussion.body, '/marvin')) ||
27
+ (github.event_name == 'discussion_comment' && contains(github.event.comment.body, '/marvin')) ||
28
+ (github.event_name == 'issues' && github.event.action == 'assigned' && github.event.assignee.login == 'Marvin Context Protocol') ||
29
+ (github.event_name == 'issues' && github.event.action == 'labeled' && github.event.label.name == 'marvin')
30
+ runs-on: ubuntu-latest
31
+ steps:
32
+ - uses: actions/checkout@v4
33
+
34
+ - name: Generate Marvin App token
35
+ id: marvin-token
36
+ uses: actions/create-github-app-token@v1
37
+ with:
38
+ app-id: ${{ secrets.MARVIN_APP_ID }}
39
+ private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
40
+
41
+ # Marvin Assistant
42
+ - name: Marvin
43
+ uses: anthropics/claude-code-action@beta
44
+ with:
45
+ github_token: ${{ steps.marvin-token.outputs.token }}
46
+ anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
47
+ mode: tag
48
+ trigger_phrase: "/marvin"
49
+ allowed_bots: "*"
50
+ allowed_tools: "mcp__github__add_issue_comment,mcp__github__create_issue,mcp__github__get_issue,mcp__github__list_issues,mcp__github__search_issues,mcp__github__update_issue,mcp__github__update_issue_comment,mcp__github__create_pull_request,mcp__github__get_pull_request,mcp__github__get_pull_request_comments,mcp__github__get_pull_request_files,mcp__github__get_pull_request_reviews,mcp__github__get_pull_request_status,mcp__github__list_pull_requests,mcp__github__update_pull_request,mcp__github__update_pull_request_branch,mcp__github__update_pull_request_comment,mcp__github__merge_pull_request"
51
+ additional_permissions: |
52
+ actions: read
@@ -42,7 +42,29 @@ jobs:
42
42
  python-version: "3.12"
43
43
  - name: Install dependencies
44
44
  run: uv sync --dev
45
+ - name: Install just
46
+ uses: extractions/setup-just@v3
47
+ - name: Check lockfile is up to date
48
+ run: |
49
+ if ! uv lock --check; then
50
+ echo "❌ Lockfile is out of date!"
51
+ echo "To update the lockfile, run 'uv lock'."
52
+ exit 1
53
+ fi
54
+ echo "✅ Lockfile is up to date"
45
55
  - name: Run pre-commit
46
56
  uses: pre-commit/action@v3.0.1
47
57
  env:
48
58
  SKIP: no-commit-to-branch
59
+ - name: Check SDK documentation is up to date
60
+ run: |
61
+ just api-ref-all > /dev/null 2>&1
62
+ if ! git diff --quiet docs/python-sdk/ docs/docs.json; then
63
+ echo "❌ SDK documentation is out of date!"
64
+ echo "Files that were updated:"
65
+ git diff --name-only docs/python-sdk/ docs/docs.json
66
+ echo ""
67
+ echo "Run 'just api-ref-all' and commit the changes."
68
+ exit 1
69
+ fi
70
+ echo "✅ SDK documentation is up to date"
@@ -44,7 +44,8 @@ jobs:
44
44
  python-version: ${{ matrix.python-version }}
45
45
 
46
46
  - name: Install FastMCP
47
- run: uv sync --locked
47
+ # run with frozen to use the current lockfile; static checks will determine if it needs updating
48
+ run: uv sync --frozen
48
49
 
49
50
  - name: Run tests (excluding integration and client_process)
50
51
  run: uv run pytest tests -m "not integration and not client_process"
@@ -68,7 +69,8 @@ jobs:
68
69
  python-version: "3.10"
69
70
 
70
71
  - name: Install FastMCP
71
- run: uv sync --locked
72
+ # run with frozen to use the current lockfile; static checks will determine if it needs updating
73
+ run: uv sync --frozen
72
74
 
73
75
  - name: Run integration tests
74
76
  run: uv run pytest tests -m "integration"
@@ -63,3 +63,8 @@ dmypy.json
63
63
 
64
64
  # Claude worktree management
65
65
  .claude-wt/worktrees
66
+
67
+ # Common FastMCP test files
68
+ /test.py
69
+ /server.py
70
+ /client.py
@@ -0,0 +1,134 @@
1
+ # FastMCP Development Guidelines
2
+
3
+ > **Audience**: LLM-driven engineering agents and human developers
4
+
5
+ FastMCP is a comprehensive Python framework (Python ≥3.10) for building Model Context Protocol (MCP) servers and clients. This is the actively maintained v2.0 providing a complete toolkit for the MCP ecosystem.
6
+
7
+ ## Required Development Workflow
8
+
9
+ **CRITICAL**: Always run these commands in sequence before committing:
10
+
11
+ ```bash
12
+ uv sync # Install dependencies
13
+ uv run pre-commit run --all-files # Ruff + Prettier + Pyright
14
+ uv run pytest # Run full test suite
15
+ ```
16
+
17
+ **All three must pass** - this is enforced by CI. Alternative: `just build && just typecheck && just test`
18
+
19
+ **Tests must pass and lint/typing must be clean before committing.**
20
+
21
+ ## Repository Structure
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) |
41
+
42
+ ## Core MCP Objects
43
+
44
+ When modifying MCP functionality, changes typically need to be applied across all object types:
45
+ - **Tools** (`src/tools/` + `ToolManager`)
46
+ - **Resources** (`src/resources/` + `ResourceManager`)
47
+ - **Resource Templates** (`src/resources/` + `ResourceManager`)
48
+ - **Prompts** (`src/prompts/` + `PromptManager`)
49
+
50
+ ## Testing Best Practices
51
+
52
+ ### Always Use In-Memory Transport
53
+
54
+ Pass FastMCP servers directly to clients for testing:
55
+
56
+ ```python
57
+ mcp = FastMCP("TestServer")
58
+
59
+ @mcp.tool
60
+ def greet(name: str) -> str:
61
+ return f"Hello, {name}!"
62
+
63
+ # Direct connection - no network complexity
64
+ async with Client(mcp) as client:
65
+ result = await client.call_tool("greet", {"name": "World"})
66
+ ```
67
+
68
+ Only use HTTP transport when explicitly testing network features:
69
+ ```python
70
+ # Network testing only
71
+ async with Client(transport=StreamableHttpTransport(server_url)) as client:
72
+ result = await client.ping()
73
+ ```
74
+
75
+ ## Development Rules
76
+
77
+ ### Git & CI
78
+ - Pre-commit hooks are required (run automatically on commits)
79
+ - Never amend commits to fix pre-commit failures
80
+ - Apply PR labels: bugs/breaking/enhancements/features
81
+ - Improvements = enhancements (not features) unless specified
82
+
83
+ ### Commit Messages and Agent Attribution
84
+ - **NEVER** include agent attribution in commit messages or PR titles/descriptions (no "🤖 Generated with [tool]", "with Claude", etc.)
85
+ - Agent attribution is ONLY allowed in Co-authored-by lines in commits
86
+ - Keep commit messages brief - ideally just headlines, not detailed messages
87
+ - Focus on what changed, not how or why
88
+
89
+ ### Code Standards
90
+ - Python ≥ 3.10 with full type annotations
91
+ - Follow existing patterns and maintain consistency
92
+ - Use `# type: ignore[attr-defined]` in tests for MCP results instead of type assertions
93
+ - Each feature needs corresponding tests
94
+
95
+ ### Documentation
96
+ - Uses Mintlify framework
97
+ - Files must be in docs.json to be included
98
+ - Never modify `docs/python-sdk/**` (auto-generated)
99
+
100
+ ## Key Tools & Commands
101
+
102
+ ### Environment Setup
103
+ ```bash
104
+ git clone <repo>
105
+ cd fastmcp
106
+ uv sync # Installs all deps including dev tools
107
+ ```
108
+
109
+ ### Validation Commands (Run Frequently)
110
+ - **Linting**: `uv run ruff check` (or with `--fix`)
111
+ - **Type Checking**: `uv run pyright`
112
+ - **All Checks**: `uv run pre-commit run --all-files`
113
+
114
+ ### Testing
115
+ - **Standard**: `uv run pytest`
116
+ - **Integration**: `uv run pytest -m "integration"`
117
+ - **Excluding markers**: `uv run pytest -m "not integration and not client_process"`
118
+
119
+ ### CLI Usage
120
+ - **Run server**: `uv run fastmcp run server.py`
121
+ - **Development**: `uv run fastmcp dev server.py` (with Inspector UI)
122
+ - **Help**: `uv run fastmcp --help`
123
+
124
+ ## Critical Patterns
125
+
126
+ ### Error Handling
127
+ - Never use bare `except` - be specific with exception types
128
+ - Use `# type: ignore[attr-defined]` in tests for MCP results
129
+
130
+ ### Build Issues (Common Solutions)
131
+ 1. **Dependencies**: Always `uv sync` first
132
+ 2. **Pre-commit fails**: Run `uv run pre-commit run --all-files` to see failures
133
+ 3. **Type errors**: Use `uv run pyright` directly, check `pyproject.toml` config
134
+ 4. **Test timeouts**: Default 3s - optimize or mark as integration tests
@@ -0,0 +1 @@
1
+ AGENTS.md
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastmcp
3
- Version: 2.11.1
3
+ Version: 2.11.3
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
@@ -21,7 +21,7 @@ Requires-Dist: authlib>=1.5.2
21
21
  Requires-Dist: cyclopts>=3.0.0
22
22
  Requires-Dist: exceptiongroup>=1.2.2
23
23
  Requires-Dist: httpx>=0.28.1
24
- Requires-Dist: mcp>=1.10.0
24
+ Requires-Dist: mcp<2.0.0,>=1.12.4
25
25
  Requires-Dist: openapi-core>=0.19.5
26
26
  Requires-Dist: openapi-pydantic>=0.5.1
27
27
  Requires-Dist: pydantic[email]>=2.11.7
@@ -100,12 +100,12 @@ async def detailed_log_handler(message: LogMessage):
100
100
 
101
101
  ## Default Log Handling
102
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.
103
+ If you don't provide a custom `log_handler`, FastMCP's default handler routes server logs to the appropriate Python logging levels. The MCP levels are mapped as follows: `notice` → INFO; `alert` and `emergency` → CRITICAL. If the server includes a logger name, it is prefixed in the message, and any `extra` data is forwarded via the logging `extra` parameter.
104
104
 
105
105
  ```python
106
106
  client = Client("my_mcp_server.py")
107
107
 
108
108
  async with client:
109
- # Server logs will be emitted at DEBUG level automatically
109
+ # Server logs are forwarded at their proper severity (DEBUG/INFO/WARNING/ERROR/CRITICAL)
110
110
  await client.call_tool("some_tool")
111
111
  ```
@@ -65,7 +65,10 @@
65
65
  {
66
66
  "group": "Essentials",
67
67
  "icon": "cube",
68
- "pages": ["servers/server", "deployment/running-server"]
68
+ "pages": [
69
+ "servers/server",
70
+ "deployment/running-server"
71
+ ]
69
72
  },
70
73
  {
71
74
  "group": "Core Components",
@@ -108,7 +111,10 @@
108
111
  {
109
112
  "group": "Essentials",
110
113
  "icon": "cube",
111
- "pages": ["clients/client", "clients/transports"]
114
+ "pages": [
115
+ "clients/client",
116
+ "clients/transports"
117
+ ]
112
118
  },
113
119
  {
114
120
  "group": "Core Operations",
@@ -134,7 +140,10 @@
134
140
  {
135
141
  "group": "Authentication",
136
142
  "icon": "user-shield",
137
- "pages": ["clients/auth/oauth", "clients/auth/bearer"]
143
+ "pages": [
144
+ "clients/auth/oauth",
145
+ "clients/auth/bearer"
146
+ ]
138
147
  }
139
148
  ]
140
149
  },
@@ -162,7 +171,6 @@
162
171
  "pages": [
163
172
  "patterns/tool-transformation",
164
173
  "patterns/decorating-methods",
165
- "patterns/http-requests",
166
174
  "patterns/testing",
167
175
  "patterns/cli",
168
176
  "patterns/contrib"
@@ -181,12 +189,17 @@
181
189
  },
182
190
  {
183
191
  "anchor": "What's New",
184
- "pages": ["updates", "changelog"]
192
+ "pages": [
193
+ "updates",
194
+ "changelog"
195
+ ]
185
196
  },
186
197
  {
187
198
  "anchor": "Community",
188
199
  "icon": "users",
189
- "pages": ["community/showcase"]
200
+ "pages": [
201
+ "community/showcase"
202
+ ]
190
203
  }
191
204
  ]
192
205
  },