fastmcp 2.8.0__tar.gz → 2.8.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. {fastmcp-2.8.0 → fastmcp-2.8.1}/PKG-INFO +46 -26
  2. {fastmcp-2.8.0 → fastmcp-2.8.1}/README.md +44 -24
  3. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/changelog.mdx +67 -0
  4. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/clients/auth/bearer.mdx +6 -3
  5. fastmcp-2.8.1/docs/community/README.md +22 -0
  6. fastmcp-2.8.1/docs/community/showcase.mdx +59 -0
  7. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/docs.json +18 -6
  8. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/getting-started/welcome.mdx +5 -3
  9. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/servers/fastmcp.mdx +58 -15
  10. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/servers/tools.mdx +6 -2
  11. fastmcp-2.8.1/docs/snippets/youtube-embed.mdx +12 -0
  12. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/updates.mdx +29 -1
  13. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/screenshot.py +2 -1
  14. {fastmcp-2.8.0 → fastmcp-2.8.1}/justfile +4 -1
  15. {fastmcp-2.8.0 → fastmcp-2.8.1}/pyproject.toml +1 -1
  16. fastmcp-2.8.1/src/fastmcp/__init__.py +50 -0
  17. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/client/client.py +3 -4
  18. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/client/sampling.py +5 -9
  19. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/client/transports.py +7 -5
  20. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/prompts/prompt.py +3 -3
  21. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/prompts/prompt_manager.py +6 -5
  22. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/resources/resource_manager.py +12 -10
  23. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/server/auth/providers/in_memory.py +2 -2
  24. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/server/context.py +12 -10
  25. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/server/openapi.py +22 -19
  26. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/server/proxy.py +3 -7
  27. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/server/server.py +112 -85
  28. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/settings.py +20 -7
  29. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/tools/tool.py +11 -10
  30. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/tools/tool_manager.py +9 -9
  31. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/tools/tool_transform.py +9 -5
  32. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/utilities/types.py +82 -5
  33. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/client/test_streamable_http.py +9 -17
  34. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/contrib/test_bulk_tool_caller.py +1 -3
  35. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/deprecated/test_deprecated.py +23 -0
  36. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/deprecated/test_settings.py +22 -14
  37. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/test_auth_integration.py +3 -3
  38. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/test_server_interactions.py +78 -9
  39. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/tools/test_tool.py +52 -2
  40. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/tools/test_tool_manager.py +2 -1
  41. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/tools/test_tool_transform.py +32 -0
  42. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/utilities/test_types.py +98 -0
  43. {fastmcp-2.8.0 → fastmcp-2.8.1}/uv.lock +150 -148
  44. fastmcp-2.8.0/src/fastmcp/__init__.py +0 -24
  45. {fastmcp-2.8.0 → fastmcp-2.8.1}/.cursor/rules/core-mcp-objects.mdc +0 -0
  46. {fastmcp-2.8.0 → fastmcp-2.8.1}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
  47. {fastmcp-2.8.0 → fastmcp-2.8.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  48. {fastmcp-2.8.0 → fastmcp-2.8.1}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
  49. {fastmcp-2.8.0 → fastmcp-2.8.1}/.github/dependabot.yml +0 -0
  50. {fastmcp-2.8.0 → fastmcp-2.8.1}/.github/labeler.yml +0 -0
  51. {fastmcp-2.8.0 → fastmcp-2.8.1}/.github/release.yml +0 -0
  52. {fastmcp-2.8.0 → fastmcp-2.8.1}/.github/workflows/labeler.yml +0 -0
  53. {fastmcp-2.8.0 → fastmcp-2.8.1}/.github/workflows/publish.yml +0 -0
  54. {fastmcp-2.8.0 → fastmcp-2.8.1}/.github/workflows/run-static.yml +0 -0
  55. {fastmcp-2.8.0 → fastmcp-2.8.1}/.github/workflows/run-tests.yml +0 -0
  56. {fastmcp-2.8.0 → fastmcp-2.8.1}/.gitignore +0 -0
  57. {fastmcp-2.8.0 → fastmcp-2.8.1}/.pre-commit-config.yaml +0 -0
  58. {fastmcp-2.8.0 → fastmcp-2.8.1}/AGENTS.md +0 -0
  59. {fastmcp-2.8.0 → fastmcp-2.8.1}/LICENSE +0 -0
  60. {fastmcp-2.8.0 → fastmcp-2.8.1}/Windows_Notes.md +0 -0
  61. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/assets/demo-inspector.png +0 -0
  62. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/assets/favicon.ico +0 -0
  63. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/assets/images/tutorial-rest-api-result.png +0 -0
  64. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/assets/logo.png +0 -0
  65. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/assets/updates/release-2-7.png +0 -0
  66. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/clients/advanced-features.mdx +0 -0
  67. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/clients/auth/oauth.mdx +0 -0
  68. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/clients/client.mdx +0 -0
  69. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/clients/transports.mdx +0 -0
  70. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/deployment/asgi.mdx +0 -0
  71. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/deployment/running-server.mdx +0 -0
  72. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/getting-started/installation.mdx +0 -0
  73. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/getting-started/quickstart.mdx +0 -0
  74. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/integrations/anthropic.mdx +0 -0
  75. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/integrations/claude-desktop.mdx +0 -0
  76. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/integrations/contrib.mdx +0 -0
  77. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/integrations/gemini.mdx +0 -0
  78. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/integrations/openai.mdx +0 -0
  79. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/patterns/cli.mdx +0 -0
  80. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/patterns/decorating-methods.mdx +0 -0
  81. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/patterns/http-requests.mdx +0 -0
  82. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/patterns/testing.mdx +0 -0
  83. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/patterns/tool-transformation.mdx +0 -0
  84. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/servers/auth/bearer.mdx +0 -0
  85. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/servers/composition.mdx +0 -0
  86. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/servers/context.mdx +0 -0
  87. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/servers/openapi.mdx +0 -0
  88. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/servers/prompts.mdx +0 -0
  89. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/servers/proxy.mdx +0 -0
  90. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/servers/resources.mdx +0 -0
  91. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/snippets/version-badge.mdx +0 -0
  92. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/style.css +0 -0
  93. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/tutorials/create-mcp-server.mdx +0 -0
  94. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/tutorials/mcp.mdx +0 -0
  95. {fastmcp-2.8.0 → fastmcp-2.8.1}/docs/tutorials/rest-api.mdx +0 -0
  96. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/complex_inputs.py +0 -0
  97. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/config_server.py +0 -0
  98. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/desktop.py +0 -0
  99. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/echo.py +0 -0
  100. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/in_memory_proxy_example.py +0 -0
  101. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/memory.py +0 -0
  102. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/mount_example.py +0 -0
  103. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/sampling.py +0 -0
  104. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/serializer.py +0 -0
  105. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/simple_echo.py +0 -0
  106. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/smart_home/README.md +0 -0
  107. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/smart_home/pyproject.toml +0 -0
  108. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/smart_home/src/smart_home/__init__.py +0 -0
  109. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/smart_home/src/smart_home/__main__.py +0 -0
  110. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/smart_home/src/smart_home/hub.py +0 -0
  111. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
  112. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -0
  113. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/smart_home/src/smart_home/lights/server.py +0 -0
  114. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/smart_home/src/smart_home/py.typed +0 -0
  115. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/smart_home/src/smart_home/settings.py +0 -0
  116. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/smart_home/uv.lock +0 -0
  117. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/tags_example.py +0 -0
  118. {fastmcp-2.8.0 → fastmcp-2.8.1}/examples/text_me.py +0 -0
  119. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/cli/__init__.py +0 -0
  120. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/cli/claude.py +0 -0
  121. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/cli/cli.py +0 -0
  122. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/cli/run.py +0 -0
  123. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/client/__init__.py +0 -0
  124. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/client/auth/__init__.py +0 -0
  125. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/client/auth/bearer.py +0 -0
  126. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/client/auth/oauth.py +0 -0
  127. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/client/logging.py +0 -0
  128. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/client/oauth_callback.py +0 -0
  129. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/client/progress.py +0 -0
  130. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/client/roots.py +0 -0
  131. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/contrib/README.md +0 -0
  132. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  133. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  134. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  135. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  136. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/contrib/mcp_mixin/README.md +0 -0
  137. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  138. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
  139. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  140. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/exceptions.py +0 -0
  141. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/prompts/__init__.py +0 -0
  142. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/py.typed +0 -0
  143. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/resources/__init__.py +0 -0
  144. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/resources/resource.py +0 -0
  145. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/resources/template.py +0 -0
  146. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/resources/types.py +0 -0
  147. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/server/__init__.py +0 -0
  148. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/server/auth/__init__.py +0 -0
  149. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/server/auth/auth.py +0 -0
  150. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/server/auth/providers/__init__.py +0 -0
  151. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/server/auth/providers/bearer.py +0 -0
  152. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/server/auth/providers/bearer_env.py +0 -0
  153. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/server/dependencies.py +0 -0
  154. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/server/http.py +0 -0
  155. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/tools/__init__.py +0 -0
  156. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/utilities/__init__.py +0 -0
  157. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/utilities/cache.py +0 -0
  158. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/utilities/components.py +0 -0
  159. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/utilities/exceptions.py +0 -0
  160. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/utilities/http.py +0 -0
  161. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/utilities/json_schema.py +0 -0
  162. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/utilities/logging.py +0 -0
  163. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/utilities/mcp_config.py +0 -0
  164. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/utilities/openapi.py +0 -0
  165. {fastmcp-2.8.0 → fastmcp-2.8.1}/src/fastmcp/utilities/tests.py +0 -0
  166. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/__init__.py +0 -0
  167. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/auth/__init__.py +0 -0
  168. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/auth/providers/test_bearer.py +0 -0
  169. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/auth/providers/test_bearer_env.py +0 -0
  170. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/auth/test_oauth_client.py +0 -0
  171. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/cli/__init__.py +0 -0
  172. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/cli/test_cli.py +0 -0
  173. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/cli/test_run.py +0 -0
  174. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/client/__init__.py +0 -0
  175. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/client/test_client.py +0 -0
  176. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/client/test_logs.py +0 -0
  177. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/client/test_openapi.py +0 -0
  178. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/client/test_progress.py +0 -0
  179. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/client/test_roots.py +0 -0
  180. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/client/test_sampling.py +0 -0
  181. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/client/test_sse.py +0 -0
  182. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/client/test_stdio.py +0 -0
  183. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/conftest.py +0 -0
  184. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/contrib/__init__.py +0 -0
  185. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/contrib/test_mcp_mixin.py +0 -0
  186. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/deprecated/__init__.py +0 -0
  187. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/deprecated/test_mount_separators.py +0 -0
  188. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/deprecated/test_resource_prefixes.py +0 -0
  189. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/deprecated/test_route_type_ignore.py +0 -0
  190. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/prompts/__init__.py +0 -0
  191. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/prompts/test_prompt.py +0 -0
  192. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/prompts/test_prompt_manager.py +0 -0
  193. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/resources/__init__.py +0 -0
  194. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/resources/test_file_resources.py +0 -0
  195. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/resources/test_function_resources.py +0 -0
  196. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/resources/test_resource_manager.py +0 -0
  197. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/resources/test_resource_template.py +0 -0
  198. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/resources/test_resources.py +0 -0
  199. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/__init__.py +0 -0
  200. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/http/__init__.py +0 -0
  201. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/http/test_custom_routes.py +0 -0
  202. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/http/test_http_dependencies.py +0 -0
  203. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/http/test_http_middleware.py +0 -0
  204. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/openapi/__init__.py +0 -0
  205. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/openapi/test_openapi.py +0 -0
  206. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/openapi/test_openapi_path_parameters.py +0 -0
  207. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/openapi/test_route_map_fn.py +0 -0
  208. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/test_app_state.py +0 -0
  209. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/test_context.py +0 -0
  210. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/test_file_server.py +0 -0
  211. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/test_import_server.py +0 -0
  212. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/test_logging.py +0 -0
  213. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/test_mount.py +0 -0
  214. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/test_proxy.py +0 -0
  215. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/test_resource_prefix_formats.py +0 -0
  216. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/test_run_server.py +0 -0
  217. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/test_server.py +0 -0
  218. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/test_tool_annotations.py +0 -0
  219. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/server/test_tool_exclude_args.py +0 -0
  220. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/test_examples.py +0 -0
  221. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/test_servers/fastmcp_server.py +0 -0
  222. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/test_servers/sse.py +0 -0
  223. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/test_servers/stdio.py +0 -0
  224. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/tools/__init__.py +0 -0
  225. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/utilities/__init__.py +0 -0
  226. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/utilities/openapi/__init__.py +0 -0
  227. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/utilities/openapi/conftest.py +0 -0
  228. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/utilities/openapi/test_openapi.py +0 -0
  229. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/utilities/openapi/test_openapi_advanced.py +0 -0
  230. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/utilities/openapi/test_openapi_fastapi.py +0 -0
  231. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/utilities/test_cache.py +0 -0
  232. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/utilities/test_json_schema.py +0 -0
  233. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/utilities/test_logging.py +0 -0
  234. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/utilities/test_mcp_config.py +0 -0
  235. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/utilities/test_tests.py +0 -0
  236. {fastmcp-2.8.0 → fastmcp-2.8.1}/tests/utilities/test_typeadapter.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastmcp
3
- Version: 2.8.0
3
+ Version: 2.8.1
4
4
  Summary: The fast, Pythonic way to build MCP servers.
5
5
  Project-URL: Homepage, https://gofastmcp.com
6
6
  Project-URL: Repository, https://github.com/jlowin/fastmcp
@@ -20,7 +20,7 @@ Requires-Python: >=3.10
20
20
  Requires-Dist: authlib>=1.5.2
21
21
  Requires-Dist: exceptiongroup>=1.2.2
22
22
  Requires-Dist: httpx>=0.28.1
23
- Requires-Dist: mcp<2.0.0,>=1.9.2
23
+ Requires-Dist: mcp<2.0.0,>=1.9.4
24
24
  Requires-Dist: openapi-pydantic>=0.5.1
25
25
  Requires-Dist: python-dotenv>=1.1.0
26
26
  Requires-Dist: rich>=13.9.4
@@ -33,6 +33,7 @@ Description-Content-Type: text/markdown
33
33
 
34
34
  <!-- omit in toc -->
35
35
  # FastMCP v2 🚀
36
+
36
37
  <strong>The fast, Pythonic way to build MCP servers and clients.</strong>
37
38
 
38
39
  *FastMCP is made with 💙 by [Prefect](https://www.prefect.io/)*
@@ -46,13 +47,16 @@ Description-Content-Type: text/markdown
46
47
  </div>
47
48
 
48
49
  > [!Note]
50
+ >
49
51
  > #### Beyond the Protocol
50
- >
51
- > FastMCP is the standard framework for working with the Model Context Protocol. FastMCP 1.0 was incorporated into the [official low-level Python SDK](https://github.com/modelcontextprotocol/python-sdk), and FastMCP 2.0 *(this project)* provides a complete toolkit for working with the MCP ecosystem.
52
52
  >
53
- > FastMCP has a comprehensive set of features that go far beyond the core MCP specification, all in service of providing **the simplest path to production**. These include client support, server composition, auth, automatic generation from OpenAPI specs, remote server proxying, built-in testing tools, integrations, and more.
53
+ > FastMCP is the standard framework for working with the Model Context Protocol. FastMCP 1.0 was incorporated into the [official MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) in 2024.
54
+ >
55
+ > This is FastMCP 2.0, the **actively maintained version** that provides a complete toolkit for working with the MCP ecosystem.
54
56
  >
55
- > Ready to upgrade or get started? Follow the [installation instructions](/getting-started/installation), which include specific steps for upgrading from the official MCP SDK.
57
+ > FastMCP 2.0 has a comprehensive set of features that go far beyond the core MCP specification, all in service of providing **the simplest path to production**. These include deployment, auth, clients, server proxying and composition, generating servers from REST APIs, dynamic tool rewriting, built-in testing tools, integrations, and more.
58
+ >
59
+ > Ready to upgrade or get started? Follow the [installation instructions](https://gofastmcp.com/getting-started/installation), which include steps for upgrading from the official MCP SDK.
56
60
 
57
61
  ---
58
62
 
@@ -74,6 +78,7 @@ if __name__ == "__main__":
74
78
  ```
75
79
 
76
80
  Run the server locally:
81
+
77
82
  ```bash
78
83
  fastmcp run server.py
79
84
  ```
@@ -82,9 +87,10 @@ fastmcp run server.py
82
87
 
83
88
  FastMCP's complete documentation is available at **[gofastmcp.com](https://gofastmcp.com)**, including detailed guides, API references, and advanced patterns. This readme provides only a high-level overview.
84
89
 
85
- Documentation is also available in [llms.txt format](https://llmstxt.org/), which is a simple markdown standard that LLMs can consume easily.
90
+ Documentation is also available in [llms.txt format](https://llmstxt.org/), which is a simple markdown standard that LLMs can consume easily.
86
91
 
87
92
  There are two ways to access the LLM-friendly documentation:
93
+
88
94
  - [`llms.txt`](https://gofastmcp.com/llms.txt) is essentially a sitemap, listing all the pages in the documentation.
89
95
  - [`llms-full.txt`](https://gofastmcp.com/llms-full.txt) contains the entire documentation. Note this may exceed the context window of your LLM.
90
96
 
@@ -174,7 +180,7 @@ Learn more in the [**FastMCP Server Documentation**](https://gofastmcp.com/serve
174
180
 
175
181
  ### Tools
176
182
 
177
- Tools allow LLMs to perform actions by executing your Python functions (sync or async). Ideal for computations, API calls, or side effects (like `POST`/`PUT`). FastMCP handles schema generation from type hints and docstrings. Tools can return various types, including text, JSON-serializable objects, and even images using the [`fastmcp.Image`](https://gofastmcp.com/servers/tools#return-values) helper.
183
+ Tools allow LLMs to perform actions by executing your Python functions (sync or async). Ideal for computations, API calls, or side effects (like `POST`/`PUT`). FastMCP handles schema generation from type hints and docstrings. Tools can return various types, including text, JSON-serializable objects, and even images or audio aided by the FastMCP media helper classes.
178
184
 
179
185
  ```python
180
186
  @mcp.tool
@@ -220,12 +226,13 @@ Learn more in the [**Prompts Documentation**](https://gofastmcp.com/servers/prom
220
226
  ### Context
221
227
 
222
228
  Access MCP session capabilities within your tools, resources, or prompts by adding a `ctx: Context` parameter. Context provides methods for:
223
- * **Logging:** Log messages to MCP clients with `ctx.info()`, `ctx.error()`, etc.
224
- * **LLM Sampling:** Use `ctx.sample()` to request completions from the client's LLM.
225
- * **HTTP Request:** Use `ctx.http_request()` to make HTTP requests to other servers.
226
- * **Resource Access:** Use `ctx.read_resource()` to access resources on the server
227
- * **Progress Reporting:** Use `ctx.report_progress()` to report progress to the client.
228
- * and more...
229
+
230
+ - **Logging:** Log messages to MCP clients with `ctx.info()`, `ctx.error()`, etc.
231
+ - **LLM Sampling:** Use `ctx.sample()` to request completions from the client's LLM.
232
+ - **HTTP Request:** Use `ctx.http_request()` to make HTTP requests to other servers.
233
+ - **Resource Access:** Use `ctx.read_resource()` to access resources on the server
234
+ - **Progress Reporting:** Use `ctx.report_progress()` to report progress to the client.
235
+ - and more...
229
236
 
230
237
  To access the context, add a parameter annotated as `Context` to any mcp-decorated function. FastMCP will automatically inject the correct context object when the function is called.
231
238
 
@@ -365,16 +372,19 @@ if __name__ == "__main__":
365
372
  FastMCP supports three transport protocols:
366
373
 
367
374
  **STDIO (Default)**: Best for local tools and command-line scripts.
375
+
368
376
  ```python
369
377
  mcp.run(transport="stdio") # Default, so transport argument is optional
370
378
  ```
371
379
 
372
380
  **Streamable HTTP**: Recommended for web deployments.
381
+
373
382
  ```python
374
383
  mcp.run(transport="streamable-http", host="127.0.0.1", port=8000, path="/mcp")
375
384
  ```
376
385
 
377
386
  **SSE**: For compatibility with existing SSE clients.
387
+
378
388
  ```python
379
389
  mcp.run(transport="sse", host="127.0.0.1", port=8000)
380
390
  ```
@@ -387,22 +397,26 @@ Contributions are the core of open source! We welcome improvements and features.
387
397
 
388
398
  ### Prerequisites
389
399
 
390
- * Python 3.10+
391
- * [uv](https://docs.astral.sh/uv/) (Recommended for environment management)
400
+ - Python 3.10+
401
+ - [uv](https://docs.astral.sh/uv/) (Recommended for environment management)
392
402
 
393
403
  ### Setup
394
404
 
395
- 1. Clone the repository:
405
+ 1. Clone the repository:
406
+
396
407
  ```bash
397
408
  git clone https://github.com/jlowin/fastmcp.git
398
409
  cd fastmcp
399
410
  ```
400
- 2. Create and sync the environment:
411
+
412
+ 2. Create and sync the environment:
413
+
401
414
  ```bash
402
415
  uv sync
403
416
  ```
417
+
404
418
  This installs all dependencies, including dev tools.
405
-
419
+
406
420
  3. Activate the virtual environment (e.g., `source .venv/bin/activate` or via your IDE).
407
421
 
408
422
  ### Unit Tests
@@ -410,10 +424,13 @@ Contributions are the core of open source! We welcome improvements and features.
410
424
  FastMCP has a comprehensive unit test suite. All PRs must introduce or update tests as appropriate and pass the full suite.
411
425
 
412
426
  Run tests using pytest:
427
+
413
428
  ```bash
414
429
  pytest
415
430
  ```
431
+
416
432
  or if you want an overview of the code coverage
433
+
417
434
  ```bash
418
435
  uv run pytest --cov=src --cov=examples --cov-report=html
419
436
  ```
@@ -423,10 +440,13 @@ uv run pytest --cov=src --cov=examples --cov-report=html
423
440
  FastMCP uses `pre-commit` for code formatting, linting, and type-checking. All PRs must pass these checks (they run automatically in CI).
424
441
 
425
442
  Install the hooks locally:
443
+
426
444
  ```bash
427
445
  uv run pre-commit install
428
446
  ```
447
+
429
448
  The hooks will now run automatically on `git commit`. You can also run them manually at any time:
449
+
430
450
  ```bash
431
451
  pre-commit run --all-files
432
452
  # or via uv
@@ -435,11 +455,11 @@ uv run pre-commit run --all-files
435
455
 
436
456
  ### Pull Requests
437
457
 
438
- 1. Fork the repository on GitHub.
439
- 2. Create a feature branch from `main`.
440
- 3. Make your changes, including tests and documentation updates.
441
- 4. Ensure tests and pre-commit hooks pass.
442
- 5. Commit your changes and push to your fork.
443
- 6. Open a pull request against the `main` branch of `jlowin/fastmcp`.
458
+ 1. Fork the repository on GitHub.
459
+ 2. Create a feature branch from `main`.
460
+ 3. Make your changes, including tests and documentation updates.
461
+ 4. Ensure tests and pre-commit hooks pass.
462
+ 5. Commit your changes and push to your fork.
463
+ 6. Open a pull request against the `main` branch of `jlowin/fastmcp`.
444
464
 
445
- Please open an issue or discussion for questions or suggestions before starting significant work!
465
+ Please open an issue or discussion for questions or suggestions before starting significant work!
@@ -2,6 +2,7 @@
2
2
 
3
3
  <!-- omit in toc -->
4
4
  # FastMCP v2 🚀
5
+
5
6
  <strong>The fast, Pythonic way to build MCP servers and clients.</strong>
6
7
 
7
8
  *FastMCP is made with 💙 by [Prefect](https://www.prefect.io/)*
@@ -15,13 +16,16 @@
15
16
  </div>
16
17
 
17
18
  > [!Note]
19
+ >
18
20
  > #### Beyond the Protocol
19
- >
20
- > FastMCP is the standard framework for working with the Model Context Protocol. FastMCP 1.0 was incorporated into the [official low-level Python SDK](https://github.com/modelcontextprotocol/python-sdk), and FastMCP 2.0 *(this project)* provides a complete toolkit for working with the MCP ecosystem.
21
21
  >
22
- > FastMCP has a comprehensive set of features that go far beyond the core MCP specification, all in service of providing **the simplest path to production**. These include client support, server composition, auth, automatic generation from OpenAPI specs, remote server proxying, built-in testing tools, integrations, and more.
22
+ > FastMCP is the standard framework for working with the Model Context Protocol. FastMCP 1.0 was incorporated into the [official MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) in 2024.
23
+ >
24
+ > This is FastMCP 2.0, the **actively maintained version** that provides a complete toolkit for working with the MCP ecosystem.
23
25
  >
24
- > Ready to upgrade or get started? Follow the [installation instructions](/getting-started/installation), which include specific steps for upgrading from the official MCP SDK.
26
+ > FastMCP 2.0 has a comprehensive set of features that go far beyond the core MCP specification, all in service of providing **the simplest path to production**. These include deployment, auth, clients, server proxying and composition, generating servers from REST APIs, dynamic tool rewriting, built-in testing tools, integrations, and more.
27
+ >
28
+ > Ready to upgrade or get started? Follow the [installation instructions](https://gofastmcp.com/getting-started/installation), which include steps for upgrading from the official MCP SDK.
25
29
 
26
30
  ---
27
31
 
@@ -43,6 +47,7 @@ if __name__ == "__main__":
43
47
  ```
44
48
 
45
49
  Run the server locally:
50
+
46
51
  ```bash
47
52
  fastmcp run server.py
48
53
  ```
@@ -51,9 +56,10 @@ fastmcp run server.py
51
56
 
52
57
  FastMCP's complete documentation is available at **[gofastmcp.com](https://gofastmcp.com)**, including detailed guides, API references, and advanced patterns. This readme provides only a high-level overview.
53
58
 
54
- Documentation is also available in [llms.txt format](https://llmstxt.org/), which is a simple markdown standard that LLMs can consume easily.
59
+ Documentation is also available in [llms.txt format](https://llmstxt.org/), which is a simple markdown standard that LLMs can consume easily.
55
60
 
56
61
  There are two ways to access the LLM-friendly documentation:
62
+
57
63
  - [`llms.txt`](https://gofastmcp.com/llms.txt) is essentially a sitemap, listing all the pages in the documentation.
58
64
  - [`llms-full.txt`](https://gofastmcp.com/llms-full.txt) contains the entire documentation. Note this may exceed the context window of your LLM.
59
65
 
@@ -143,7 +149,7 @@ Learn more in the [**FastMCP Server Documentation**](https://gofastmcp.com/serve
143
149
 
144
150
  ### Tools
145
151
 
146
- Tools allow LLMs to perform actions by executing your Python functions (sync or async). Ideal for computations, API calls, or side effects (like `POST`/`PUT`). FastMCP handles schema generation from type hints and docstrings. Tools can return various types, including text, JSON-serializable objects, and even images using the [`fastmcp.Image`](https://gofastmcp.com/servers/tools#return-values) helper.
152
+ Tools allow LLMs to perform actions by executing your Python functions (sync or async). Ideal for computations, API calls, or side effects (like `POST`/`PUT`). FastMCP handles schema generation from type hints and docstrings. Tools can return various types, including text, JSON-serializable objects, and even images or audio aided by the FastMCP media helper classes.
147
153
 
148
154
  ```python
149
155
  @mcp.tool
@@ -189,12 +195,13 @@ Learn more in the [**Prompts Documentation**](https://gofastmcp.com/servers/prom
189
195
  ### Context
190
196
 
191
197
  Access MCP session capabilities within your tools, resources, or prompts by adding a `ctx: Context` parameter. Context provides methods for:
192
- * **Logging:** Log messages to MCP clients with `ctx.info()`, `ctx.error()`, etc.
193
- * **LLM Sampling:** Use `ctx.sample()` to request completions from the client's LLM.
194
- * **HTTP Request:** Use `ctx.http_request()` to make HTTP requests to other servers.
195
- * **Resource Access:** Use `ctx.read_resource()` to access resources on the server
196
- * **Progress Reporting:** Use `ctx.report_progress()` to report progress to the client.
197
- * and more...
198
+
199
+ - **Logging:** Log messages to MCP clients with `ctx.info()`, `ctx.error()`, etc.
200
+ - **LLM Sampling:** Use `ctx.sample()` to request completions from the client's LLM.
201
+ - **HTTP Request:** Use `ctx.http_request()` to make HTTP requests to other servers.
202
+ - **Resource Access:** Use `ctx.read_resource()` to access resources on the server
203
+ - **Progress Reporting:** Use `ctx.report_progress()` to report progress to the client.
204
+ - and more...
198
205
 
199
206
  To access the context, add a parameter annotated as `Context` to any mcp-decorated function. FastMCP will automatically inject the correct context object when the function is called.
200
207
 
@@ -334,16 +341,19 @@ if __name__ == "__main__":
334
341
  FastMCP supports three transport protocols:
335
342
 
336
343
  **STDIO (Default)**: Best for local tools and command-line scripts.
344
+
337
345
  ```python
338
346
  mcp.run(transport="stdio") # Default, so transport argument is optional
339
347
  ```
340
348
 
341
349
  **Streamable HTTP**: Recommended for web deployments.
350
+
342
351
  ```python
343
352
  mcp.run(transport="streamable-http", host="127.0.0.1", port=8000, path="/mcp")
344
353
  ```
345
354
 
346
355
  **SSE**: For compatibility with existing SSE clients.
356
+
347
357
  ```python
348
358
  mcp.run(transport="sse", host="127.0.0.1", port=8000)
349
359
  ```
@@ -356,22 +366,26 @@ Contributions are the core of open source! We welcome improvements and features.
356
366
 
357
367
  ### Prerequisites
358
368
 
359
- * Python 3.10+
360
- * [uv](https://docs.astral.sh/uv/) (Recommended for environment management)
369
+ - Python 3.10+
370
+ - [uv](https://docs.astral.sh/uv/) (Recommended for environment management)
361
371
 
362
372
  ### Setup
363
373
 
364
- 1. Clone the repository:
374
+ 1. Clone the repository:
375
+
365
376
  ```bash
366
377
  git clone https://github.com/jlowin/fastmcp.git
367
378
  cd fastmcp
368
379
  ```
369
- 2. Create and sync the environment:
380
+
381
+ 2. Create and sync the environment:
382
+
370
383
  ```bash
371
384
  uv sync
372
385
  ```
386
+
373
387
  This installs all dependencies, including dev tools.
374
-
388
+
375
389
  3. Activate the virtual environment (e.g., `source .venv/bin/activate` or via your IDE).
376
390
 
377
391
  ### Unit Tests
@@ -379,10 +393,13 @@ Contributions are the core of open source! We welcome improvements and features.
379
393
  FastMCP has a comprehensive unit test suite. All PRs must introduce or update tests as appropriate and pass the full suite.
380
394
 
381
395
  Run tests using pytest:
396
+
382
397
  ```bash
383
398
  pytest
384
399
  ```
400
+
385
401
  or if you want an overview of the code coverage
402
+
386
403
  ```bash
387
404
  uv run pytest --cov=src --cov=examples --cov-report=html
388
405
  ```
@@ -392,10 +409,13 @@ uv run pytest --cov=src --cov=examples --cov-report=html
392
409
  FastMCP uses `pre-commit` for code formatting, linting, and type-checking. All PRs must pass these checks (they run automatically in CI).
393
410
 
394
411
  Install the hooks locally:
412
+
395
413
  ```bash
396
414
  uv run pre-commit install
397
415
  ```
416
+
398
417
  The hooks will now run automatically on `git commit`. You can also run them manually at any time:
418
+
399
419
  ```bash
400
420
  pre-commit run --all-files
401
421
  # or via uv
@@ -404,11 +424,11 @@ uv run pre-commit run --all-files
404
424
 
405
425
  ### Pull Requests
406
426
 
407
- 1. Fork the repository on GitHub.
408
- 2. Create a feature branch from `main`.
409
- 3. Make your changes, including tests and documentation updates.
410
- 4. Ensure tests and pre-commit hooks pass.
411
- 5. Commit your changes and push to your fork.
412
- 6. Open a pull request against the `main` branch of `jlowin/fastmcp`.
427
+ 1. Fork the repository on GitHub.
428
+ 2. Create a feature branch from `main`.
429
+ 3. Make your changes, including tests and documentation updates.
430
+ 4. Ensure tests and pre-commit hooks pass.
431
+ 5. Commit your changes and push to your fork.
432
+ 6. Open a pull request against the `main` branch of `jlowin/fastmcp`.
413
433
 
414
- Please open an issue or discussion for questions or suggestions before starting significant work!
434
+ Please open an issue or discussion for questions or suggestions before starting significant work!
@@ -2,6 +2,73 @@
2
2
  mode: center
3
3
  ---
4
4
 
5
+ <Update label="v2.8.0" description="2024-06-10">
6
+
7
+ ## [v2.8.0: Transform and Roll Out](https://github.com/jlowin/fastmcp/releases/tag/v2.8.0)
8
+
9
+ FastMCP 2.8.0 introduces powerful new ways to customize and control your MCP servers!
10
+
11
+ ### Tool Transformation
12
+
13
+ The highlight of this release is first-class [**Tool Transformation**](/patterns/tool-transformation), a new feature that lets you create enhanced variations of existing tools. You can now easily rename arguments, hide parameters, modify descriptions, and even wrap tools with custom validation or post-processing logic—all without rewriting the original code. This makes it easier than ever to adapt generic tools for specific LLM use cases or to simplify complex APIs. Huge thanks to [@strawgate](https://github.com/strawgate) for partnering on this, starting with [#591](https://github.com/jlowin/fastmcp/discussions/591) and [#599](https://github.com/jlowin/fastmcp/pull/599) and continuing offline.
14
+
15
+ ### Component Control
16
+ This release also gives you more granular control over which components are exposed to clients. With new [**tag-based filtering**](/servers/fastmcp#tag-based-filtering), you can selectively enable or disable tools, resources, and prompts based on tags, perfect for managing different environments or user permissions. Complementing this, every component now supports being [programmatically enabled or disabled](/servers/tools#disabling-tools), offering dynamic control over your server's capabilities.
17
+
18
+ ### Tools-by-Default
19
+ Finally, to improve compatibility with a wider range of LLM clients, this release changes the default behavior for OpenAPI integration: all API endpoints are now converted to `Tools` by default. This is a **breaking change** but pragmatically necessitated by the fact that the majority of MCP clients available today are, sadly, only compatible with MCP tools. Therefore, this change significantly simplifies the out-of-the-box experience and ensures your entire API is immediately accessible to any tool-using agent.
20
+
21
+ ## What's Changed
22
+ ### New Features 🎉
23
+ * First-class tool transformation by [@jlowin](https://github.com/jlowin) in [#745](https://github.com/jlowin/fastmcp/pull/745)
24
+ * Support enable/disable for all FastMCP components (tools, prompts, resources, templates) by [@jlowin](https://github.com/jlowin) in [#781](https://github.com/jlowin/fastmcp/pull/781)
25
+ * Add support for tag-based component filtering by [@jlowin](https://github.com/jlowin) in [#748](https://github.com/jlowin/fastmcp/pull/748)
26
+ * Allow tag assignments for OpenAPI by [@jlowin](https://github.com/jlowin) in [#791](https://github.com/jlowin/fastmcp/pull/791)
27
+ ### Enhancements 🔧
28
+ * Create common base class for components by [@jlowin](https://github.com/jlowin) in [#776](https://github.com/jlowin/fastmcp/pull/776)
29
+ * Move components to own file; add resource by [@jlowin](https://github.com/jlowin) in [#777](https://github.com/jlowin/fastmcp/pull/777)
30
+ * Update FastMCP component with __eq__ and __repr__ by [@jlowin](https://github.com/jlowin) in [#779](https://github.com/jlowin/fastmcp/pull/779)
31
+ * Remove open-ended and server-specific settings by [@jlowin](https://github.com/jlowin) in [#750](https://github.com/jlowin/fastmcp/pull/750)
32
+ ### Fixes 🐞
33
+ * Ensure client is only initialized once by [@jlowin](https://github.com/jlowin) in [#758](https://github.com/jlowin/fastmcp/pull/758)
34
+ * Fix field validator for resource by [@jlowin](https://github.com/jlowin) in [#778](https://github.com/jlowin/fastmcp/pull/778)
35
+ * Ensure proxies can overwrite remote tools without falling back to the remote by [@jlowin](https://github.com/jlowin) in [#782](https://github.com/jlowin/fastmcp/pull/782)
36
+ ### Breaking Changes 🛫
37
+ * Treat all openapi routes as tools by [@jlowin](https://github.com/jlowin) in [#788](https://github.com/jlowin/fastmcp/pull/788)
38
+ * Fix issue with global OpenAPI tags by [@jlowin](https://github.com/jlowin) in [#792](https://github.com/jlowin/fastmcp/pull/792)
39
+ ### Docs 📚
40
+ * Minor docs updates by [@jlowin](https://github.com/jlowin) in [#755](https://github.com/jlowin/fastmcp/pull/755)
41
+ * Add 2.7 update by [@jlowin](https://github.com/jlowin) in [#756](https://github.com/jlowin/fastmcp/pull/756)
42
+ * Reduce 2.7 image size by [@jlowin](https://github.com/jlowin) in [#757](https://github.com/jlowin/fastmcp/pull/757)
43
+ * Update updates.mdx by [@jlowin](https://github.com/jlowin) in [#765](https://github.com/jlowin/fastmcp/pull/765)
44
+ * Hide docs sidebar scrollbar by default by [@jlowin](https://github.com/jlowin) in [#766](https://github.com/jlowin/fastmcp/pull/766)
45
+ * Add "stop vibe testing" to tutorials by [@jlowin](https://github.com/jlowin) in [#767](https://github.com/jlowin/fastmcp/pull/767)
46
+ * Add docs links by [@jlowin](https://github.com/jlowin) in [#768](https://github.com/jlowin/fastmcp/pull/768)
47
+ * Fix: updated variable name under Gemini remote client by [@yrangana](https://github.com/yrangana) in [#769](https://github.com/jlowin/fastmcp/pull/769)
48
+ * Revert "Hide docs sidebar scrollbar by default" by [@jlowin](https://github.com/jlowin) in [#770](https://github.com/jlowin/fastmcp/pull/770)
49
+ * Add updates by [@jlowin](https://github.com/jlowin) in [#773](https://github.com/jlowin/fastmcp/pull/773)
50
+ * Add tutorials by [@jlowin](https://github.com/jlowin) in [#783](https://github.com/jlowin/fastmcp/pull/783)
51
+ * Update LLM-friendly docs by [@jlowin](https://github.com/jlowin) in [#784](https://github.com/jlowin/fastmcp/pull/784)
52
+ * Update oauth.mdx by [@JeremyCraigMartinez](https://github.com/JeremyCraigMartinez) in [#787](https://github.com/jlowin/fastmcp/pull/787)
53
+ * Add changelog by [@jlowin](https://github.com/jlowin) in [#789](https://github.com/jlowin/fastmcp/pull/789)
54
+ * Add tutorials by [@jlowin](https://github.com/jlowin) in [#790](https://github.com/jlowin/fastmcp/pull/790)
55
+ * Add docs for tag-based filtering by [@jlowin](https://github.com/jlowin) in [#793](https://github.com/jlowin/fastmcp/pull/793)
56
+ ### Other Changes 🦾
57
+ * Create dependabot.yml by [@jlowin](https://github.com/jlowin) in [#759](https://github.com/jlowin/fastmcp/pull/759)
58
+ * Bump astral-sh/setup-uv from 3 to 6 by [@dependabot](https://github.com/dependabot) in [#760](https://github.com/jlowin/fastmcp/pull/760)
59
+ * Add dependencies section to release by [@jlowin](https://github.com/jlowin) in [#761](https://github.com/jlowin/fastmcp/pull/761)
60
+ * Remove extra imports for MCPConfig by [@Maanas-Verma](https://github.com/Maanas-Verma) in [#763](https://github.com/jlowin/fastmcp/pull/763)
61
+ * Split out enhancements in release notes by [@jlowin](https://github.com/jlowin) in [#764](https://github.com/jlowin/fastmcp/pull/764)
62
+
63
+ ## New Contributors
64
+ * [@dependabot](https://github.com/dependabot) made their first contribution in [#760](https://github.com/jlowin/fastmcp/pull/760)
65
+ * [@Maanas-Verma](https://github.com/Maanas-Verma) made their first contribution in [#763](https://github.com/jlowin/fastmcp/pull/763)
66
+ * [@JeremyCraigMartinez](https://github.com/JeremyCraigMartinez) made their first contribution in [#787](https://github.com/jlowin/fastmcp/pull/787)
67
+
68
+ **Full Changelog**: [v2.7.1...v2.8.0](https://github.com/jlowin/fastmcp/compare/v2.7.1...v2.8.0)
69
+
70
+ </Update>
71
+
5
72
  <Update label="v2.7.1" description="2024-06-08">
6
73
 
7
74
  ## [v2.7.1: The Bearer Necessities](https://github.com/jlowin/fastmcp/releases/tag/v2.7.1)
@@ -73,14 +73,17 @@ async with Client(
73
73
 
74
74
  ## Custom Headers
75
75
 
76
- If the MCP server expects a custom header or token scheme, you can manually set the client's `headers` instead of using the `auth` parameter:
76
+ If the MCP server expects a custom header or token scheme, you can manually set the client's `headers` instead of using the `auth` parameter by setting them on your transport:
77
77
 
78
78
  ```python {5}
79
79
  from fastmcp import Client
80
+ from fastmcp.client.transports import StreamableHttpTransport
80
81
 
81
82
  async with Client(
82
- "https://fastmcp.cloud/mcp",
83
- headers={"X-API-Key": "<your-token>"},
83
+ transport=StreamableHttpTransport(
84
+ "https://fastmcp.cloud/mcp",
85
+ headers={"X-API-Key": "<your-token>"},
86
+ ),
84
87
  ) as client:
85
88
  await client.ping()
86
89
  ```
@@ -0,0 +1,22 @@
1
+ # Community Section
2
+
3
+ This directory contains community-contributed content and showcases for FastMCP.
4
+
5
+ ## Structure
6
+
7
+ - `showcase.mdx` - Main community showcase page featuring high-quality projects and examples
8
+
9
+ ## Adding Content
10
+
11
+ To add new community content:
12
+ 1. Create a new MDX file in this directory
13
+ 2. Update `docs.json` to include it in the navigation
14
+ 3. Follow the existing format for consistency
15
+
16
+ ## Guidelines
17
+
18
+ Community content should:
19
+ - Demonstrate best practices
20
+ - Provide educational value
21
+ - Include proper documentation
22
+ - Be maintained and up-to-date
@@ -0,0 +1,59 @@
1
+ ---
2
+ title: 'Community Showcase'
3
+ description: 'High-quality projects and examples from the FastMCP community'
4
+ icon: 'users'
5
+ ---
6
+
7
+ import { YouTubeEmbed } from '/snippets/youtube-embed.mdx'
8
+
9
+ ## Featured Projects
10
+
11
+ Discover exemplary MCP servers and implementations created by our community. These projects demonstrate best practices and innovative uses of FastMCP.
12
+
13
+ ### Learning Resources
14
+
15
+ <Card title="MCP Dummy Server" icon="graduation-cap" href="https://github.com/WaiYanNyeinNaing/mcp-dummy-server">
16
+ A comprehensive educational example demonstrating FastMCP best practices with professional dual-transport server implementation, interactive test client, and detailed documentation.
17
+ </Card>
18
+
19
+ #### Video Tutorials
20
+
21
+ **Build Remote MCP Servers w/ Python & FastMCP** - Claude Integrations Tutorial by Greg + Code
22
+
23
+ <YouTubeEmbed
24
+ videoId="bOYkbXP-GGo"
25
+ title="Build Remote MCP Servers w/ Python & FastMCP"
26
+ />
27
+
28
+ **FastMCP — the best way to build an MCP server with Python** - Tutorial by ZazenCodes
29
+
30
+ <YouTubeEmbed
31
+ videoId="rnljvmHorQw"
32
+ title="FastMCP — the best way to build an MCP server with Python"
33
+ />
34
+
35
+ **Speedrun a MCP server for Claude Desktop (fastmcp)** - Tutorial by Nate from Prefect
36
+
37
+ <YouTubeEmbed
38
+ videoId="67ZwpkUEtSI"
39
+ title="Speedrun a MCP server for Claude Desktop (fastmcp)"
40
+ />
41
+
42
+ ### Community Examples
43
+
44
+ Have you built something interesting with FastMCP? We'd love to feature high-quality examples here! Start a [discussion on GitHub](https://github.com/jlowin/fastmcp/discussions) to share your project.
45
+
46
+ ## Contributing
47
+
48
+ To get your project featured:
49
+
50
+ 1. Ensure your project demonstrates best practices
51
+ 2. Include comprehensive documentation
52
+ 3. Add clear usage examples
53
+ 4. Open a discussion in our [GitHub Discussions](https://github.com/jlowin/fastmcp/discussions)
54
+
55
+ We review submissions regularly and feature projects that provide value to the FastMCP community.
56
+
57
+ ## Further Reading
58
+
59
+ - [Contrib Modules](/integrations/contrib) - Community-contributed modules that are distributed with FastMCP itself
@@ -132,12 +132,17 @@
132
132
  },
133
133
  {
134
134
  "anchor": "Tutorials",
135
- "icon": "graduation-cap",
136
- "pages": [
137
- "tutorials/mcp",
138
- "tutorials/create-mcp-server",
139
- "tutorials/rest-api"
140
- ]
135
+ "groups": [
136
+ {
137
+ "group": "MCP",
138
+ "pages": [
139
+ "tutorials/mcp",
140
+ "tutorials/create-mcp-server",
141
+ "tutorials/rest-api"
142
+ ]
143
+ }
144
+ ],
145
+ "icon": "graduation-cap"
141
146
  },
142
147
  {
143
148
  "anchor": "Changelog",
@@ -145,6 +150,13 @@
145
150
  "pages": [
146
151
  "changelog"
147
152
  ]
153
+ },
154
+ {
155
+ "anchor": "Community",
156
+ "icon": "users",
157
+ "pages": [
158
+ "community/showcase"
159
+ ]
148
160
  }
149
161
  ]
150
162
  },
@@ -25,11 +25,13 @@ if __name__ == "__main__":
25
25
 
26
26
  ## Beyond the Protocol
27
27
 
28
- FastMCP is the standard framework for working with the Model Context Protocol. FastMCP 1.0 was incorporated into the [official low-level Python SDK](https://github.com/modelcontextprotocol/python-sdk), and FastMCP 2.0 *(this project)* provides a complete toolkit for working with the MCP ecosystem.
28
+ FastMCP is the standard framework for working with the Model Context Protocol. FastMCP 1.0 was incorporated into the [official MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) in 2024.
29
29
 
30
- FastMCP has a comprehensive set of features that go far beyond the core MCP specification, all in service of providing **the simplest path to production**. These include client support, server composition, auth, automatic generation from OpenAPI specs, remote server proxying, built-in testing tools, integrations, and more.
30
+ This is FastMCP 2.0, the **actively maintained version** that provides a complete toolkit for working with the MCP ecosystem.
31
31
 
32
- Ready to upgrade or get started? Follow the [installation instructions](/getting-started/installation), which include specific steps for upgrading from the official MCP SDK.
32
+ FastMCP 2.0 has a comprehensive set of features that go far beyond the core MCP specification, all in service of providing **the simplest path to production**. These include deployment, auth, clients, server proxying and composition, generating servers from REST APIs, dynamic tool rewriting, built-in testing tools, integrations, and more.
33
+
34
+ Ready to upgrade or get started? Follow the [installation instructions](/getting-started/installation), which include steps for upgrading from the official MCP SDK.
33
35
 
34
36
 
35
37
  ## What is MCP?