fastmcp 2.12.5__py3-none-any.whl → 2.14.0__py3-none-any.whl

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 (133) hide show
  1. fastmcp/__init__.py +2 -23
  2. fastmcp/cli/__init__.py +0 -3
  3. fastmcp/cli/__main__.py +5 -0
  4. fastmcp/cli/cli.py +19 -33
  5. fastmcp/cli/install/claude_code.py +6 -6
  6. fastmcp/cli/install/claude_desktop.py +3 -3
  7. fastmcp/cli/install/cursor.py +18 -12
  8. fastmcp/cli/install/gemini_cli.py +3 -3
  9. fastmcp/cli/install/mcp_json.py +3 -3
  10. fastmcp/cli/install/shared.py +0 -15
  11. fastmcp/cli/run.py +13 -8
  12. fastmcp/cli/tasks.py +110 -0
  13. fastmcp/client/__init__.py +9 -9
  14. fastmcp/client/auth/oauth.py +123 -225
  15. fastmcp/client/client.py +697 -95
  16. fastmcp/client/elicitation.py +11 -5
  17. fastmcp/client/logging.py +18 -14
  18. fastmcp/client/messages.py +7 -5
  19. fastmcp/client/oauth_callback.py +85 -171
  20. fastmcp/client/roots.py +2 -1
  21. fastmcp/client/sampling.py +1 -1
  22. fastmcp/client/tasks.py +614 -0
  23. fastmcp/client/transports.py +117 -30
  24. fastmcp/contrib/component_manager/__init__.py +1 -1
  25. fastmcp/contrib/component_manager/component_manager.py +2 -2
  26. fastmcp/contrib/component_manager/component_service.py +10 -26
  27. fastmcp/contrib/mcp_mixin/README.md +32 -1
  28. fastmcp/contrib/mcp_mixin/__init__.py +2 -2
  29. fastmcp/contrib/mcp_mixin/mcp_mixin.py +14 -2
  30. fastmcp/dependencies.py +25 -0
  31. fastmcp/experimental/sampling/handlers/openai.py +3 -3
  32. fastmcp/experimental/server/openapi/__init__.py +20 -21
  33. fastmcp/experimental/utilities/openapi/__init__.py +16 -47
  34. fastmcp/mcp_config.py +3 -4
  35. fastmcp/prompts/__init__.py +1 -1
  36. fastmcp/prompts/prompt.py +54 -51
  37. fastmcp/prompts/prompt_manager.py +16 -101
  38. fastmcp/resources/__init__.py +5 -5
  39. fastmcp/resources/resource.py +43 -21
  40. fastmcp/resources/resource_manager.py +9 -168
  41. fastmcp/resources/template.py +161 -61
  42. fastmcp/resources/types.py +30 -24
  43. fastmcp/server/__init__.py +1 -1
  44. fastmcp/server/auth/__init__.py +9 -14
  45. fastmcp/server/auth/auth.py +197 -46
  46. fastmcp/server/auth/handlers/authorize.py +326 -0
  47. fastmcp/server/auth/jwt_issuer.py +236 -0
  48. fastmcp/server/auth/middleware.py +96 -0
  49. fastmcp/server/auth/oauth_proxy.py +1469 -298
  50. fastmcp/server/auth/oidc_proxy.py +91 -20
  51. fastmcp/server/auth/providers/auth0.py +40 -21
  52. fastmcp/server/auth/providers/aws.py +29 -3
  53. fastmcp/server/auth/providers/azure.py +312 -131
  54. fastmcp/server/auth/providers/debug.py +114 -0
  55. fastmcp/server/auth/providers/descope.py +86 -29
  56. fastmcp/server/auth/providers/discord.py +308 -0
  57. fastmcp/server/auth/providers/github.py +29 -8
  58. fastmcp/server/auth/providers/google.py +48 -9
  59. fastmcp/server/auth/providers/in_memory.py +29 -5
  60. fastmcp/server/auth/providers/introspection.py +281 -0
  61. fastmcp/server/auth/providers/jwt.py +48 -31
  62. fastmcp/server/auth/providers/oci.py +233 -0
  63. fastmcp/server/auth/providers/scalekit.py +238 -0
  64. fastmcp/server/auth/providers/supabase.py +188 -0
  65. fastmcp/server/auth/providers/workos.py +35 -17
  66. fastmcp/server/context.py +236 -116
  67. fastmcp/server/dependencies.py +503 -18
  68. fastmcp/server/elicitation.py +286 -48
  69. fastmcp/server/event_store.py +177 -0
  70. fastmcp/server/http.py +71 -20
  71. fastmcp/server/low_level.py +165 -2
  72. fastmcp/server/middleware/__init__.py +1 -1
  73. fastmcp/server/middleware/caching.py +476 -0
  74. fastmcp/server/middleware/error_handling.py +14 -10
  75. fastmcp/server/middleware/logging.py +50 -39
  76. fastmcp/server/middleware/middleware.py +29 -16
  77. fastmcp/server/middleware/rate_limiting.py +3 -3
  78. fastmcp/server/middleware/tool_injection.py +116 -0
  79. fastmcp/server/openapi/__init__.py +35 -0
  80. fastmcp/{experimental/server → server}/openapi/components.py +15 -10
  81. fastmcp/{experimental/server → server}/openapi/routing.py +3 -3
  82. fastmcp/{experimental/server → server}/openapi/server.py +6 -5
  83. fastmcp/server/proxy.py +72 -48
  84. fastmcp/server/server.py +1415 -733
  85. fastmcp/server/tasks/__init__.py +21 -0
  86. fastmcp/server/tasks/capabilities.py +22 -0
  87. fastmcp/server/tasks/config.py +89 -0
  88. fastmcp/server/tasks/converters.py +205 -0
  89. fastmcp/server/tasks/handlers.py +356 -0
  90. fastmcp/server/tasks/keys.py +93 -0
  91. fastmcp/server/tasks/protocol.py +355 -0
  92. fastmcp/server/tasks/subscriptions.py +205 -0
  93. fastmcp/settings.py +125 -113
  94. fastmcp/tools/__init__.py +1 -1
  95. fastmcp/tools/tool.py +138 -55
  96. fastmcp/tools/tool_manager.py +30 -112
  97. fastmcp/tools/tool_transform.py +12 -21
  98. fastmcp/utilities/cli.py +67 -28
  99. fastmcp/utilities/components.py +10 -5
  100. fastmcp/utilities/inspect.py +79 -23
  101. fastmcp/utilities/json_schema.py +4 -4
  102. fastmcp/utilities/json_schema_type.py +8 -8
  103. fastmcp/utilities/logging.py +118 -8
  104. fastmcp/utilities/mcp_config.py +1 -2
  105. fastmcp/utilities/mcp_server_config/__init__.py +3 -3
  106. fastmcp/utilities/mcp_server_config/v1/environments/base.py +1 -2
  107. fastmcp/utilities/mcp_server_config/v1/environments/uv.py +6 -6
  108. fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +5 -5
  109. fastmcp/utilities/mcp_server_config/v1/schema.json +3 -0
  110. fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -1
  111. fastmcp/{experimental/utilities → utilities}/openapi/README.md +7 -35
  112. fastmcp/utilities/openapi/__init__.py +63 -0
  113. fastmcp/{experimental/utilities → utilities}/openapi/director.py +14 -15
  114. fastmcp/{experimental/utilities → utilities}/openapi/formatters.py +5 -5
  115. fastmcp/{experimental/utilities → utilities}/openapi/json_schema_converter.py +7 -3
  116. fastmcp/{experimental/utilities → utilities}/openapi/parser.py +37 -16
  117. fastmcp/utilities/tests.py +92 -5
  118. fastmcp/utilities/types.py +86 -16
  119. fastmcp/utilities/ui.py +626 -0
  120. {fastmcp-2.12.5.dist-info → fastmcp-2.14.0.dist-info}/METADATA +24 -15
  121. fastmcp-2.14.0.dist-info/RECORD +156 -0
  122. {fastmcp-2.12.5.dist-info → fastmcp-2.14.0.dist-info}/WHEEL +1 -1
  123. fastmcp/cli/claude.py +0 -135
  124. fastmcp/server/auth/providers/bearer.py +0 -25
  125. fastmcp/server/openapi.py +0 -1083
  126. fastmcp/utilities/openapi.py +0 -1568
  127. fastmcp/utilities/storage.py +0 -204
  128. fastmcp-2.12.5.dist-info/RECORD +0 -134
  129. fastmcp/{experimental/server → server}/openapi/README.md +0 -0
  130. fastmcp/{experimental/utilities → utilities}/openapi/models.py +3 -3
  131. fastmcp/{experimental/utilities → utilities}/openapi/schemas.py +2 -2
  132. {fastmcp-2.12.5.dist-info → fastmcp-2.14.0.dist-info}/entry_points.txt +0 -0
  133. {fastmcp-2.12.5.dist-info → fastmcp-2.14.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastmcp
3
- Version: 2.12.5
3
+ Version: 2.14.0
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
@@ -14,24 +14,28 @@ Classifier: License :: OSI Approved :: Apache Software License
14
14
  Classifier: Programming Language :: Python :: 3.10
15
15
  Classifier: Programming Language :: Python :: 3.11
16
16
  Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
17
18
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
18
19
  Classifier: Typing :: Typed
19
20
  Requires-Python: >=3.10
20
- Requires-Dist: authlib>=1.5.2
21
- Requires-Dist: cyclopts>=3.0.0
21
+ Requires-Dist: authlib>=1.6.5
22
+ Requires-Dist: cyclopts>=4.0.0
22
23
  Requires-Dist: exceptiongroup>=1.2.2
23
24
  Requires-Dist: httpx>=0.28.1
24
- Requires-Dist: mcp<1.17.0,>=1.12.4
25
- Requires-Dist: openapi-core>=0.19.5
25
+ Requires-Dist: jsonschema-path>=0.3.4
26
+ Requires-Dist: mcp>=1.23.1
26
27
  Requires-Dist: openapi-pydantic>=0.5.1
28
+ Requires-Dist: platformdirs>=4.0.0
29
+ Requires-Dist: py-key-value-aio[disk,keyring,memory]<0.4.0,>=0.3.0
27
30
  Requires-Dist: pydantic[email]>=2.11.7
31
+ Requires-Dist: pydocket>=0.15.2
28
32
  Requires-Dist: pyperclip>=1.9.0
29
33
  Requires-Dist: python-dotenv>=1.1.0
30
34
  Requires-Dist: rich>=13.9.4
35
+ Requires-Dist: uvicorn>=0.35
36
+ Requires-Dist: websockets>=15.0.1
31
37
  Provides-Extra: openai
32
38
  Requires-Dist: openai>=1.102.0; extra == 'openai'
33
- Provides-Extra: websockets
34
- Requires-Dist: websockets>=15.0.1; extra == 'websockets'
35
39
  Description-Content-Type: text/markdown
36
40
 
37
41
  <div align="center">
@@ -51,6 +55,7 @@ Description-Content-Type: text/markdown
51
55
  *Made with ☕️ by [Prefect](https://www.prefect.io/)*
52
56
 
53
57
  [![Docs](https://img.shields.io/badge/docs-gofastmcp.com-blue)](https://gofastmcp.com)
58
+ [![Discord](https://img.shields.io/badge/community-discord-5865F2?logo=discord&logoColor=white)](https://discord.gg/uu8dJCgttd)
54
59
  [![PyPI - Version](https://img.shields.io/pypi/v/fastmcp.svg)](https://pypi.org/project/fastmcp)
55
60
  [![Tests](https://github.com/jlowin/fastmcp/actions/workflows/run-tests.yml/badge.svg)](https://github.com/jlowin/fastmcp/actions/workflows/run-tests.yml)
56
61
  [![License](https://img.shields.io/github/license/jlowin/fastmcp.svg)](https://github.com/jlowin/fastmcp/blob/main/LICENSE)
@@ -106,6 +111,8 @@ There are two ways to access the LLM-friendly documentation:
106
111
  - [`llms.txt`](https://gofastmcp.com/llms.txt) is essentially a sitemap, listing all the pages in the documentation.
107
112
  - [`llms-full.txt`](https://gofastmcp.com/llms-full.txt) contains the entire documentation. Note this may exceed the context window of your LLM.
108
113
 
114
+ **Community:** Join our [Discord server](https://discord.gg/uu8dJCgttd) to connect with other FastMCP developers and share what you're building.
115
+
109
116
  ---
110
117
 
111
118
  <!-- omit in toc -->
@@ -176,6 +183,8 @@ uv pip install fastmcp
176
183
 
177
184
  For full installation instructions, including verification, upgrading from the official MCPSDK, and developer setup, see the [**Installation Guide**](https://gofastmcp.com/getting-started/installation).
178
185
 
186
+ **Dependency Licensing:** FastMCP depends on Cyclopts for CLI functionality. Cyclopts v4 includes docutils as a transitive dependency, which has complex licensing that may trigger compliance reviews in some organizations. If this is a concern, you can install Cyclopts v5 alpha (`pip install "cyclopts>=5.0.0a1"`) which removes this dependency, or wait for the stable v5 release. See [this issue](https://github.com/BrianPugh/cyclopts/issues/672) for details.
187
+
179
188
  ## Core Concepts
180
189
 
181
190
  These are the building blocks for creating MCP servers and clients with FastMCP.
@@ -191,7 +200,7 @@ from fastmcp import FastMCP
191
200
  mcp = FastMCP(name="MyAssistantServer")
192
201
  ```
193
202
 
194
- Learn more in the [**FastMCP Server Documentation**](https://gofastmcp.com/servers/fastmcp).
203
+ Learn more in the [**FastMCP Server Documentation**](https://gofastmcp.com/servers/server).
195
204
 
196
205
  ### Tools
197
206
 
@@ -244,7 +253,6 @@ Access MCP session capabilities within your tools, resources, or prompts by addi
244
253
 
245
254
  - **Logging:** Log messages to MCP clients with `ctx.info()`, `ctx.error()`, etc.
246
255
  - **LLM Sampling:** Use `ctx.sample()` to request completions from the client's LLM.
247
- - **HTTP Request:** Use `ctx.http_request()` to make HTTP requests to other servers.
248
256
  - **Resource Access:** Use `ctx.read_resource()` to access resources on the server
249
257
  - **Progress Reporting:** Use `ctx.report_progress()` to report progress to the client.
250
258
  - and more...
@@ -348,13 +356,14 @@ FastMCP provides comprehensive authentication support that sets it apart from ba
348
356
  - **Auth0**
349
357
  - **WorkOS**
350
358
  - **Descope**
359
+ - **Discord**
351
360
  - **JWT/Custom**
352
361
  - **API Keys**
353
362
 
354
363
  Protecting a server takes just two lines:
355
364
 
356
365
  ```python
357
- from fastmcp.server.auth import GoogleProvider
366
+ from fastmcp.server.auth.providers.google import GoogleProvider
358
367
 
359
368
  auth = GoogleProvider(client_id="...", client_secret="...", base_url="https://myserver.com")
360
369
  mcp = FastMCP("Protected Server", auth=auth)
@@ -515,20 +524,20 @@ uv run pytest --cov=src --cov=examples --cov-report=html
515
524
 
516
525
  ### Static Checks
517
526
 
518
- FastMCP uses `pre-commit` for code formatting, linting, and type-checking. All PRs must pass these checks (they run automatically in CI).
527
+ FastMCP uses `prek` for code formatting, linting, and type-checking. All PRs must pass these checks (they run automatically in CI).
519
528
 
520
529
  Install the hooks locally:
521
530
 
522
531
  ```bash
523
- uv run pre-commit install
532
+ uv run prek install
524
533
  ```
525
534
 
526
535
  The hooks will now run automatically on `git commit`. You can also run them manually at any time:
527
536
 
528
537
  ```bash
529
- pre-commit run --all-files
538
+ prek run --all-files
530
539
  # or via uv
531
- uv run pre-commit run --all-files
540
+ uv run prek run --all-files
532
541
  ```
533
542
 
534
543
  ### Pull Requests
@@ -536,7 +545,7 @@ uv run pre-commit run --all-files
536
545
  1. Fork the repository on GitHub.
537
546
  2. Create a feature branch from `main`.
538
547
  3. Make your changes, including tests and documentation updates.
539
- 4. Ensure tests and pre-commit hooks pass.
548
+ 4. Ensure tests and prek hooks pass.
540
549
  5. Commit your changes and push to your fork.
541
550
  6. Open a pull request against the `main` branch of `jlowin/fastmcp`.
542
551
 
@@ -0,0 +1,156 @@
1
+ fastmcp/__init__.py,sha256=aArtRHXrBhV3SDPbgjJ7Tm6dI2V9waLH3M4xpGTSmPw,827
2
+ fastmcp/dependencies.py,sha256=Un5S30WHJbAiIdjVjEeaQC7UcEVEkkyjf4EF7l4FYq0,513
3
+ fastmcp/exceptions.py,sha256=-krEavxwddQau6T7MESCR4VjKNLfP9KHJrU1p3y72FU,744
4
+ fastmcp/mcp_config.py,sha256=YXZ0piljrxFgPYEwYSwPw6IiPwU3Cwp2VzlT9CWxutc,11397
5
+ fastmcp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ fastmcp/settings.py,sha256=565ICavv2ms1lCvGV4XS6VXIYJZyB0os3Ifsr03A6YA,13307
7
+ fastmcp/cli/__init__.py,sha256=Bo7WQWPBRQ6fqbYYPfbadefpXgl2h9gkdMaqTazGWyw,49
8
+ fastmcp/cli/__main__.py,sha256=cGU_smvfctQI9xEY13u7tTEwwUI4AUieikXXA7ykYhA,69
9
+ fastmcp/cli/cli.py,sha256=HQ7MpR_7sB-bgQKG1XOd8epS2RIv_CqdYdHT8mZLszI,28242
10
+ fastmcp/cli/run.py,sha256=HeaiHYcVY17JpHg4UjnIHkP5ttU0PNd1bZIL3brif8A,7047
11
+ fastmcp/cli/tasks.py,sha256=B57vy76d3ybdi4wmlODRCCFrte1GmhLKqYixzRkGUuw,3791
12
+ fastmcp/cli/install/__init__.py,sha256=FUrwjMVaxONgz1qO7suzJNz1xosRfR3TOHlr3Z77JXA,797
13
+ fastmcp/cli/install/claude_code.py,sha256=vGv8hbMUM6p5uQ1scy6E7Qxn0BZ2_INATF0xmSl5QWQ,7617
14
+ fastmcp/cli/install/claude_desktop.py,sha256=aX_BrH5ODEN6UPHdw-Gnh0r5g8TojvTA7trqQRCEdAw,6832
15
+ fastmcp/cli/install/cursor.py,sha256=0qSkKp4JuZj2dGOAsPph9XS_LswV8rQ8CqAuEx7TNhA,10685
16
+ fastmcp/cli/install/gemini_cli.py,sha256=G7NhKnH21893baQjmVbFpwRyMbYIq7bocPQz1CBUH_8,7630
17
+ fastmcp/cli/install/mcp_json.py,sha256=l7b0sWB10YlbcXtcwJv1X2iHEP9V9EwuuD63PyTMvXI,5832
18
+ fastmcp/cli/install/shared.py,sha256=Qf5VH0b6l66yyBzDYtZwbbESUDYn6k5oyb6u-xepPTI,4447
19
+ fastmcp/client/__init__.py,sha256=QHvSGJCLejQkQ4o070vsUdKNB8vUhxckBByvHjnteTQ,663
20
+ fastmcp/client/client.py,sha256=5TlUA6O3W1r0sLS19MHyVkK-GsWdNL2rzdbsyCCKFVw,59717
21
+ fastmcp/client/elicitation.py,sha256=KlLvZn4FpwC5S5iXNq79mtqtbrtUjXyked-l-pZk6js,2878
22
+ fastmcp/client/logging.py,sha256=WBByRoBIB-Bl3ZUJVFvHqRt4teYPAvqC8MnJ358Elg8,1939
23
+ fastmcp/client/messages.py,sha256=g85Qca7aiMQLt4E4PwzUoLK6EIS8UM9j2qNwOEHjy0M,4636
24
+ fastmcp/client/oauth_callback.py,sha256=3xqL5_HD1QS9eGfw31HzoVF94QQelq_0TTqS7qWDlQQ,7709
25
+ fastmcp/client/progress.py,sha256=WjLLDbUKMsx8DK-fqO7AGsXb83ak-6BMrLvzzznGmcI,1043
26
+ fastmcp/client/roots.py,sha256=Uap1RSr3uEeQRZTHkEttkhTI2fOA8IeDcRSggtZp9aY,2568
27
+ fastmcp/client/sampling.py,sha256=MEXgywI46X-E78gCLCKEiQ14iu4uQqohLav-MNCtD_U,1819
28
+ fastmcp/client/tasks.py,sha256=EnWOa69Jw1MYkuf_rzFrhZlfCUpSFjiD7DkAoOlALSs,21653
29
+ fastmcp/client/transports.py,sha256=9WfOVMzLdYQqFcZ1cE2oR0KAp1XeOZ5hQNOhARkPl5s,42342
30
+ fastmcp/client/auth/__init__.py,sha256=4DNsfp4iaQeBcpds0JDdMn6Mmfud44stWLsret0sVKY,91
31
+ fastmcp/client/auth/bearer.py,sha256=MFEFqcH6u_V86msYiOsEFKN5ks1V9BnBNiPsPLHUTqo,399
32
+ fastmcp/client/auth/oauth.py,sha256=8B1HTPoPhEFQUZBfuhR6jqq4CHu6BDATVowC3ayZmg8,12513
33
+ fastmcp/contrib/README.md,sha256=rKknYSI1T192UvSszqwwDlQ2eYQpxywrNTLoj177SYU,878
34
+ fastmcp/contrib/bulk_tool_caller/README.md,sha256=5aUUY1TSFKtz1pvTLSDqkUCkGkuqMfMZNsLeaNqEgAc,1960
35
+ fastmcp/contrib/bulk_tool_caller/__init__.py,sha256=xvGSSaUXTQrc31erBoi1Gh7BikgOliETDiYVTP3rLxY,75
36
+ fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py,sha256=2NcrGS59qvHo1lfbRaT8NSWfCxN66knciLxFvnGwCLY,4165
37
+ fastmcp/contrib/bulk_tool_caller/example.py,sha256=6og_8pCJN_CabworC5R82zPAwwwM-W7HNJLQQSnS3lU,319
38
+ fastmcp/contrib/component_manager/README.md,sha256=sTan1D51jzkPNnCQTxwd5JXGzWVy4DtkUjrUfNH3-F0,4457
39
+ fastmcp/contrib/component_manager/__init__.py,sha256=9xu58ftB0Aqd5RymZgnkJMH9rTHBcrO6iMQX9qdEy3s,164
40
+ fastmcp/contrib/component_manager/component_manager.py,sha256=lS2KDsx_W6GDncWx6NhVNhg1X0TeGwQHWqP5PzlDPRM,6424
41
+ fastmcp/contrib/component_manager/component_service.py,sha256=hFW32Ti6RmYlEqL4FEIYCC1FyqMUkL7tOiJ8gay8cLg,8236
42
+ fastmcp/contrib/component_manager/example.py,sha256=N16OIHmQuR-LNEv7bkrv2rGdMs862Nc3AKKEPfw-6rU,1587
43
+ fastmcp/contrib/mcp_mixin/README.md,sha256=f6ine6z9kuEx1qKhY9jzrH6sAwj1oWpXcLXGvK0GMVk,5404
44
+ fastmcp/contrib/mcp_mixin/__init__.py,sha256=zZFHlAGexUJCDLAg4p7CGZDmb-mgPdN1xVv0tR4mg7I,153
45
+ fastmcp/contrib/mcp_mixin/example.py,sha256=GnunkXmtG5hLLTUsM8aW5ZURU52Z8vI4tNLl-fK7Dg0,1228
46
+ fastmcp/contrib/mcp_mixin/mcp_mixin.py,sha256=Ij009tiJBj1Lciz4abTICA1Il-kz_myr4aevQ4yGTNo,10582
47
+ fastmcp/experimental/sampling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
+ fastmcp/experimental/sampling/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
+ fastmcp/experimental/sampling/handlers/base.py,sha256=mCPFj9ETc-Ro38R_pzx9rHVM2_EADCecScMkNWd6Tbs,714
50
+ fastmcp/experimental/sampling/handlers/openai.py,sha256=r7FUUL6fGHkYxsgFS44MyMxnaCrEYOYt9V98O_bjbyQ,5752
51
+ fastmcp/experimental/server/openapi/__init__.py,sha256=QNrM6ZNwJLk78jh7hq1tdZ-WnZLQ0KHd-7hjQgYeMqw,817
52
+ fastmcp/experimental/utilities/openapi/__init__.py,sha256=-SIYFQ4CE9MTxKQbksQ4J3lwm409EV3qKkHuTwAEyNk,907
53
+ fastmcp/prompts/__init__.py,sha256=BQ5ooDJcNhb5maYBcg2mF1VaHAY_A64cEU3UiCQ3Lw8,179
54
+ fastmcp/prompts/prompt.py,sha256=Rc8IOKXNI-5_3en_cw_Ej7LVV49oFTn_0EUxlRScjPw,14483
55
+ fastmcp/prompts/prompt_manager.py,sha256=5ZyT0blp5owuaN5pz_TQsyH6zUGFoUiVTGfiEnqBuj8,4262
56
+ fastmcp/resources/__init__.py,sha256=si8aT_9taxUNN0vkfbifst_SCId56DZmYi4YOb4mtlE,463
57
+ fastmcp/resources/resource.py,sha256=uDzQFPzELpmyEC2FirwuhfTxLkog0nKmMmWtGOb-67U,7890
58
+ fastmcp/resources/resource_manager.py,sha256=R-dtlhCYHcH1bnGuD0QW5aRUo_12_NeLkn9VLp4xmmU,13308
59
+ fastmcp/resources/template.py,sha256=SJiiWBiZVspUxfzovaDlQZpVwoUcENgUWT7UGXLUwxU,15495
60
+ fastmcp/resources/types.py,sha256=efFLGD1Xc5Xq3sxlPaZ_8gtJ2UOixueTBV4KQTi4cOU,4936
61
+ fastmcp/server/__init__.py,sha256=qxNmIJcqsrpxpUvCv0mhdEAaUn1UZd1xLd8XRoWUlfY,119
62
+ fastmcp/server/context.py,sha256=jQtDvn9IjxtYnzmDBnlpDAYMLYSn0efNy4QU6ww-HaY,28153
63
+ fastmcp/server/dependencies.py,sha256=7As8f1yRIQI0dSDpLVfSCPMXxaPuhUrDvNpxwjSG6W0,20643
64
+ fastmcp/server/elicitation.py,sha256=jmrLb_yzdmM9hVRxOYlC4aWnlCBCayuzVOs7--sByxU,17862
65
+ fastmcp/server/event_store.py,sha256=ZiBbrUQHw9--G8lzK1qLZmUAF2le2XchFen4pGbFKsE,6170
66
+ fastmcp/server/http.py,sha256=_HjMSYWH8mfKugDODU4iV0AhKDU2VRc40tS56L6i-_s,12737
67
+ fastmcp/server/low_level.py,sha256=o3jDf5SuZBQeurhLWRzaSVCnvrmaKMH_w-TbHk6BuZ4,7963
68
+ fastmcp/server/proxy.py,sha256=nG1ntmD9PpTbWpyY3Gn26vPpIcmjbEcoG3TlbYxeBB4,26855
69
+ fastmcp/server/server.py,sha256=BSh0AoOtFElhYxWZ1_ei2CdOHvn7hcHFQwpYShmdUWw,120764
70
+ fastmcp/server/auth/__init__.py,sha256=MTZvDKEUMqjs9-raRN0h8Zjx8pWFXs_iSRbB1UqBUqU,527
71
+ fastmcp/server/auth/auth.py,sha256=6FIjQLhQ-ps58o05nrOi5pyD1OmM0fANrV-M79Jb7do,19775
72
+ fastmcp/server/auth/jwt_issuer.py,sha256=lJYvrpC1ygI4jkoJlL_nTH6m7FKdTw2lbEycKo4eHLY,7197
73
+ fastmcp/server/auth/middleware.py,sha256=xwj3fUCLSlJK6n1Ehp-FN1qnjKqEz8b7LGAGMTqQ8Hk,3284
74
+ fastmcp/server/auth/oauth_proxy.py,sha256=Kk09KEK5YwZ2TnVbevqo0WuflBNz5kwWbOXq2St6itE,90694
75
+ fastmcp/server/auth/oidc_proxy.py,sha256=gU_RgBbVMj-9vn0TSRTmT1YaT19VFmJLpARcIXn208k,17969
76
+ fastmcp/server/auth/redirect_validation.py,sha256=Jlhela9xpTbw4aWnQ04A5Z-TW0HYOC3f9BMsq3NXx1Q,2000
77
+ fastmcp/server/auth/handlers/authorize.py,sha256=1zrmXqRUhjiWSHgUhfj0CcCkj3uSlGkTnxHzaic0xYs,11617
78
+ fastmcp/server/auth/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
+ fastmcp/server/auth/providers/auth0.py,sha256=dZkc7hppii20YWota_6_Y3vdNw-DZSq0OyModbly-RA,7814
80
+ fastmcp/server/auth/providers/aws.py,sha256=MXoEEnXmeIlRjaHqTeNCmJ90iTx9jwUdEdpyLUmzfIc,10852
81
+ fastmcp/server/auth/providers/azure.py,sha256=Lq949keq4-AC7AR6Dbn5caEim5XOAK3WpnB-GmRPLtY,20891
82
+ fastmcp/server/auth/providers/debug.py,sha256=92erHZGQB1ATsl6PwrXui6h3WJ4wLxE9ACbI3JutmWY,3881
83
+ fastmcp/server/auth/providers/descope.py,sha256=y3PX3RmEL-JzHktKUbRW25QPZ7AVMGh579Pwgmr9P3k,9551
84
+ fastmcp/server/auth/providers/discord.py,sha256=AK7WRydWNnXAUWnFeYUqgcdqsGkwFfcKZcyZMuOQcUw,12616
85
+ fastmcp/server/auth/providers/github.py,sha256=xsv-Qj1VJRc64YcRuUG4a61xFH1nqqVX_biC7B1su9U,12414
86
+ fastmcp/server/auth/providers/google.py,sha256=BAw3XfB8fE2zr80OZUP-bZBnlHRmZQGuvmoVFgW5D1E,14723
87
+ fastmcp/server/auth/providers/in_memory.py,sha256=VjEQq8sEyPT0BQbjrOvriM0PY_HNd_YK1HbkrprVqyI,15496
88
+ fastmcp/server/auth/providers/introspection.py,sha256=v2hlcuxxwug5myCr4KcTZlawwazAWYVHuRb0d3er13w,10733
89
+ fastmcp/server/auth/providers/jwt.py,sha256=c-2Wji-CvuYt3U3unxjJR-5-EABRDks_755EpxKBDH8,20798
90
+ fastmcp/server/auth/providers/oci.py,sha256=QxpsStKEyl_W4dcJOky4m6wdpGnCSnt7WQ8DWjGPmSU,9894
91
+ fastmcp/server/auth/providers/scalekit.py,sha256=30J2HImUAkyknMgH7lUGytcDOy4d01ClxTrBCO4E3GQ,9064
92
+ fastmcp/server/auth/providers/supabase.py,sha256=9aK9fZ2OtccOF-ittMJnwj6sEzUNUTIrRPWAPLMwCac,7321
93
+ fastmcp/server/auth/providers/workos.py,sha256=_KWsgKPV4OJ6a37FaVgq2LIzM3Nx26G5QQhgS8x2MO4,17244
94
+ fastmcp/server/middleware/__init__.py,sha256=LXT2IcZI4gbAtR4TnA7v_1lOWBR6eaHiE3Cp32Pv0bc,155
95
+ fastmcp/server/middleware/caching.py,sha256=xYUXkFeuoLaIJ_TB2570qEBS1TtneJClJOpJGNsNbu8,18414
96
+ fastmcp/server/middleware/error_handling.py,sha256=eSMKrmIxDcnhzLGyOL49hup5k5e0iwvH_n2XVxJ69W8,7726
97
+ fastmcp/server/middleware/logging.py,sha256=Reta-f4z8suYkJn4rPyJWYrNBeU25w8Y40U0uaV9ygo,9427
98
+ fastmcp/server/middleware/middleware.py,sha256=-L4QuyyjIF1QIcydWzamrmpIE2w7d2f35-QyoXMZnZM,6643
99
+ fastmcp/server/middleware/rate_limiting.py,sha256=MwhMOhgsIhZjYwEQB8H8961hohV5564JlTwwYy_9ctU,7915
100
+ fastmcp/server/middleware/timing.py,sha256=lL_xc-ErLD5lplfvd5-HIyWEbZhgNBYkcQ74KFXAMkA,5591
101
+ fastmcp/server/middleware/tool_injection.py,sha256=zElqBN-yjZvcTADp57e0dn86kpxT9xsFqvYztiXuA08,3595
102
+ fastmcp/server/openapi/README.md,sha256=1Mc1Ur15OxMn-wAPEa1rZIiNNSMdv9sboQ3YpvNpUXM,9886
103
+ fastmcp/server/openapi/__init__.py,sha256=cZPebMY9xwjW8nUgTN5MvawnZEFx9E0Oe_TFqSrevp0,728
104
+ fastmcp/server/openapi/components.py,sha256=lHT3AJUKDt68-x7RpErP2ePLJp12HKKUn1VWq5TU6Ss,13346
105
+ fastmcp/server/openapi/routing.py,sha256=_WWci6GNqtfF-5yO-uHwXXc9nNFNV-YlbIWHa7-lCk4,4018
106
+ fastmcp/server/openapi/server.py,sha256=aQ_VwvHxdsC-O-7k_uKmPDkOlcgtOW-gk-RtlLtEtuw,16069
107
+ fastmcp/server/sampling/handler.py,sha256=yjLzvxlGllE-EY4bc6djsijEmwMT24PCpV6vJl-sPcI,580
108
+ fastmcp/server/tasks/__init__.py,sha256=VizXvmXgA3SvrApQ6PSz4z1TPA9B6uROvmWeGSYOJ0I,530
109
+ fastmcp/server/tasks/capabilities.py,sha256=-8QMBjs6HZuQdUNmOrNEBvJs-opGptIyxOODU0TGGFE,574
110
+ fastmcp/server/tasks/config.py,sha256=msPkUuxnZKuqSj21Eh8m5Cwq0htwUzTCeoWsnbvKGkk,3006
111
+ fastmcp/server/tasks/converters.py,sha256=gDEYtf0MD2ypyR1gdyweHM5LdS3-wTsQaiCrsSDIOyY,6640
112
+ fastmcp/server/tasks/handlers.py,sha256=8wiDiP6tHj8E3iMEIpjZmoiY_k1wgQg-F59KwGk56X8,12489
113
+ fastmcp/server/tasks/keys.py,sha256=w9diycj0N6ViVqe6stxUS9vg2H94bl_614Bu5kNRM-k,3011
114
+ fastmcp/server/tasks/protocol.py,sha256=g97D4k1U8ua_UBTyoqFXcPp5rf6KvuiY5d6mx5KMIPY,12222
115
+ fastmcp/server/tasks/subscriptions.py,sha256=iehPO2zx80aRIqKHCFj9kuR5NVMqYSkIepMXBifQFWw,6692
116
+ fastmcp/tools/__init__.py,sha256=XGcaMkBgwr-AHzbNjyjdb3ATgp5TQ0wzSq0nsrBD__E,201
117
+ fastmcp/tools/tool.py,sha256=Ouu-Z7ieGMv3xJ1eU4Et_Flfypglhgsr8iXHmVAFn60,23272
118
+ fastmcp/tools/tool_manager.py,sha256=pCQGvKimXYEigcUqRHBd6_mbfJwD2KN3i0SmFj9Fj_c,5913
119
+ fastmcp/tools/tool_transform.py,sha256=m1XDYuu_BDPxpH3yRNdT3jCca9KmVSO-Jd00BK4F5rw,38099
120
+ fastmcp/utilities/__init__.py,sha256=-imJ8S-rXmbXMWeDamldP-dHDqAPg_wwmPVz-LNX14E,31
121
+ fastmcp/utilities/auth.py,sha256=ZVHkNb4YBpLE1EmmFyhvFB2qfWDZdEYNH9TRI9jylOE,1140
122
+ fastmcp/utilities/cli.py,sha256=46gyOddE8kWhUV2lHFM7kA2v0YNyzcajvIX3Db8gJXk,12174
123
+ fastmcp/utilities/components.py,sha256=fF4M9cdqbZTlDAZ0hltcTTg_8IU2jNSzOyH4oqH49ig,6087
124
+ fastmcp/utilities/exceptions.py,sha256=7Z9j5IzM5rT27BC1Mcn8tkS-bjqCYqMKwb2MMTaxJYU,1350
125
+ fastmcp/utilities/http.py,sha256=1ns1ymBS-WSxbZjGP6JYjSO52Wa_ls4j4WbnXiupoa4,245
126
+ fastmcp/utilities/inspect.py,sha256=3wYUuQH1xCCCdzZwALHNqaRABH6iqpA43dIXEhqVb5Q,18030
127
+ fastmcp/utilities/json_schema.py,sha256=-XjtAVzCaaJ_S-HoWo7Aabvlu8ubBqyoOinm9E85F4o,8888
128
+ fastmcp/utilities/json_schema_type.py,sha256=5cf1ZeHzqirrGx62kznqmgAWk0uCc29REVKcDRBeJX0,22348
129
+ fastmcp/utilities/logging.py,sha256=61wVk5yQ62km3K8kZtkKtT_3EN26VL85GYW0aMtnwKA,7175
130
+ fastmcp/utilities/mcp_config.py,sha256=lVllZtAXZ3Zy78D40aXN-S5fs-ms0lgryL1tY2WzwCY,1783
131
+ fastmcp/utilities/tests.py,sha256=VIsYPpk07tXvE02yK_neBUeZgu5YtbUlK6JJNzU-6lQ,9229
132
+ fastmcp/utilities/types.py,sha256=7c56m736JjbKY-YP7RLWPZcsW5Z7mikpByKaDQ5IJwg,17586
133
+ fastmcp/utilities/ui.py,sha256=gcnha7Vj4xEBxdrS83EZlKpN_43AQzcgiZFEvkTqzqg,14252
134
+ fastmcp/utilities/mcp_server_config/__init__.py,sha256=hHBxEwRsrgN0Q-1bvj28X6UVGDpfG6dt3yfSBGsOY80,791
135
+ fastmcp/utilities/mcp_server_config/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
136
+ fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py,sha256=1B3J7sRR0GcOW6FcSNNTTTOtEePNhUKc7Y0xEDk-wao,15497
137
+ fastmcp/utilities/mcp_server_config/v1/schema.json,sha256=ymDNFOWzcpnhIMeJmVPTw9b-NtHoHoru8Mc0WlSVxUY,8602
138
+ fastmcp/utilities/mcp_server_config/v1/environments/__init__.py,sha256=Tkv0dmJ6tKKotOBo-tho09QVdvEjy37iBsvBbEwH0EA,256
139
+ fastmcp/utilities/mcp_server_config/v1/environments/base.py,sha256=fbC1C25jI1whwXLlIQtmji5B4UEHLgKvw5K8NICb33Y,826
140
+ fastmcp/utilities/mcp_server_config/v1/environments/uv.py,sha256=DPVAXM5JDTN89wOSQsFnww4khRfNphXY2yzVeiKicNg,9755
141
+ fastmcp/utilities/mcp_server_config/v1/sources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
142
+ fastmcp/utilities/mcp_server_config/v1/sources/base.py,sha256=Y5MCxJyoDsaxcBN1zDL0CZtF5oAXxT_yqQOI-ze9b34,967
143
+ fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py,sha256=eFX47XNXz2oKHW8MZvx60dqyHkBxdg2FMOrHcyAS28g,8106
144
+ fastmcp/utilities/openapi/README.md,sha256=pcxMeSIHUmuhXHRYV7GOuMUZtw9QBv-rowQIDqmkab8,7657
145
+ fastmcp/utilities/openapi/__init__.py,sha256=6FTQyP-kWvFg5Ykq53j7byBhPuysOyMYSrFTdUAKeO0,1592
146
+ fastmcp/utilities/openapi/director.py,sha256=bsK5W8-vdydbB85xMLy5WsQJewnObXaDrtAIS5HdKjY,7956
147
+ fastmcp/utilities/openapi/formatters.py,sha256=AWyETOfnBmTUcD1T2ajfkbsVyyMnN4tZ-U34hFScWqI,15546
148
+ fastmcp/utilities/openapi/json_schema_converter.py,sha256=PxaYpgHBsdDTT0XSP6s4RZBMeDpAO_-dRXlBF2iYD9s,13089
149
+ fastmcp/utilities/openapi/models.py,sha256=-kfndwZSe92tVtKAgOuFn5rk1tN7oydCZKtLOEMEalA,2805
150
+ fastmcp/utilities/openapi/parser.py,sha256=qsa68Ro1c8ov77kdEP20IwZqD74E4IGKjtfeIkn3HdE,34338
151
+ fastmcp/utilities/openapi/schemas.py,sha256=84nPtnOlfjNoFGDoVoWLs0dh_7Ps92p3AuHgpVA5a-s,23349
152
+ fastmcp-2.14.0.dist-info/METADATA,sha256=Jte7HhFdX33G_bDG7Ose0xDSzGr7TTS7OrjdRn5ddMY,20536
153
+ fastmcp-2.14.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
154
+ fastmcp-2.14.0.dist-info/entry_points.txt,sha256=ff8bMtKX1JvXyurMibAacMSKbJEPmac9ffAKU9mLnM8,44
155
+ fastmcp-2.14.0.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
156
+ fastmcp-2.14.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.27.0
2
+ Generator: hatchling 1.28.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
fastmcp/cli/claude.py DELETED
@@ -1,135 +0,0 @@
1
- """Claude app integration utilities."""
2
-
3
- import json
4
- import os
5
- import sys
6
- from pathlib import Path
7
- from typing import Any
8
-
9
- from fastmcp.utilities.logging import get_logger
10
- from fastmcp.utilities.mcp_server_config.v1.environments.uv import UVEnvironment
11
-
12
- logger = get_logger(__name__)
13
-
14
-
15
- def get_claude_config_path() -> Path | None:
16
- """Get the Claude config directory based on platform."""
17
- if sys.platform == "win32":
18
- path = Path(Path.home(), "AppData", "Roaming", "Claude")
19
- elif sys.platform == "darwin":
20
- path = Path(Path.home(), "Library", "Application Support", "Claude")
21
- elif sys.platform.startswith("linux"):
22
- path = Path(
23
- os.environ.get("XDG_CONFIG_HOME", Path.home() / ".config"), "Claude"
24
- )
25
- else:
26
- return None
27
-
28
- if path.exists():
29
- return path
30
- return None
31
-
32
-
33
- def update_claude_config(
34
- file_spec: str,
35
- server_name: str,
36
- *,
37
- with_editable: list[Path] | None = None,
38
- with_packages: list[str] | None = None,
39
- env_vars: dict[str, str] | None = None,
40
- ) -> bool:
41
- """Add or update a FastMCP server in Claude's configuration.
42
-
43
- Args:
44
- file_spec: Path to the server file, optionally with :object suffix
45
- server_name: Name for the server in Claude's config
46
- with_editable: Optional list of directories to install in editable mode
47
- with_packages: Optional list of additional packages to install
48
- env_vars: Optional dictionary of environment variables. These are merged with
49
- any existing variables, with new values taking precedence.
50
-
51
- Raises:
52
- RuntimeError: If Claude Desktop's config directory is not found, indicating
53
- Claude Desktop may not be installed or properly set up.
54
- """
55
- config_dir = get_claude_config_path()
56
- if not config_dir:
57
- raise RuntimeError(
58
- "Claude Desktop config directory not found. Please ensure Claude Desktop"
59
- " is installed and has been run at least once to initialize its config."
60
- )
61
-
62
- config_file = config_dir / "claude_desktop_config.json"
63
- if not config_file.exists():
64
- try:
65
- config_file.write_text("{}")
66
- except Exception as e:
67
- logger.error(
68
- "Failed to create Claude config file",
69
- extra={
70
- "error": str(e),
71
- "config_file": str(config_file),
72
- },
73
- )
74
- return False
75
-
76
- try:
77
- config = json.loads(config_file.read_text())
78
- if "mcpServers" not in config:
79
- config["mcpServers"] = {}
80
-
81
- # Always preserve existing env vars and merge with new ones
82
- if (
83
- server_name in config["mcpServers"]
84
- and "env" in config["mcpServers"][server_name]
85
- ):
86
- existing_env = config["mcpServers"][server_name]["env"]
87
- if env_vars:
88
- # New vars take precedence over existing ones
89
- env_vars = {**existing_env, **env_vars}
90
- else:
91
- env_vars = existing_env
92
-
93
- env_config = UVEnvironment(
94
- dependencies=(with_packages or []) + ["fastmcp"],
95
- editable=[str(p) for p in with_editable] if with_editable else None,
96
- )
97
-
98
- # Convert file path to absolute before adding to command
99
- # Split off any :object suffix first
100
- if ":" in file_spec:
101
- file_path, server_object = file_spec.rsplit(":", 1)
102
- file_spec = f"{Path(file_path).resolve()}:{server_object}"
103
- else:
104
- file_spec = str(Path(file_spec).resolve())
105
-
106
- # Build the full command
107
- full_command = env_config.build_command(["fastmcp", "run", file_spec])
108
-
109
- # Extract command and args for the config
110
- server_config: dict[str, Any] = {
111
- "command": full_command[0],
112
- "args": full_command[1:],
113
- }
114
-
115
- # Add environment variables if specified
116
- if env_vars:
117
- server_config["env"] = env_vars
118
-
119
- config["mcpServers"][server_name] = server_config
120
-
121
- config_file.write_text(json.dumps(config, indent=2))
122
- logger.info(
123
- f"Added server '{server_name}' to Claude config",
124
- extra={"config_file": str(config_file)},
125
- )
126
- return True
127
- except Exception as e:
128
- logger.error(
129
- "Failed to update Claude config",
130
- extra={
131
- "error": str(e),
132
- "config_file": str(config_file),
133
- },
134
- )
135
- return False
@@ -1,25 +0,0 @@
1
- """Backwards compatibility shim for BearerAuthProvider.
2
-
3
- The BearerAuthProvider class has been moved to fastmcp.server.auth.providers.jwt.JWTVerifier
4
- for better organization. This module provides a backwards-compatible import.
5
- """
6
-
7
- import warnings
8
-
9
- import fastmcp
10
- from fastmcp.server.auth.providers.jwt import JWKData, JWKSData, RSAKeyPair
11
- from fastmcp.server.auth.providers.jwt import JWTVerifier as BearerAuthProvider
12
-
13
- # Re-export for backwards compatibility
14
- __all__ = ["BearerAuthProvider", "RSAKeyPair", "JWKData", "JWKSData"]
15
-
16
- # Deprecated in 2.11
17
- if fastmcp.settings.deprecation_warnings:
18
- warnings.warn(
19
- "The `fastmcp.server.auth.providers.bearer` module is deprecated "
20
- "and will be removed in a future version. "
21
- "Please use `fastmcp.server.auth.providers.jwt.JWTVerifier` "
22
- "instead of this module's BearerAuthProvider.",
23
- DeprecationWarning,
24
- stacklevel=2,
25
- )