fastmcp 2.11.1__tar.gz → 2.11.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (464) hide show
  1. {fastmcp-2.11.1 → fastmcp-2.11.2}/PKG-INFO +1 -1
  2. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/patterns/cli.mdx +145 -89
  3. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/cli/cli.py +5 -5
  4. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/cli/install/claude_code.py +2 -2
  5. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/cli/install/claude_desktop.py +2 -2
  6. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/cli/install/cursor.py +2 -2
  7. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/cli/install/mcp_json.py +2 -2
  8. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/cli/install/shared.py +2 -2
  9. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/cli/run.py +74 -24
  10. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/proxy.py +33 -15
  11. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/server.py +9 -6
  12. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/settings.py +4 -7
  13. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/utilities/inspect.py +12 -17
  14. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/cli/test_cursor.py +4 -4
  15. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/cli/test_run.py +11 -11
  16. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/deprecated/test_settings.py +0 -1
  17. fastmcp-2.11.2/tests/server/auth/test_remote_auth_provider.py +330 -0
  18. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/proxy/test_proxy_server.py +20 -3
  19. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/test_mount.py +0 -14
  20. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/utilities/test_inspect.py +23 -19
  21. {fastmcp-2.11.1 → fastmcp-2.11.2}/.ccignore +0 -0
  22. {fastmcp-2.11.1 → fastmcp-2.11.2}/.cursor/rules/core-mcp-objects.mdc +0 -0
  23. {fastmcp-2.11.1 → fastmcp-2.11.2}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
  24. {fastmcp-2.11.1 → fastmcp-2.11.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  25. {fastmcp-2.11.1 → fastmcp-2.11.2}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
  26. {fastmcp-2.11.1 → fastmcp-2.11.2}/.github/dependabot.yml +0 -0
  27. {fastmcp-2.11.1 → fastmcp-2.11.2}/.github/labeler.yml +0 -0
  28. {fastmcp-2.11.1 → fastmcp-2.11.2}/.github/release.yml +0 -0
  29. {fastmcp-2.11.1 → fastmcp-2.11.2}/.github/workflows/labeler.yml +0 -0
  30. {fastmcp-2.11.1 → fastmcp-2.11.2}/.github/workflows/publish.yml +0 -0
  31. {fastmcp-2.11.1 → fastmcp-2.11.2}/.github/workflows/run-static.yml +0 -0
  32. {fastmcp-2.11.1 → fastmcp-2.11.2}/.github/workflows/run-tests.yml +0 -0
  33. {fastmcp-2.11.1 → fastmcp-2.11.2}/.gitignore +0 -0
  34. {fastmcp-2.11.1 → fastmcp-2.11.2}/.pre-commit-config.yaml +0 -0
  35. {fastmcp-2.11.1 → fastmcp-2.11.2}/AGENTS.md +0 -0
  36. {fastmcp-2.11.1 → fastmcp-2.11.2}/CLAUDE.md +0 -0
  37. {fastmcp-2.11.1 → fastmcp-2.11.2}/LICENSE +0 -0
  38. {fastmcp-2.11.1 → fastmcp-2.11.2}/README.md +0 -0
  39. {fastmcp-2.11.1 → fastmcp-2.11.2}/README_OPENAPI.md +0 -0
  40. {fastmcp-2.11.1 → fastmcp-2.11.2}/Windows_Notes.md +0 -0
  41. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/.ccignore +0 -0
  42. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/.cursor/rules/mintlify.mdc +0 -0
  43. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/assets/favicon.svg +0 -0
  44. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/assets/images/tutorial-rest-api-result.png +0 -0
  45. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/assets/updates/release-2-7.png +0 -0
  46. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/changelog.mdx +0 -0
  47. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/clients/auth/bearer.mdx +0 -0
  48. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/clients/auth/oauth.mdx +0 -0
  49. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/clients/client.mdx +0 -0
  50. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/clients/elicitation.mdx +0 -0
  51. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/clients/logging.mdx +0 -0
  52. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/clients/messages.mdx +0 -0
  53. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/clients/progress.mdx +0 -0
  54. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/clients/prompts.mdx +0 -0
  55. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/clients/resources.mdx +0 -0
  56. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/clients/roots.mdx +0 -0
  57. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/clients/sampling.mdx +0 -0
  58. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/clients/tools.mdx +0 -0
  59. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/clients/transports.mdx +0 -0
  60. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/community/README.md +0 -0
  61. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/community/showcase.mdx +0 -0
  62. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/css/banner.css +0 -0
  63. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/css/python-sdk.css +0 -0
  64. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/css/style.css +0 -0
  65. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/css/version-badge.css +0 -0
  66. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/deployment/running-server.mdx +0 -0
  67. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/docs.json +0 -0
  68. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/getting-started/installation.mdx +0 -0
  69. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/getting-started/quickstart.mdx +0 -0
  70. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/getting-started/welcome.mdx +0 -0
  71. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/anthropic.mdx +0 -0
  72. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/authkit.mdx +0 -0
  73. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/chatgpt.mdx +0 -0
  74. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/claude-code.mdx +0 -0
  75. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/claude-desktop.mdx +0 -0
  76. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/cursor-install-mcp.png +0 -0
  77. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/cursor.mdx +0 -0
  78. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/eunomia-authorization.mdx +0 -0
  79. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/fastapi.mdx +0 -0
  80. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/gemini.mdx +0 -0
  81. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/images/authkit/enable_dcr.png +0 -0
  82. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/images/permit/abac_condition_example.png +0 -0
  83. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/images/permit/abac_policy_example.png +0 -0
  84. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/images/permit/policy_mapping.png +0 -0
  85. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/images/permit/role_assignement.png +0 -0
  86. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/mcp-json-configuration.mdx +0 -0
  87. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/openai.mdx +0 -0
  88. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/openapi.mdx +0 -0
  89. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/permit.mdx +0 -0
  90. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/integrations/starlette.mdx +0 -0
  91. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/patterns/contrib.mdx +0 -0
  92. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/patterns/decorating-methods.mdx +0 -0
  93. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/patterns/http-requests.mdx +0 -0
  94. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/patterns/testing.mdx +0 -0
  95. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/patterns/tool-transformation.mdx +0 -0
  96. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-cli-__init__.mdx +0 -0
  97. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-cli-claude.mdx +0 -0
  98. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-cli-cli.mdx +0 -0
  99. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-cli-install-__init__.mdx +0 -0
  100. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-cli-install-claude_code.mdx +0 -0
  101. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-cli-install-claude_desktop.mdx +0 -0
  102. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-cli-install-cursor.mdx +0 -0
  103. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-cli-install-mcp_json.mdx +0 -0
  104. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-cli-install-shared.mdx +0 -0
  105. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-cli-run.mdx +0 -0
  106. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-client-__init__.mdx +0 -0
  107. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-client-auth-__init__.mdx +0 -0
  108. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-client-auth-bearer.mdx +0 -0
  109. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-client-auth-oauth.mdx +0 -0
  110. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-client-client.mdx +0 -0
  111. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-client-elicitation.mdx +0 -0
  112. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-client-logging.mdx +0 -0
  113. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-client-messages.mdx +0 -0
  114. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-client-oauth_callback.mdx +0 -0
  115. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-client-progress.mdx +0 -0
  116. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-client-roots.mdx +0 -0
  117. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-client-sampling.mdx +0 -0
  118. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-client-transports.mdx +0 -0
  119. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-exceptions.mdx +0 -0
  120. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-mcp_config.mdx +0 -0
  121. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-prompts-__init__.mdx +0 -0
  122. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-prompts-prompt.mdx +0 -0
  123. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +0 -0
  124. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-resources-__init__.mdx +0 -0
  125. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-resources-resource.mdx +0 -0
  126. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-resources-resource_manager.mdx +0 -0
  127. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-resources-template.mdx +0 -0
  128. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-resources-types.mdx +0 -0
  129. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-__init__.mdx +0 -0
  130. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-auth-__init__.mdx +0 -0
  131. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-auth-auth.mdx +0 -0
  132. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-auth-providers-__init__.mdx +0 -0
  133. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +0 -0
  134. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-auth-providers-bearer_env.mdx +0 -0
  135. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +0 -0
  136. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-auth-providers-jwt.mdx +0 -0
  137. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-auth-providers-workos.mdx +0 -0
  138. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-auth-registry.mdx +0 -0
  139. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-context.mdx +0 -0
  140. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-dependencies.mdx +0 -0
  141. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-elicitation.mdx +0 -0
  142. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-http.mdx +0 -0
  143. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-low_level.mdx +0 -0
  144. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-middleware-__init__.mdx +0 -0
  145. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-middleware-error_handling.mdx +0 -0
  146. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-middleware-logging.mdx +0 -0
  147. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +0 -0
  148. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-middleware-rate_limiting.mdx +0 -0
  149. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-middleware-timing.mdx +0 -0
  150. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-openapi.mdx +0 -0
  151. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-proxy.mdx +0 -0
  152. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-server-server.mdx +0 -0
  153. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-settings.mdx +0 -0
  154. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-tools-__init__.mdx +0 -0
  155. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-tools-tool.mdx +0 -0
  156. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-tools-tool_manager.mdx +0 -0
  157. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-tools-tool_transform.mdx +0 -0
  158. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-utilities-__init__.mdx +0 -0
  159. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-utilities-cli.mdx +0 -0
  160. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-utilities-components.mdx +0 -0
  161. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-utilities-exceptions.mdx +0 -0
  162. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-utilities-http.mdx +0 -0
  163. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-utilities-inspect.mdx +0 -0
  164. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-utilities-json_schema.mdx +0 -0
  165. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-utilities-json_schema_type.mdx +0 -0
  166. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-utilities-logging.mdx +0 -0
  167. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +0 -0
  168. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-utilities-openapi.mdx +0 -0
  169. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-utilities-tests.mdx +0 -0
  170. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/python-sdk/fastmcp-utilities-types.mdx +0 -0
  171. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/servers/auth/authentication.mdx +0 -0
  172. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/servers/auth/full-oauth-server.mdx +0 -0
  173. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/servers/auth/remote-oauth.mdx +0 -0
  174. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/servers/auth/token-verification.mdx +0 -0
  175. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/servers/composition.mdx +0 -0
  176. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/servers/context.mdx +0 -0
  177. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/servers/elicitation.mdx +0 -0
  178. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/servers/logging.mdx +0 -0
  179. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/servers/middleware.mdx +0 -0
  180. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/servers/progress.mdx +0 -0
  181. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/servers/prompts.mdx +0 -0
  182. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/servers/proxy.mdx +0 -0
  183. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/servers/resources.mdx +0 -0
  184. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/servers/sampling.mdx +0 -0
  185. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/servers/server.mdx +0 -0
  186. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/servers/tools.mdx +0 -0
  187. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/snippets/local-focus.mdx +0 -0
  188. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/snippets/version-badge.mdx +0 -0
  189. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/snippets/youtube-embed.mdx +0 -0
  190. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/tutorials/create-mcp-server.mdx +0 -0
  191. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/tutorials/mcp.mdx +0 -0
  192. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/tutorials/rest-api.mdx +0 -0
  193. {fastmcp-2.11.1 → fastmcp-2.11.2}/docs/updates.mdx +0 -0
  194. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/atproto_mcp/README.md +0 -0
  195. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/atproto_mcp/demo.py +0 -0
  196. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/atproto_mcp/pyproject.toml +0 -0
  197. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/atproto_mcp/src/atproto_mcp/__init__.py +0 -0
  198. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/atproto_mcp/src/atproto_mcp/__main__.py +0 -0
  199. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/__init__.py +0 -0
  200. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_client.py +0 -0
  201. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_posts.py +0 -0
  202. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_profile.py +0 -0
  203. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_read.py +0 -0
  204. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/atproto_mcp/src/atproto_mcp/_atproto/_social.py +0 -0
  205. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/atproto_mcp/src/atproto_mcp/py.typed +0 -0
  206. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/atproto_mcp/src/atproto_mcp/server.py +0 -0
  207. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/atproto_mcp/src/atproto_mcp/settings.py +0 -0
  208. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/atproto_mcp/src/atproto_mcp/types.py +0 -0
  209. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/complex_inputs.py +0 -0
  210. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/config_server.py +0 -0
  211. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/desktop.py +0 -0
  212. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/echo.py +0 -0
  213. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/get_file.py +0 -0
  214. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/in_memory_proxy_example.py +0 -0
  215. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/memory.py +0 -0
  216. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/mount_example.py +0 -0
  217. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/sampling.py +0 -0
  218. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/screenshot.py +0 -0
  219. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/serializer.py +0 -0
  220. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/simple_echo.py +0 -0
  221. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/smart_home/README.md +0 -0
  222. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/smart_home/pyproject.toml +0 -0
  223. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/smart_home/src/smart_home/__init__.py +0 -0
  224. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/smart_home/src/smart_home/__main__.py +0 -0
  225. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/smart_home/src/smart_home/hub.py +0 -0
  226. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
  227. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -0
  228. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/smart_home/src/smart_home/lights/server.py +0 -0
  229. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/smart_home/src/smart_home/py.typed +0 -0
  230. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/smart_home/src/smart_home/settings.py +0 -0
  231. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/smart_home/uv.lock +0 -0
  232. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/tags_example.py +0 -0
  233. {fastmcp-2.11.1 → fastmcp-2.11.2}/examples/text_me.py +0 -0
  234. {fastmcp-2.11.1 → fastmcp-2.11.2}/justfile +0 -0
  235. {fastmcp-2.11.1 → fastmcp-2.11.2}/pyproject.toml +0 -0
  236. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/__init__.py +0 -0
  237. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/cli/__init__.py +0 -0
  238. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/cli/claude.py +0 -0
  239. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/cli/install/__init__.py +0 -0
  240. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/client/__init__.py +0 -0
  241. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/client/auth/__init__.py +0 -0
  242. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/client/auth/bearer.py +0 -0
  243. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/client/auth/oauth.py +0 -0
  244. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/client/client.py +0 -0
  245. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/client/elicitation.py +0 -0
  246. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/client/logging.py +0 -0
  247. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/client/messages.py +0 -0
  248. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/client/oauth_callback.py +0 -0
  249. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/client/progress.py +0 -0
  250. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/client/roots.py +0 -0
  251. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/client/sampling.py +0 -0
  252. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/client/transports.py +0 -0
  253. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/contrib/README.md +0 -0
  254. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  255. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  256. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  257. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  258. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/contrib/component_manager/README.md +0 -0
  259. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/contrib/component_manager/__init__.py +0 -0
  260. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/contrib/component_manager/component_manager.py +0 -0
  261. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/contrib/component_manager/component_service.py +0 -0
  262. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/contrib/component_manager/example.py +0 -0
  263. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/contrib/mcp_mixin/README.md +0 -0
  264. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  265. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
  266. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  267. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/exceptions.py +0 -0
  268. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/experimental/server/openapi/README.md +0 -0
  269. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/experimental/server/openapi/__init__.py +0 -0
  270. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/experimental/server/openapi/components.py +0 -0
  271. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/experimental/server/openapi/routing.py +0 -0
  272. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/experimental/server/openapi/server.py +0 -0
  273. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/experimental/utilities/openapi/README.md +0 -0
  274. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/experimental/utilities/openapi/__init__.py +0 -0
  275. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/experimental/utilities/openapi/director.py +0 -0
  276. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/experimental/utilities/openapi/formatters.py +0 -0
  277. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/experimental/utilities/openapi/json_schema_converter.py +0 -0
  278. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/experimental/utilities/openapi/models.py +0 -0
  279. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/experimental/utilities/openapi/parser.py +0 -0
  280. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/experimental/utilities/openapi/schemas.py +0 -0
  281. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/mcp_config.py +0 -0
  282. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/prompts/__init__.py +0 -0
  283. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/prompts/prompt.py +0 -0
  284. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/prompts/prompt_manager.py +0 -0
  285. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/py.typed +0 -0
  286. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/resources/__init__.py +0 -0
  287. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/resources/resource.py +0 -0
  288. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/resources/resource_manager.py +0 -0
  289. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/resources/template.py +0 -0
  290. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/resources/types.py +0 -0
  291. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/__init__.py +0 -0
  292. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/auth/__init__.py +0 -0
  293. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/auth/auth.py +0 -0
  294. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/auth/providers/__init__.py +0 -0
  295. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/auth/providers/bearer.py +0 -0
  296. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/auth/providers/in_memory.py +0 -0
  297. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/auth/providers/jwt.py +0 -0
  298. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/auth/providers/workos.py +0 -0
  299. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/auth/registry.py +0 -0
  300. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/context.py +0 -0
  301. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/dependencies.py +0 -0
  302. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/elicitation.py +0 -0
  303. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/http.py +0 -0
  304. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/low_level.py +0 -0
  305. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/middleware/__init__.py +0 -0
  306. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/middleware/error_handling.py +0 -0
  307. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/middleware/logging.py +0 -0
  308. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/middleware/middleware.py +0 -0
  309. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/middleware/rate_limiting.py +0 -0
  310. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/middleware/timing.py +0 -0
  311. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/server/openapi.py +0 -0
  312. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/tools/__init__.py +0 -0
  313. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/tools/tool.py +0 -0
  314. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/tools/tool_manager.py +0 -0
  315. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/tools/tool_transform.py +0 -0
  316. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/utilities/__init__.py +0 -0
  317. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/utilities/cli.py +0 -0
  318. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/utilities/components.py +0 -0
  319. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/utilities/exceptions.py +0 -0
  320. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/utilities/http.py +0 -0
  321. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/utilities/json_schema.py +0 -0
  322. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/utilities/json_schema_type.py +0 -0
  323. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/utilities/logging.py +0 -0
  324. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/utilities/mcp_config.py +0 -0
  325. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/utilities/openapi.py +0 -0
  326. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/utilities/tests.py +0 -0
  327. {fastmcp-2.11.1 → fastmcp-2.11.2}/src/fastmcp/utilities/types.py +0 -0
  328. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/__init__.py +0 -0
  329. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/cli/__init__.py +0 -0
  330. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/cli/test_cli.py +0 -0
  331. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/cli/test_install.py +0 -0
  332. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/cli/test_run_with_uv.py +0 -0
  333. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/cli/test_shared.py +0 -0
  334. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/client/__init__.py +0 -0
  335. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/client/auth/__init__.py +0 -0
  336. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/client/auth/test_oauth_client.py +0 -0
  337. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/client/test_client.py +0 -0
  338. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/client/test_elicitation.py +0 -0
  339. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/client/test_logs.py +0 -0
  340. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/client/test_notifications.py +0 -0
  341. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/client/test_openapi_experimental.py +0 -0
  342. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/client/test_openapi_legacy.py +0 -0
  343. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/client/test_progress.py +0 -0
  344. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/client/test_roots.py +0 -0
  345. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/client/test_sampling.py +0 -0
  346. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/client/test_sse.py +0 -0
  347. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/client/test_stdio.py +0 -0
  348. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/client/test_streamable_http.py +0 -0
  349. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/client/transports/__init__.py +0 -0
  350. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/client/transports/test_uv_transport.py +0 -0
  351. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/conftest.py +0 -0
  352. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/contrib/__init__.py +0 -0
  353. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/contrib/test_bulk_tool_caller.py +0 -0
  354. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/contrib/test_component_manager.py +0 -0
  355. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/contrib/test_mcp_mixin.py +0 -0
  356. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/deprecated/__init__.py +0 -0
  357. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/deprecated/test_bearer_auth_provider.py +0 -0
  358. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/deprecated/test_deprecated.py +0 -0
  359. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/deprecated/test_mount_import_arg_order.py +0 -0
  360. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/deprecated/test_mount_separators.py +0 -0
  361. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/deprecated/test_proxy_client.py +0 -0
  362. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/deprecated/test_resource_prefixes.py +0 -0
  363. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/deprecated/test_route_type_ignore.py +0 -0
  364. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/__init__.py +0 -0
  365. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/server/__init__.py +0 -0
  366. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/server/openapi/__init__.py +0 -0
  367. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/server/openapi/test_comprehensive.py +0 -0
  368. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/server/openapi/test_deepobject_style.py +0 -0
  369. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/server/openapi/test_end_to_end_compatibility.py +0 -0
  370. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/server/openapi/test_openapi_features.py +0 -0
  371. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/server/openapi/test_parameter_collisions.py +0 -0
  372. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/server/openapi/test_performance_comparison.py +0 -0
  373. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/server/openapi/test_server.py +0 -0
  374. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/server/test_openapi_performance.py +0 -0
  375. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/utilities/__init__.py +0 -0
  376. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/utilities/openapi/__init__.py +0 -0
  377. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/utilities/openapi/conftest.py +0 -0
  378. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/utilities/openapi/test_director.py +0 -0
  379. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/utilities/openapi/test_legacy_compatibility.py +0 -0
  380. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/utilities/openapi/test_models.py +0 -0
  381. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/utilities/openapi/test_nullable_fields.py +0 -0
  382. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/utilities/openapi/test_parser.py +0 -0
  383. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/experimental/utilities/openapi/test_schemas.py +0 -0
  384. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/integration_tests/__init__.py +0 -0
  385. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/integration_tests/conftest.py +0 -0
  386. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/integration_tests/test_github_mcp_remote.py +0 -0
  387. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/prompts/__init__.py +0 -0
  388. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/prompts/test_prompt.py +0 -0
  389. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/prompts/test_prompt_manager.py +0 -0
  390. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/resources/__init__.py +0 -0
  391. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/resources/test_file_resources.py +0 -0
  392. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/resources/test_function_resources.py +0 -0
  393. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/resources/test_resource_manager.py +0 -0
  394. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/resources/test_resource_template.py +0 -0
  395. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/resources/test_resource_template_meta.py +0 -0
  396. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/resources/test_resources.py +0 -0
  397. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/__init__.py +0 -0
  398. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/auth/test_jwt_provider.py +0 -0
  399. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/auth/test_static_token_verifier.py +0 -0
  400. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/auth/test_workos.py +0 -0
  401. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/http/__init__.py +0 -0
  402. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/http/test_bearer_auth_backend.py +0 -0
  403. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/http/test_custom_routes.py +0 -0
  404. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/http/test_http_auth_middleware.py +0 -0
  405. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/http/test_http_dependencies.py +0 -0
  406. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/http/test_http_middleware.py +0 -0
  407. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/middleware/__init__.py +0 -0
  408. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/middleware/test_error_handling.py +0 -0
  409. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/middleware/test_logging.py +0 -0
  410. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/middleware/test_middleware.py +0 -0
  411. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/middleware/test_rate_limiting.py +0 -0
  412. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/middleware/test_timing.py +0 -0
  413. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/openapi/__init__.py +0 -0
  414. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/openapi/conftest.py +0 -0
  415. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/openapi/test_advanced_behavior.py +0 -0
  416. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/openapi/test_basic_functionality.py +0 -0
  417. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/openapi/test_configuration.py +0 -0
  418. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/openapi/test_deepobject_style.py +0 -0
  419. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/openapi/test_description_propagation.py +0 -0
  420. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/openapi/test_explode_integration.py +0 -0
  421. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/openapi/test_openapi_compatibility.py +0 -0
  422. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/openapi/test_openapi_path_parameters.py +0 -0
  423. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/openapi/test_optional_parameters.py +0 -0
  424. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/openapi/test_parameter_collisions.py +0 -0
  425. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/openapi/test_route_map_fn.py +0 -0
  426. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/proxy/__init__.py +0 -0
  427. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/proxy/test_proxy_client.py +0 -0
  428. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/proxy/test_stateful_proxy_client.py +0 -0
  429. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/test_app_state.py +0 -0
  430. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/test_auth_integration.py +0 -0
  431. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/test_context.py +0 -0
  432. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/test_experimental_openapi_feature_flag.py +0 -0
  433. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/test_file_server.py +0 -0
  434. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/test_import_server.py +0 -0
  435. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/test_logging.py +0 -0
  436. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/test_resource_prefix_formats.py +0 -0
  437. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/test_run_server.py +0 -0
  438. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/test_server.py +0 -0
  439. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/test_server_interactions.py +0 -0
  440. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/test_tool_annotations.py +0 -0
  441. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/test_tool_exclude_args.py +0 -0
  442. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/server/test_tool_transformation.py +0 -0
  443. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/test_examples.py +0 -0
  444. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/test_mcp_config.py +0 -0
  445. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/tools/__init__.py +0 -0
  446. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/tools/test_tool.py +0 -0
  447. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/tools/test_tool_future_annotations.py +0 -0
  448. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/tools/test_tool_manager.py +0 -0
  449. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/tools/test_tool_transform.py +0 -0
  450. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/utilities/__init__.py +0 -0
  451. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/utilities/openapi/__init__.py +0 -0
  452. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/utilities/openapi/conftest.py +0 -0
  453. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/utilities/openapi/test_nullable_fields.py +0 -0
  454. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/utilities/openapi/test_openapi.py +0 -0
  455. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/utilities/openapi/test_openapi_advanced.py +0 -0
  456. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/utilities/openapi/test_openapi_fastapi.py +0 -0
  457. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/utilities/openapi/test_openapi_output_schemas.py +0 -0
  458. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/utilities/test_json_schema.py +0 -0
  459. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/utilities/test_json_schema_type.py +0 -0
  460. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/utilities/test_logging.py +0 -0
  461. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/utilities/test_tests.py +0 -0
  462. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/utilities/test_typeadapter.py +0 -0
  463. {fastmcp-2.11.1 → fastmcp-2.11.2}/tests/utilities/test_types.py +0 -0
  464. {fastmcp-2.11.1 → fastmcp-2.11.2}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastmcp
3
- Version: 2.11.1
3
+ Version: 2.11.2
4
4
  Summary: The fast, Pythonic way to build MCP servers and clients.
5
5
  Project-URL: Homepage, https://gofastmcp.com
6
6
  Project-URL: Repository, https://github.com/jlowin/fastmcp
@@ -18,15 +18,13 @@ fastmcp --help
18
18
 
19
19
  | Command | Purpose | Dependency Management |
20
20
  | ------- | ------- | --------------------- |
21
- | `run` | Run a FastMCP server directly | Default: Uses your local environment directly. With `--python`, `--with`, `--project`, or `--with-requirements`: Runs via `uv run` subprocess |
22
- | `dev` | Run a server with the MCP Inspector for testing | Always runs via `uv run` subprocess (never uses your local environment); dependencies must be specified or available in a uv-managed project |
23
- | `install` | Install a server in MCP client applications | Creates an isolated environment; dependencies must be explicitly specified with `--with` and/or `--with-editable` |
24
- | `inspect` | Generate a JSON report about a FastMCP server | Uses your current environment; you are responsible for ensuring all dependencies are available |
21
+ | `run` | Run a FastMCP server directly | **Supports:** Local files, factory functions, URLs, MCP configs. **Deps:** Uses your local environment directly. With `--python`, `--with`, `--project`, or `--with-requirements`: Runs via `uv run` subprocess |
22
+ | `dev` | Run a server with the MCP Inspector for testing | **Supports:** Local files only. **Deps:** Always runs via `uv run` subprocess (never uses your local environment); dependencies must be specified or available in a uv-managed project |
23
+ | `install` | Install a server in MCP client applications | **Supports:** Local files only. **Deps:** Creates an isolated environment; dependencies must be explicitly specified with `--with` and/or `--with-editable` |
24
+ | `inspect` | Generate a JSON report about a FastMCP server | **Supports:** Local files only. **Deps:** Uses your current environment; you are responsible for ensuring all dependencies are available |
25
25
  | `version` | Display version information | N/A |
26
26
 
27
- ## Command Details
28
-
29
- ### `run`
27
+ ## `fastmcp run`
30
28
 
31
29
  Run a FastMCP server directly or proxy a remote server.
32
30
 
@@ -38,7 +36,7 @@ fastmcp run server.py
38
36
  By default, this command runs the server directly in your current Python environment. You are responsible for ensuring all dependencies are available. When using `--python`, `--with`, `--project`, or `--with-requirements` options, it runs the server via `uv run` subprocess instead.
39
37
  </Tip>
40
38
 
41
- #### Options
39
+ ### Options
42
40
 
43
41
  | Option | Flag | Description |
44
42
  | ------ | ---- | ----------- |
@@ -54,106 +52,125 @@ By default, this command runs the server directly in your current Python environ
54
52
  | Requirements File | `--with-requirements` | Requirements file to install dependencies from |
55
53
 
56
54
 
57
- #### Server Specification
55
+ ### Entrypoints
58
56
  <VersionBadge version="2.3.5" />
59
57
 
60
- The server can be specified in four ways:
61
- 1. `server.py` - imports the module and looks for a FastMCP object named `mcp`, `server`, or `app`. Errors if no such object is found.
62
- 2. `server.py:custom_name` - imports and uses the specified server object
63
- 3. `http://server-url/path` or `https://server-url/path` - connects to a remote server and creates a proxy
64
- 4. `mcp.json` - runs servers defined in a standard MCP configuration file
58
+ The `fastmcp run` command supports the following entrypoints:
65
59
 
66
- <Tip>
67
- When using `fastmcp run` with a local file, it **ignores** the `if __name__ == "__main__"` block entirely. Instead, it finds your server object and calls its `run()` method directly with the transport options you specify. This means you can use `fastmcp run` to override the transport specified in your code.
68
- </Tip>
60
+ 1. **[Inferred server instance](#inferred-server-instance)**: `server.py` - imports the module and looks for a FastMCP object named `mcp`, `server`, or `app`. Errors if no such object is found.
61
+ 2. **[Explicit server object](#explicit-server-object)**: `server.py:custom_name` - imports and uses the specified server object
62
+ 3. **[Factory function](#factory-function)**: `server.py:create_server` - calls the specified function (sync or async) to create a server instance
63
+ 4. **[Remote server proxy](#remote-server-proxy)**: `https://example.com/mcp-server` - connects to a remote server and creates a **local proxy server**
64
+ 5. **MCP configuration file**: `mcp.json` - runs servers defined in a standard MCP configuration file
69
65
 
70
- For example, if your code contains:
66
+ <Warning>
67
+ Note: When using `fastmcp run` with a local file, it **completely ignores** the `if __name__ == "__main__"` block. This means:
68
+ - Any setup code in `__main__` will NOT run
69
+ - Server configuration in `__main__` is bypassed
70
+ - `fastmcp run` finds your server object/factory and runs it with its own transport settings
71
71
 
72
- ```python
73
- # server.py
72
+ If you need setup code to run, use the **factory pattern** instead.
73
+ </Warning>
74
+
75
+ #### Inferred Server Instance
76
+
77
+ If you provide a path to a file, `fastmcp run` will load the file and look for a FastMCP server instance stored as a variable named `mcp`, `server`, or `app`. If no such object is found, it will raise an error.
78
+
79
+ For example, if you have a file called `server.py` with the following content:
80
+
81
+ ```python server.py
74
82
  from fastmcp import FastMCP
75
83
 
76
84
  mcp = FastMCP("MyServer")
85
+ ```
77
86
 
78
- @mcp.tool
79
- def hello(name: str) -> str:
80
- return f"Hello, {name}!"
87
+ You can run it with:
81
88
 
82
- if __name__ == "__main__":
83
- # This is ignored when using `fastmcp run`!
84
- mcp.run(transport="stdio")
89
+ ```bash
90
+ fastmcp run server.py
85
91
  ```
86
92
 
87
- You can run it with Streamable HTTP transport regardless of what's in the `__main__` block:
93
+ #### Explicit Server Object
94
+
95
+ If your server is stored as a variable with a custom name, or you want to be explicit about which server to run, you can use the following syntax to load a specific server object:
88
96
 
89
97
  ```bash
90
- fastmcp run server.py --transport http --port 8000
98
+ fastmcp run server.py:custom_name
91
99
  ```
92
100
 
93
- **Examples**
101
+ For example, if you have a file called `server.py` with the following content:
102
+
103
+ ```python
104
+ from fastmcp import FastMCP
105
+
106
+ my_server = FastMCP("CustomServer")
107
+
108
+ @my_server.tool
109
+ def hello() -> str:
110
+ return "Hello from custom server!"
111
+ ```
112
+
113
+ You can run it with:
94
114
 
95
115
  ```bash
96
- # Run a local server with Streamable HTTP transport on a custom port
97
- fastmcp run server.py --transport http --port 8000
116
+ fastmcp run server.py:custom_name
117
+ ```
98
118
 
99
- # Connect to a remote server and proxy as a stdio server
100
- fastmcp run https://example.com/mcp-server
119
+ #### Factory Function
120
+ <VersionBadge version="2.11.2" />
101
121
 
102
- # Connect to a remote server with specified log level
103
- fastmcp run https://example.com/mcp-server --log-level DEBUG
122
+ Since `fastmcp run` ignores the `if __name__ == "__main__"` block, you can use a factory function to run setup code before your server starts. Factory functions are called without any arguments and must return a FastMCP server instance. Both sync and async factory functions are supported.
104
123
 
105
- # Run with a specific Python version
106
- fastmcp run server.py --python 3.11
124
+ The syntax for using a factory function is the same as for an explicit server object: `fastmcp run server.py:factory_fn`. FastMCP will automatically detect that you have identified a function rather than a server Instance
107
125
 
108
- # Run with additional packages
109
- fastmcp run server.py --with pandas --with numpy
126
+ For example, if you have a file called `server.py` with the following content:
110
127
 
111
- # Run within a specific project directory
112
- fastmcp run server.py --project /path/to/project
128
+ ```python
129
+ from fastmcp import FastMCP
113
130
 
114
- # Run with dependencies from a requirements file
115
- fastmcp run server.py --with-requirements requirements.txt
131
+ async def create_server() -> FastMCP:
132
+ mcp = FastMCP("MyServer")
133
+
134
+ @mcp.tool
135
+ def add(x: int, y: int) -> int:
136
+ return x + y
137
+
138
+ # Setup that runs with fastmcp run
139
+ tool = await mcp.get_tool("add")
140
+ tool.disable()
141
+
142
+ return mcp
116
143
  ```
117
144
 
118
- #### Running MCP Configuration Files
145
+ You can run it with:
119
146
 
120
- FastMCP can run servers defined in standard MCP configuration files (typically named `mcp.json`). When you run an mcp.json file, FastMCP creates a proxy server that runs all the servers referenced in the configuration.
121
-
122
- **Example mcp.json:**
123
- ```json
124
- {
125
- "mcpServers": {
126
- "fetch": {
127
- "command": "uvx",
128
- "args": [
129
- "mcp-server-fetch"
130
- ]
131
- },
132
- "filesystem": {
133
- "command": "npx",
134
- "args": [
135
- "-y",
136
- "@modelcontextprotocol/server-filesystem",
137
- "/Users/username/Documents"
138
- ]
139
- }
140
- }
141
- }
147
+ ```bash
148
+ fastmcp run server.py:create_server
142
149
  ```
143
150
 
144
- **Run the configuration:**
151
+ #### Remote Server Proxy
152
+
153
+ FastMCP run can also start a local proxy server that connects to a remote server. This is useful when you want to run a remote server locally for testing or development purposes, or to use with a client that doesn't support direct connections to remote servers.
154
+
155
+ To start a local proxy, you can use the following syntax:
156
+
145
157
  ```bash
146
- # Run with default stdio transport
147
- fastmcp run mcp.json
158
+ fastmcp run https://example.com/mcp
159
+ ```
160
+
161
+ #### MCP Configuration
162
+
163
+ FastMCP can also run servers defined in a standard MCP configuration file. This is useful when you want to run multiple servers from a single file, or when you want to use a client that doesn't support direct connections to remote servers.
148
164
 
149
- # Run with HTTP transport on custom port
150
- fastmcp run mcp.json --transport http --port 8080
165
+ To run a MCP configuration file, you can use the following syntax:
151
166
 
152
- # Run with SSE transport
153
- fastmcp run mcp.json --transport sse
167
+ ```bash
168
+ fastmcp run mcp.json
154
169
  ```
155
170
 
156
- ### `dev`
171
+ This will run all the servers defined in the file.
172
+
173
+ ## `fastmcp dev`
157
174
 
158
175
  Run a MCP server with the [MCP Inspector](https://github.com/modelcontextprotocol/inspector) for testing.
159
176
 
@@ -182,7 +199,7 @@ This command does not support HTTP testing. To test a server over Streamable HTT
182
199
  2. Open the MCP Inspector separately and connect to your running server
183
200
  </Warning>
184
201
 
185
- #### Options
202
+ ### Options
186
203
 
187
204
  | Option | Flag | Description |
188
205
  | ------ | ---- | ----------- |
@@ -195,6 +212,18 @@ This command does not support HTTP testing. To test a server over Streamable HTT
195
212
  | Project Directory | `--project` | Run the command within the given project directory |
196
213
  | Requirements File | `--with-requirements` | Requirements file to install dependencies from |
197
214
 
215
+ ### Entrypoints
216
+
217
+ The `dev` command supports local FastMCP server files only:
218
+
219
+ 1. **Inferred server instance**: `server.py` - imports the module and looks for a FastMCP object named `mcp`, `server`, or `app`. Errors if no such object is found.
220
+ 2. **Explicit server object**: `server.py:custom_name` - imports and uses the specified server object
221
+ 3. **Factory function**: `server.py:create_server` - calls the specified function (sync or async) to create a server instance
222
+
223
+ <Warning>
224
+ The `dev` command **only supports local files** - no URLs, remote servers, or MCP configuration files.
225
+ </Warning>
226
+
198
227
  **Examples**
199
228
 
200
229
  ```bash
@@ -211,7 +240,7 @@ fastmcp dev server.py --with-requirements requirements.txt
211
240
  fastmcp dev server.py --project /path/to/project
212
241
  ```
213
242
 
214
- ### `install`
243
+ ## `fastmcp install`
215
244
  <VersionBadge version="2.10.3" />
216
245
 
217
246
  Install a MCP server in MCP client applications. FastMCP currently supports the following clients:
@@ -242,14 +271,7 @@ Note that for security reasons, MCP clients usually run every server in a comple
242
271
  **FastMCP `install` commands focus on local server files with STDIO transport.** For remote servers running with HTTP or SSE transport, use your client's native configuration - FastMCP's value is simplifying the complex local setup with dependencies and `uv` commands.
243
272
  </Tip>
244
273
 
245
- #### Server Specification
246
-
247
- The `install` command supports the same `file.py:object` notation as the `run` command:
248
-
249
- 1. `server.py` - imports the module and looks for a FastMCP object named `mcp`, `server`, or `app`. Errors if no such object is found.
250
- 2. `server.py:custom_name` - imports and uses the specified server object
251
-
252
- #### Options
274
+ ### Options
253
275
 
254
276
  | Option | Flag | Description |
255
277
  | ------ | ---- | ----------- |
@@ -262,6 +284,22 @@ The `install` command supports the same `file.py:object` notation as the `run` c
262
284
  | Project Directory | `--project` | Run the command within the given project directory |
263
285
  | Requirements File | `--with-requirements` | Requirements file to install dependencies from |
264
286
 
287
+ ### Entrypoints
288
+
289
+ The `install` command supports local FastMCP server files only:
290
+
291
+ 1. **Inferred server instance**: `server.py` - imports the module and looks for a FastMCP object named `mcp`, `server`, or `app`. Errors if no such object is found.
292
+ 2. **Explicit server object**: `server.py:custom_name` - imports and uses the specified server object
293
+ 3. **Factory function**: `server.py:create_server` - calls the specified function (sync or async) to create a server instance
294
+
295
+ <Note>
296
+ Factory functions are particularly useful for install commands since they allow setup code to run that would otherwise be ignored when the MCP client runs your server.
297
+ </Note>
298
+
299
+ <Warning>
300
+ The `install` command **only supports local files** - no URLs, remote servers, or MCP configuration files. For remote servers, use your MCP client's native configuration.
301
+ </Warning>
302
+
265
303
  **Examples**
266
304
 
267
305
  ```bash
@@ -299,7 +337,7 @@ fastmcp install mcp-json server.py --name "My Server" --with pandas
299
337
  fastmcp install mcp-json server.py --copy
300
338
  ```
301
339
 
302
- #### MCP JSON Generation
340
+ ### MCP JSON Generation
303
341
 
304
342
  The `mcp-json` subcommand generates standard MCP JSON configuration that can be used with any MCP-compatible client. This is useful when:
305
343
 
@@ -339,7 +377,7 @@ To use this configuration with your MCP client, you'll typically need to add it
339
377
  | ------ | ---- | ----------- |
340
378
  | Copy to Clipboard | `--copy` | Copy configuration to clipboard instead of printing to stdout |
341
379
 
342
- ### `inspect`
380
+ ## `fastmcp inspect`
343
381
 
344
382
  <VersionBadge version="2.9.0" />
345
383
 
@@ -349,7 +387,25 @@ Generate a detailed JSON report about a FastMCP server, including information ab
349
387
  fastmcp inspect server.py
350
388
  ```
351
389
 
352
- The command supports the same server specification format as `run` and `install`:
390
+ ### Options
391
+
392
+ | Option | Flag | Description |
393
+ | ------ | ---- | ----------- |
394
+ | Output File | `--output`, `-o` | Output file path for the JSON report (default: server-info.json) |
395
+
396
+ ### Entrypoints
397
+
398
+ The `inspect` command supports local FastMCP server files only:
399
+
400
+ 1. **Inferred server instance**: `server.py` - imports the module and looks for a FastMCP object named `mcp`, `server`, or `app`. Errors if no such object is found.
401
+ 2. **Explicit server object**: `server.py:custom_name` - imports and uses the specified server object
402
+ 3. **Factory function**: `server.py:create_server` - calls the specified function (sync or async) to create a server instance
403
+
404
+ <Warning>
405
+ The `inspect` command **only supports local files** - no URLs, remote servers, or MCP configuration files.
406
+ </Warning>
407
+
408
+ **Examples**
353
409
 
354
410
  ```bash
355
411
  # Auto-detect server object
@@ -362,7 +418,7 @@ fastmcp inspect server.py:my_server
362
418
  fastmcp inspect server.py --output analysis.json
363
419
  ```
364
420
 
365
- ### `version`
421
+ ## `fastmcp version`
366
422
 
367
423
  Display version information about FastMCP and related components.
368
424
 
@@ -370,7 +426,7 @@ Display version information about FastMCP and related components.
370
426
  fastmcp version
371
427
  ```
372
428
 
373
- #### Options
429
+ ### Options
374
430
 
375
431
  | Option | Flag | Description |
376
432
  | ------ | ---- | ----------- |
@@ -138,7 +138,7 @@ def version(
138
138
 
139
139
 
140
140
  @app.command
141
- def dev(
141
+ async def dev(
142
142
  server_spec: str,
143
143
  *,
144
144
  with_editable: Annotated[
@@ -220,7 +220,7 @@ def dev(
220
220
 
221
221
  try:
222
222
  # Import server to get dependencies
223
- server: FastMCP = run_module.import_server(file, server_object)
223
+ server: FastMCP = await run_module.import_server(file, server_object)
224
224
  if server.dependencies is not None:
225
225
  with_packages = list(set(with_packages + server.dependencies))
226
226
 
@@ -283,7 +283,7 @@ def dev(
283
283
 
284
284
 
285
285
  @app.command
286
- def run(
286
+ async def run(
287
287
  server_spec: str,
288
288
  *server_args: str,
289
289
  transport: Annotated[
@@ -414,7 +414,7 @@ def run(
414
414
  else:
415
415
  # Use direct import for backwards compatibility
416
416
  try:
417
- run_module.run_command(
417
+ await run_module.run_command(
418
418
  server_spec=server_spec,
419
419
  transport=transport,
420
420
  host=host,
@@ -476,7 +476,7 @@ async def inspect(
476
476
 
477
477
  try:
478
478
  # Import the server
479
- server = run_module.import_server(file, server_object)
479
+ server = await run_module.import_server(file, server_object)
480
480
 
481
481
  # Get server information - using native async support
482
482
  info = await inspect_fastmcp(server)
@@ -167,7 +167,7 @@ def install_claude_code(
167
167
  return False
168
168
 
169
169
 
170
- def claude_code_command(
170
+ async def claude_code_command(
171
171
  server_spec: str,
172
172
  *,
173
173
  server_name: Annotated[
@@ -234,7 +234,7 @@ def claude_code_command(
234
234
  Args:
235
235
  server_spec: Python file to install, optionally with :object suffix
236
236
  """
237
- file, server_object, name, packages, env_dict = process_common_args(
237
+ file, server_object, name, packages, env_dict = await process_common_args(
238
238
  server_spec, server_name, with_packages, env_vars, env_file
239
239
  )
240
240
 
@@ -140,7 +140,7 @@ def install_claude_desktop(
140
140
  return False
141
141
 
142
142
 
143
- def claude_desktop_command(
143
+ async def claude_desktop_command(
144
144
  server_spec: str,
145
145
  *,
146
146
  server_name: Annotated[
@@ -207,7 +207,7 @@ def claude_desktop_command(
207
207
  Args:
208
208
  server_spec: Python file to install, optionally with :object suffix
209
209
  """
210
- file, server_object, name, with_packages, env_dict = process_common_args(
210
+ file, server_object, name, with_packages, env_dict = await process_common_args(
211
211
  server_spec, server_name, with_packages, env_vars, env_file
212
212
  )
213
213
 
@@ -150,7 +150,7 @@ def install_cursor(
150
150
  return False
151
151
 
152
152
 
153
- def cursor_command(
153
+ async def cursor_command(
154
154
  server_spec: str,
155
155
  *,
156
156
  server_name: Annotated[
@@ -217,7 +217,7 @@ def cursor_command(
217
217
  Args:
218
218
  server_spec: Python file to install, optionally with :object suffix
219
219
  """
220
- file, server_object, name, with_packages, env_dict = process_common_args(
220
+ file, server_object, name, with_packages, env_dict = await process_common_args(
221
221
  server_spec, server_name, with_packages, env_vars, env_file
222
222
  )
223
223
 
@@ -113,7 +113,7 @@ def install_mcp_json(
113
113
  return False
114
114
 
115
115
 
116
- def mcp_json_command(
116
+ async def mcp_json_command(
117
117
  server_spec: str,
118
118
  *,
119
119
  server_name: Annotated[
@@ -188,7 +188,7 @@ def mcp_json_command(
188
188
  Args:
189
189
  server_spec: Python file to install, optionally with :object suffix
190
190
  """
191
- file, server_object, name, packages, env_dict = process_common_args(
191
+ file, server_object, name, packages, env_dict = await process_common_args(
192
192
  server_spec, server_name, with_packages, env_vars, env_file
193
193
  )
194
194
 
@@ -23,7 +23,7 @@ def parse_env_var(env_var: str) -> tuple[str, str]:
23
23
  return key.strip(), value.strip()
24
24
 
25
25
 
26
- def process_common_args(
26
+ async def process_common_args(
27
27
  server_spec: str,
28
28
  server_name: str | None,
29
29
  with_packages: list[str],
@@ -49,7 +49,7 @@ def process_common_args(
49
49
  server = None
50
50
  if not name:
51
51
  try:
52
- server = import_server(file, server_object)
52
+ server = await import_server(file, server_object)
53
53
  name = server.name
54
54
  except (ImportError, ModuleNotFoundError) as e:
55
55
  logger.debug(