fastmcp 2.13.3__py3-none-any.whl → 2.14.1__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 (85) hide show
  1. fastmcp/__init__.py +0 -21
  2. fastmcp/cli/__init__.py +0 -3
  3. fastmcp/cli/__main__.py +5 -0
  4. fastmcp/cli/cli.py +8 -22
  5. fastmcp/cli/install/shared.py +0 -15
  6. fastmcp/cli/tasks.py +110 -0
  7. fastmcp/client/auth/oauth.py +9 -9
  8. fastmcp/client/client.py +739 -136
  9. fastmcp/client/elicitation.py +11 -5
  10. fastmcp/client/messages.py +7 -5
  11. fastmcp/client/roots.py +2 -1
  12. fastmcp/client/sampling/__init__.py +69 -0
  13. fastmcp/client/sampling/handlers/__init__.py +0 -0
  14. fastmcp/client/sampling/handlers/anthropic.py +387 -0
  15. fastmcp/client/sampling/handlers/openai.py +399 -0
  16. fastmcp/client/tasks.py +551 -0
  17. fastmcp/client/transports.py +72 -21
  18. fastmcp/contrib/component_manager/component_service.py +4 -20
  19. fastmcp/dependencies.py +25 -0
  20. fastmcp/experimental/sampling/handlers/__init__.py +5 -0
  21. fastmcp/experimental/sampling/handlers/openai.py +4 -169
  22. fastmcp/experimental/server/openapi/__init__.py +15 -13
  23. fastmcp/experimental/utilities/openapi/__init__.py +12 -38
  24. fastmcp/prompts/prompt.py +38 -38
  25. fastmcp/resources/resource.py +33 -16
  26. fastmcp/resources/template.py +69 -59
  27. fastmcp/server/auth/__init__.py +0 -9
  28. fastmcp/server/auth/auth.py +127 -3
  29. fastmcp/server/auth/oauth_proxy.py +47 -97
  30. fastmcp/server/auth/oidc_proxy.py +7 -0
  31. fastmcp/server/auth/providers/in_memory.py +2 -2
  32. fastmcp/server/auth/providers/oci.py +2 -2
  33. fastmcp/server/context.py +509 -180
  34. fastmcp/server/dependencies.py +464 -6
  35. fastmcp/server/elicitation.py +285 -47
  36. fastmcp/server/event_store.py +177 -0
  37. fastmcp/server/http.py +15 -3
  38. fastmcp/server/low_level.py +56 -12
  39. fastmcp/server/middleware/middleware.py +2 -2
  40. fastmcp/server/openapi/__init__.py +35 -0
  41. fastmcp/{experimental/server → server}/openapi/components.py +4 -3
  42. fastmcp/{experimental/server → server}/openapi/routing.py +1 -1
  43. fastmcp/{experimental/server → server}/openapi/server.py +6 -5
  44. fastmcp/server/proxy.py +53 -40
  45. fastmcp/server/sampling/__init__.py +10 -0
  46. fastmcp/server/sampling/run.py +301 -0
  47. fastmcp/server/sampling/sampling_tool.py +108 -0
  48. fastmcp/server/server.py +793 -552
  49. fastmcp/server/tasks/__init__.py +21 -0
  50. fastmcp/server/tasks/capabilities.py +22 -0
  51. fastmcp/server/tasks/config.py +89 -0
  52. fastmcp/server/tasks/converters.py +206 -0
  53. fastmcp/server/tasks/handlers.py +356 -0
  54. fastmcp/server/tasks/keys.py +93 -0
  55. fastmcp/server/tasks/protocol.py +355 -0
  56. fastmcp/server/tasks/subscriptions.py +205 -0
  57. fastmcp/settings.py +101 -103
  58. fastmcp/tools/tool.py +83 -49
  59. fastmcp/tools/tool_transform.py +1 -12
  60. fastmcp/utilities/components.py +3 -3
  61. fastmcp/utilities/json_schema_type.py +4 -4
  62. fastmcp/utilities/mcp_config.py +1 -2
  63. fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +1 -1
  64. fastmcp/{experimental/utilities → utilities}/openapi/README.md +7 -35
  65. fastmcp/utilities/openapi/__init__.py +63 -0
  66. fastmcp/{experimental/utilities → utilities}/openapi/formatters.py +5 -5
  67. fastmcp/{experimental/utilities → utilities}/openapi/json_schema_converter.py +1 -1
  68. fastmcp/utilities/tests.py +11 -5
  69. fastmcp/utilities/types.py +8 -0
  70. {fastmcp-2.13.3.dist-info → fastmcp-2.14.1.dist-info}/METADATA +7 -4
  71. {fastmcp-2.13.3.dist-info → fastmcp-2.14.1.dist-info}/RECORD +79 -63
  72. fastmcp/client/sampling.py +0 -56
  73. fastmcp/experimental/sampling/handlers/base.py +0 -21
  74. fastmcp/server/auth/providers/bearer.py +0 -25
  75. fastmcp/server/openapi.py +0 -1087
  76. fastmcp/server/sampling/handler.py +0 -19
  77. fastmcp/utilities/openapi.py +0 -1568
  78. /fastmcp/{experimental/server → server}/openapi/README.md +0 -0
  79. /fastmcp/{experimental/utilities → utilities}/openapi/director.py +0 -0
  80. /fastmcp/{experimental/utilities → utilities}/openapi/models.py +0 -0
  81. /fastmcp/{experimental/utilities → utilities}/openapi/parser.py +0 -0
  82. /fastmcp/{experimental/utilities → utilities}/openapi/schemas.py +0 -0
  83. {fastmcp-2.13.3.dist-info → fastmcp-2.14.1.dist-info}/WHEEL +0 -0
  84. {fastmcp-2.13.3.dist-info → fastmcp-2.14.1.dist-info}/entry_points.txt +0 -0
  85. {fastmcp-2.13.3.dist-info → fastmcp-2.14.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,10 +1,10 @@
1
- # OpenAPI Utilities (New Implementation)
1
+ # OpenAPI Utilities
2
2
 
3
- This directory contains the next-generation OpenAPI integration utilities for FastMCP, designed to replace the legacy `openapi.py` implementation.
3
+ This directory contains the OpenAPI integration utilities for FastMCP.
4
4
 
5
5
  ## Architecture Overview
6
6
 
7
- The new implementation follows a **stateless request building strategy** using `openapi-core` for high-performance, per-request HTTP request construction, eliminating startup latency while maintaining robust OpenAPI compliance.
7
+ The implementation follows a **stateless request building strategy** using `openapi-core` for high-performance, per-request HTTP request construction, eliminating startup latency while maintaining robust OpenAPI compliance.
8
8
 
9
9
  ### Core Components
10
10
 
@@ -83,7 +83,7 @@ MCP Tool Call → RequestDirector.build() → httpx.Request → HTTP Response
83
83
 
84
84
  ## Component Integration
85
85
 
86
- ### Server Components (`/server/openapi_new/`)
86
+ ### Server Components (`/server/openapi/`)
87
87
 
88
88
  1. **`OpenAPITool`** - Simplified tool implementation using RequestDirector
89
89
  2. **`OpenAPIResource`** - Resource implementation with RequestDirector
@@ -104,7 +104,7 @@ All components use the same RequestDirector approach:
104
104
 
105
105
  ```python
106
106
  import httpx
107
- from fastmcp.server.openapi_new import FastMCPOpenAPI
107
+ from fastmcp.server.openapi import FastMCPOpenAPI
108
108
 
109
109
  # OpenAPI spec (can be loaded from file/URL)
110
110
  openapi_spec = {...}
@@ -124,7 +124,7 @@ async with httpx.AsyncClient() as client:
124
124
  ### Direct RequestDirector Usage
125
125
 
126
126
  ```python
127
- from fastmcp.experimental.utilities.openapi.director import RequestDirector
127
+ from fastmcp.utilities.openapi.director import RequestDirector
128
128
  from jsonschema_path import SchemaPath
129
129
 
130
130
  # Create RequestDirector manually
@@ -141,7 +141,7 @@ async with httpx.AsyncClient() as client:
141
141
 
142
142
  ## Testing Strategy
143
143
 
144
- Tests are located in `/tests/server/openapi_new/`:
144
+ Tests are located in `/tests/server/openapi/`:
145
145
 
146
146
  ### Test Categories
147
147
 
@@ -160,34 +160,6 @@ Tests are located in `/tests/server/openapi_new/`:
160
160
  - **Performance Focus**: Test that initialization is fast and stateless
161
161
  - **Behavioral Testing**: Verify OpenAPI compliance without implementation details
162
162
 
163
- ## Migration Guide
164
-
165
- ### From Legacy Implementation
166
-
167
- 1. **Import Changes**:
168
- ```python
169
- # Old
170
- from fastmcp.server.openapi import FastMCPOpenAPI
171
-
172
- # New
173
- from fastmcp.server.openapi_new import FastMCPOpenAPI
174
- ```
175
-
176
- 2. **Constructor**: Same interface, no changes needed
177
-
178
- 3. **Automatic Benefits**:
179
- - Eliminates startup latency (100-200ms improvement)
180
- - Better OpenAPI compliance via openapi-core
181
- - Serverless-friendly performance characteristics
182
- - Simplified architecture without fallback complexity
183
-
184
- ### Performance Improvements
185
-
186
- - **Cold Start**: Zero latency penalty for serverless deployments
187
- - **Memory Usage**: Lower memory footprint without generated client code
188
- - **Reliability**: No dynamic code generation failures
189
- - **Maintainability**: Simpler architecture with fewer moving parts
190
-
191
163
  ## Future Enhancements
192
164
 
193
165
  ### Planned Features
@@ -0,0 +1,63 @@
1
+ """OpenAPI utilities for FastMCP - refactored for better maintainability."""
2
+
3
+ # Import from models
4
+ from .models import (
5
+ HTTPRoute,
6
+ HttpMethod,
7
+ JsonSchema,
8
+ ParameterInfo,
9
+ ParameterLocation,
10
+ RequestBodyInfo,
11
+ ResponseInfo,
12
+ )
13
+
14
+ # Import from parser
15
+ from .parser import parse_openapi_to_http_routes
16
+
17
+ # Import from formatters
18
+ from .formatters import (
19
+ format_array_parameter,
20
+ format_deep_object_parameter,
21
+ format_description_with_responses,
22
+ format_json_for_description,
23
+ format_simple_description,
24
+ generate_example_from_schema,
25
+ )
26
+
27
+ # Import from schemas
28
+ from .schemas import (
29
+ _combine_schemas,
30
+ extract_output_schema_from_responses,
31
+ clean_schema_for_display,
32
+ _make_optional_parameter_nullable,
33
+ )
34
+
35
+ # Import from json_schema_converter
36
+ from .json_schema_converter import (
37
+ convert_openapi_schema_to_json_schema,
38
+ convert_schema_definitions,
39
+ )
40
+
41
+ # Export public symbols - maintaining backward compatibility
42
+ __all__ = [
43
+ "HTTPRoute",
44
+ "HttpMethod",
45
+ "JsonSchema",
46
+ "ParameterInfo",
47
+ "ParameterLocation",
48
+ "RequestBodyInfo",
49
+ "ResponseInfo",
50
+ "_combine_schemas",
51
+ "_make_optional_parameter_nullable",
52
+ "clean_schema_for_display",
53
+ "convert_openapi_schema_to_json_schema",
54
+ "convert_schema_definitions",
55
+ "extract_output_schema_from_responses",
56
+ "format_array_parameter",
57
+ "format_deep_object_parameter",
58
+ "format_description_with_responses",
59
+ "format_json_for_description",
60
+ "format_simple_description",
61
+ "generate_example_from_schema",
62
+ "parse_openapi_to_http_routes",
63
+ ]
@@ -67,13 +67,13 @@ def format_deep_object_parameter(
67
67
  param_value: dict, parameter_name: str
68
68
  ) -> dict[str, str]:
69
69
  """
70
- Format a dictionary parameter for deepObject style serialization.
70
+ Format a dictionary parameter for deep-object style serialization.
71
71
 
72
72
  According to OpenAPI 3.0 spec, deepObject style with explode=true serializes
73
73
  object properties as separate query parameters with bracket notation.
74
74
 
75
- For example: {"id": "123", "type": "user"} becomes:
76
- param[id]=123&param[type]=user
75
+ For example, `{"id": "123", "type": "user"}` becomes
76
+ `param[id]=123&param[type]=user`.
77
77
 
78
78
  Args:
79
79
  param_value: Dictionary value to format
@@ -84,7 +84,7 @@ def format_deep_object_parameter(
84
84
  """
85
85
  if not isinstance(param_value, dict):
86
86
  logger.warning(
87
- f"deepObject style parameter '{parameter_name}' expected dict, got {type(param_value)}"
87
+ f"Deep-object style parameter '{parameter_name}' expected dict, got {type(param_value)}"
88
88
  )
89
89
  return {}
90
90
 
@@ -181,7 +181,7 @@ def generate_example_from_schema(schema: JsonSchema | None) -> Any:
181
181
 
182
182
 
183
183
  def format_json_for_description(data: Any, indent: int = 2) -> str:
184
- """Formats Python data as a JSON string block for markdown."""
184
+ """Formats Python data as a JSON string block for Markdown."""
185
185
  try:
186
186
  json_str = json.dumps(data, indent=indent)
187
187
  return f"```json\n{json_str}\n```"
@@ -60,7 +60,7 @@ def convert_openapi_schema_to_json_schema(
60
60
  convert_one_of_to_any_of: Whether to convert oneOf to anyOf
61
61
 
62
62
  Returns:
63
- JSON Schema compatible dictionary
63
+ JSON Schema-compatible dictionary
64
64
  """
65
65
  if not isinstance(schema, dict):
66
66
  return schema
@@ -12,6 +12,7 @@ from urllib.parse import parse_qs, urlparse
12
12
 
13
13
  import httpx
14
14
  import uvicorn
15
+ from pytest import LogCaptureFixture
15
16
 
16
17
  from fastmcp import settings
17
18
  from fastmcp.client.auth.oauth import OAuth
@@ -208,20 +209,25 @@ async def run_server_async(
208
209
  )
209
210
  )
210
211
 
211
- # Give the server a moment to start
212
+ # Wait for server lifespan to be ready
213
+ await server._started.wait()
214
+
215
+ # Give uvicorn a moment to bind the port after lifespan is ready
212
216
  await asyncio.sleep(0.1)
213
217
 
214
218
  try:
215
219
  yield f"http://{host}:{port}{path}"
216
220
  finally:
217
- # Cleanup: cancel the task
221
+ # Cleanup: cancel the task with timeout to avoid hanging on Windows
218
222
  server_task.cancel()
219
- with suppress(asyncio.CancelledError):
220
- await server_task
223
+ with suppress(asyncio.CancelledError, asyncio.TimeoutError):
224
+ await asyncio.wait_for(server_task, timeout=2.0)
221
225
 
222
226
 
223
227
  @contextmanager
224
- def caplog_for_fastmcp(caplog):
228
+ def caplog_for_fastmcp(
229
+ caplog: LogCaptureFixture,
230
+ ) -> Generator[LogCaptureFixture, None, None]:
225
231
  """Context manager to capture logs from FastMCP loggers even when propagation is disabled."""
226
232
  caplog.clear()
227
233
  logger = logging.getLogger("fastmcp")
@@ -206,6 +206,13 @@ def create_function_without_params(
206
206
  k: v for k, v in original_annotations.items() if k not in exclude_params
207
207
  }
208
208
 
209
+ # Create new signature without the excluded parameters
210
+ sig = inspect.signature(fn)
211
+ new_params = [
212
+ param for name, param in sig.parameters.items() if name not in exclude_params
213
+ ]
214
+ new_sig = inspect.Signature(new_params, return_annotation=sig.return_annotation)
215
+
209
216
  new_func = types.FunctionType(
210
217
  code,
211
218
  globals_dict,
@@ -217,6 +224,7 @@ def create_function_without_params(
217
224
  new_func.__module__ = fn.__module__
218
225
  new_func.__qualname__ = getattr(fn, "__qualname__", fn.__name__) # ty: ignore[unresolved-attribute]
219
226
  new_func.__annotations__ = new_annotations
227
+ new_func.__signature__ = new_sig # type: ignore[attr-defined]
220
228
 
221
229
  if inspect.ismethod(fn):
222
230
  return types.MethodType(new_func, fn.__self__)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastmcp
3
- Version: 2.13.3
3
+ Version: 2.14.1
4
4
  Summary: The fast, Pythonic way to build MCP servers and clients.
5
5
  Project-URL: Homepage, https://gofastmcp.com
6
6
  Project-URL: Repository, https://github.com/jlowin/fastmcp
@@ -23,16 +23,19 @@ Requires-Dist: cyclopts>=4.0.0
23
23
  Requires-Dist: exceptiongroup>=1.2.2
24
24
  Requires-Dist: httpx>=0.28.1
25
25
  Requires-Dist: jsonschema-path>=0.3.4
26
- Requires-Dist: mcp!=1.21.1,<1.23,>=1.19.0
26
+ Requires-Dist: mcp>=1.24.0
27
27
  Requires-Dist: openapi-pydantic>=0.5.1
28
28
  Requires-Dist: platformdirs>=4.0.0
29
- Requires-Dist: py-key-value-aio[disk,memory]<0.4.0,>=0.2.8
29
+ Requires-Dist: py-key-value-aio[disk,keyring,memory]<0.4.0,>=0.3.0
30
30
  Requires-Dist: pydantic[email]>=2.11.7
31
+ Requires-Dist: pydocket>=0.15.5
31
32
  Requires-Dist: pyperclip>=1.9.0
32
33
  Requires-Dist: python-dotenv>=1.1.0
33
34
  Requires-Dist: rich>=13.9.4
34
35
  Requires-Dist: uvicorn>=0.35
35
36
  Requires-Dist: websockets>=15.0.1
37
+ Provides-Extra: anthropic
38
+ Requires-Dist: anthropic>=0.40.0; extra == 'anthropic'
36
39
  Provides-Extra: openai
37
40
  Requires-Dist: openai>=1.102.0; extra == 'openai'
38
41
  Description-Content-Type: text/markdown
@@ -199,7 +202,7 @@ from fastmcp import FastMCP
199
202
  mcp = FastMCP(name="MyAssistantServer")
200
203
  ```
201
204
 
202
- Learn more in the [**FastMCP Server Documentation**](https://gofastmcp.com/servers/fastmcp).
205
+ Learn more in the [**FastMCP Server Documentation**](https://gofastmcp.com/servers/server).
203
206
 
204
207
  ### Tools
205
208
 
@@ -1,31 +1,38 @@
1
- fastmcp/__init__.py,sha256=oKNRn6cUVk3nabmXR9SFEvKz-yotC8tVDNYRorxX-Wk,1544
1
+ fastmcp/__init__.py,sha256=aArtRHXrBhV3SDPbgjJ7Tm6dI2V9waLH3M4xpGTSmPw,827
2
+ fastmcp/dependencies.py,sha256=Un5S30WHJbAiIdjVjEeaQC7UcEVEkkyjf4EF7l4FYq0,513
2
3
  fastmcp/exceptions.py,sha256=-krEavxwddQau6T7MESCR4VjKNLfP9KHJrU1p3y72FU,744
3
4
  fastmcp/mcp_config.py,sha256=YXZ0piljrxFgPYEwYSwPw6IiPwU3Cwp2VzlT9CWxutc,11397
4
5
  fastmcp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- fastmcp/settings.py,sha256=RqtXzbIGFWLFbgK82pGOx-OGWtrVKZe3KcBWinCgACY,13936
6
- fastmcp/cli/__init__.py,sha256=Ii284TNoG5lxTP40ETMGhHEq3lQZWxu9m9JuU57kUpQ,87
7
- fastmcp/cli/cli.py,sha256=FMrda7kHwNDCflUiJTSWD_w3vuuQsgSj2IuWk8ZZsEM,29108
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
8
10
  fastmcp/cli/run.py,sha256=HeaiHYcVY17JpHg4UjnIHkP5ttU0PNd1bZIL3brif8A,7047
11
+ fastmcp/cli/tasks.py,sha256=B57vy76d3ybdi4wmlODRCCFrte1GmhLKqYixzRkGUuw,3791
9
12
  fastmcp/cli/install/__init__.py,sha256=FUrwjMVaxONgz1qO7suzJNz1xosRfR3TOHlr3Z77JXA,797
10
13
  fastmcp/cli/install/claude_code.py,sha256=vGv8hbMUM6p5uQ1scy6E7Qxn0BZ2_INATF0xmSl5QWQ,7617
11
14
  fastmcp/cli/install/claude_desktop.py,sha256=aX_BrH5ODEN6UPHdw-Gnh0r5g8TojvTA7trqQRCEdAw,6832
12
15
  fastmcp/cli/install/cursor.py,sha256=0qSkKp4JuZj2dGOAsPph9XS_LswV8rQ8CqAuEx7TNhA,10685
13
16
  fastmcp/cli/install/gemini_cli.py,sha256=G7NhKnH21893baQjmVbFpwRyMbYIq7bocPQz1CBUH_8,7630
14
17
  fastmcp/cli/install/mcp_json.py,sha256=l7b0sWB10YlbcXtcwJv1X2iHEP9V9EwuuD63PyTMvXI,5832
15
- fastmcp/cli/install/shared.py,sha256=_1MNGCqf7BsAL6ntwA75wn86-0g-248ppQSAPQ8uTXk,5103
18
+ fastmcp/cli/install/shared.py,sha256=Qf5VH0b6l66yyBzDYtZwbbESUDYn6k5oyb6u-xepPTI,4447
16
19
  fastmcp/client/__init__.py,sha256=QHvSGJCLejQkQ4o070vsUdKNB8vUhxckBByvHjnteTQ,663
17
- fastmcp/client/client.py,sha256=_CiqszJLahHsNDgaOpkf5v8csJ6D1dDdpv3TiDsNwzs,38899
18
- fastmcp/client/elicitation.py,sha256=VNWgeBe2KipLp9mCc-6AApmfYAU1OlH9_3JdskfW_Wc,2521
20
+ fastmcp/client/client.py,sha256=3zBmdjUsJIx3GkPBZtzYez-XYIm0VogMFMMcNcz-z18,63206
21
+ fastmcp/client/elicitation.py,sha256=KlLvZn4FpwC5S5iXNq79mtqtbrtUjXyked-l-pZk6js,2878
19
22
  fastmcp/client/logging.py,sha256=WBByRoBIB-Bl3ZUJVFvHqRt4teYPAvqC8MnJ358Elg8,1939
20
- fastmcp/client/messages.py,sha256=NIPjt-5js_DkI5BD4OVdTf6pz-nGjc2dtbgt-vAY234,4329
23
+ fastmcp/client/messages.py,sha256=g85Qca7aiMQLt4E4PwzUoLK6EIS8UM9j2qNwOEHjy0M,4636
21
24
  fastmcp/client/oauth_callback.py,sha256=3xqL5_HD1QS9eGfw31HzoVF94QQelq_0TTqS7qWDlQQ,7709
22
25
  fastmcp/client/progress.py,sha256=WjLLDbUKMsx8DK-fqO7AGsXb83ak-6BMrLvzzznGmcI,1043
23
- fastmcp/client/roots.py,sha256=IxI_bHwHTmg6c2H-s1av1ZgrRnNDieHtYwdGFbzXT5c,2471
24
- fastmcp/client/sampling.py,sha256=MEXgywI46X-E78gCLCKEiQ14iu4uQqohLav-MNCtD_U,1819
25
- fastmcp/client/transports.py,sha256=sYbh50h0qcgB5C6OLdzHSF1hn2IOfty3XJEu2Dlg42o,40993
26
+ fastmcp/client/roots.py,sha256=Uap1RSr3uEeQRZTHkEttkhTI2fOA8IeDcRSggtZp9aY,2568
27
+ fastmcp/client/tasks.py,sha256=zjiTfvjU9NaA4e3XTBGHsqvSfBRR19UqZMIUhJ_nQTo,19480
28
+ fastmcp/client/transports.py,sha256=ZRxHTgNYK6_D_2GNa15cfGMNP-naZ0A9q8oc2jfgX8A,43231
26
29
  fastmcp/client/auth/__init__.py,sha256=4DNsfp4iaQeBcpds0JDdMn6Mmfud44stWLsret0sVKY,91
27
30
  fastmcp/client/auth/bearer.py,sha256=MFEFqcH6u_V86msYiOsEFKN5ks1V9BnBNiPsPLHUTqo,399
28
- fastmcp/client/auth/oauth.py,sha256=RJSazIALhLoNtqbJk1lsktYjVypJ89OtJE7_tjjQHgE,12445
31
+ fastmcp/client/auth/oauth.py,sha256=8B1HTPoPhEFQUZBfuhR6jqq4CHu6BDATVowC3ayZmg8,12513
32
+ fastmcp/client/sampling/__init__.py,sha256=jaquyp7c5lz4mczv0d5Skl153uWrnXVcS4qCmbjLKRY,2208
33
+ fastmcp/client/sampling/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
+ fastmcp/client/sampling/handlers/anthropic.py,sha256=LjxTYzIWOnbJwJDHJOkRybW0dXBcyt2c7B4sCaG3uLM,14318
35
+ fastmcp/client/sampling/handlers/openai.py,sha256=9E5WyiNDGFnB_UJ--UxS36EgpZZ_n_pclmUIXDNCXrM,15399
29
36
  fastmcp/contrib/README.md,sha256=rKknYSI1T192UvSszqwwDlQ2eYQpxywrNTLoj177SYU,878
30
37
  fastmcp/contrib/bulk_tool_caller/README.md,sha256=5aUUY1TSFKtz1pvTLSDqkUCkGkuqMfMZNsLeaNqEgAc,1960
31
38
  fastmcp/contrib/bulk_tool_caller/__init__.py,sha256=xvGSSaUXTQrc31erBoi1Gh7BikgOliETDiYVTP3rLxY,75
@@ -34,68 +41,55 @@ fastmcp/contrib/bulk_tool_caller/example.py,sha256=6og_8pCJN_CabworC5R82zPAwwwM-
34
41
  fastmcp/contrib/component_manager/README.md,sha256=sTan1D51jzkPNnCQTxwd5JXGzWVy4DtkUjrUfNH3-F0,4457
35
42
  fastmcp/contrib/component_manager/__init__.py,sha256=9xu58ftB0Aqd5RymZgnkJMH9rTHBcrO6iMQX9qdEy3s,164
36
43
  fastmcp/contrib/component_manager/component_manager.py,sha256=lS2KDsx_W6GDncWx6NhVNhg1X0TeGwQHWqP5PzlDPRM,6424
37
- fastmcp/contrib/component_manager/component_service.py,sha256=WGu3XcZSbHriSjvMfuroNZuT5xWWoYbEiIow8FPQNYg,8712
44
+ fastmcp/contrib/component_manager/component_service.py,sha256=hFW32Ti6RmYlEqL4FEIYCC1FyqMUkL7tOiJ8gay8cLg,8236
38
45
  fastmcp/contrib/component_manager/example.py,sha256=N16OIHmQuR-LNEv7bkrv2rGdMs862Nc3AKKEPfw-6rU,1587
39
46
  fastmcp/contrib/mcp_mixin/README.md,sha256=f6ine6z9kuEx1qKhY9jzrH6sAwj1oWpXcLXGvK0GMVk,5404
40
47
  fastmcp/contrib/mcp_mixin/__init__.py,sha256=zZFHlAGexUJCDLAg4p7CGZDmb-mgPdN1xVv0tR4mg7I,153
41
48
  fastmcp/contrib/mcp_mixin/example.py,sha256=GnunkXmtG5hLLTUsM8aW5ZURU52Z8vI4tNLl-fK7Dg0,1228
42
49
  fastmcp/contrib/mcp_mixin/mcp_mixin.py,sha256=Ij009tiJBj1Lciz4abTICA1Il-kz_myr4aevQ4yGTNo,10582
43
50
  fastmcp/experimental/sampling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
- fastmcp/experimental/sampling/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
- fastmcp/experimental/sampling/handlers/base.py,sha256=mCPFj9ETc-Ro38R_pzx9rHVM2_EADCecScMkNWd6Tbs,714
46
- fastmcp/experimental/sampling/handlers/openai.py,sha256=ofNTv1p5Lf-A_SKWD-mEpx28k0E5SbYwRNLbjx-npyY,5765
47
- fastmcp/experimental/server/openapi/README.md,sha256=1Mc1Ur15OxMn-wAPEa1rZIiNNSMdv9sboQ3YpvNpUXM,9886
48
- fastmcp/experimental/server/openapi/__init__.py,sha256=cZPebMY9xwjW8nUgTN5MvawnZEFx9E0Oe_TFqSrevp0,728
49
- fastmcp/experimental/server/openapi/components.py,sha256=rKbrIZRaxV-mtpmeW2ZlYtCLE2eaScZF-3rKaMi9-rA,13371
50
- fastmcp/experimental/server/openapi/routing.py,sha256=hAhQCtode5NuEDVfzeMj5vK03T6ylOub_f7irgwoa5w,4031
51
- fastmcp/experimental/server/openapi/server.py,sha256=WQeUA3v69ZhrzN1-cbrDTC8EsaOXHwDSQT_NPgYrECk,16099
52
- fastmcp/experimental/utilities/openapi/README.md,sha256=pOXftamuVXxEMlOt-JAfpuvHeRGauC3l46ntD1WzM-A,8604
53
- fastmcp/experimental/utilities/openapi/__init__.py,sha256=6FTQyP-kWvFg5Ykq53j7byBhPuysOyMYSrFTdUAKeO0,1592
54
- fastmcp/experimental/utilities/openapi/director.py,sha256=bsK5W8-vdydbB85xMLy5WsQJewnObXaDrtAIS5HdKjY,7956
55
- fastmcp/experimental/utilities/openapi/formatters.py,sha256=1RCd8DwPU8_4uF51pj8Qp3oSZkZmoxL5VUwxBzokAMg,15540
56
- fastmcp/experimental/utilities/openapi/json_schema_converter.py,sha256=z8FjEDedsvAU1tT_ztl7oL_ERbjGufS3meVO-WKJhuE,13089
57
- fastmcp/experimental/utilities/openapi/models.py,sha256=-kfndwZSe92tVtKAgOuFn5rk1tN7oydCZKtLOEMEalA,2805
58
- fastmcp/experimental/utilities/openapi/parser.py,sha256=qsa68Ro1c8ov77kdEP20IwZqD74E4IGKjtfeIkn3HdE,34338
59
- fastmcp/experimental/utilities/openapi/schemas.py,sha256=84nPtnOlfjNoFGDoVoWLs0dh_7Ps92p3AuHgpVA5a-s,23349
51
+ fastmcp/experimental/sampling/handlers/__init__.py,sha256=cY6yyaI_DBx5NKH6t70tZQNjy1IEImbXV-VwKruk8UM,216
52
+ fastmcp/experimental/sampling/handlers/openai.py,sha256=0HK7GX3hwz7PKkiObS7lYE_70ugZURC0I2_whxV7Ac0,223
53
+ fastmcp/experimental/server/openapi/__init__.py,sha256=QNrM6ZNwJLk78jh7hq1tdZ-WnZLQ0KHd-7hjQgYeMqw,817
54
+ fastmcp/experimental/utilities/openapi/__init__.py,sha256=-SIYFQ4CE9MTxKQbksQ4J3lwm409EV3qKkHuTwAEyNk,907
60
55
  fastmcp/prompts/__init__.py,sha256=BQ5ooDJcNhb5maYBcg2mF1VaHAY_A64cEU3UiCQ3Lw8,179
61
- fastmcp/prompts/prompt.py,sha256=G-P_Ln1xTQRy-bTyMFy2v--9guTNpn92e30cmysX1Q0,14335
56
+ fastmcp/prompts/prompt.py,sha256=6Q6xKDIw5MdPC9dTAnM-9FRtA-34dv4qqTrD_5s2w0Y,14483
62
57
  fastmcp/prompts/prompt_manager.py,sha256=5ZyT0blp5owuaN5pz_TQsyH6zUGFoUiVTGfiEnqBuj8,4262
63
58
  fastmcp/resources/__init__.py,sha256=si8aT_9taxUNN0vkfbifst_SCId56DZmYi4YOb4mtlE,463
64
- fastmcp/resources/resource.py,sha256=Rt260JyWuC_7Ufo3TtKxjPyKCTV-3zfsFF9wqHL8yWw,7168
59
+ fastmcp/resources/resource.py,sha256=PNzfTpywc5OIvDtFgAa8SGymzBbpwZCa32Mshh9YcGk,7890
65
60
  fastmcp/resources/resource_manager.py,sha256=R-dtlhCYHcH1bnGuD0QW5aRUo_12_NeLkn9VLp4xmmU,13308
66
- fastmcp/resources/template.py,sha256=vu9InVUKc5CvEOUvlTXsZ8-tpet_-kf8yX-rNrxE4Pw,14802
61
+ fastmcp/resources/template.py,sha256=MSAK46bYk74nqJTQ923xb4KETlof9clfg_QaqLrJX_Y,15495
67
62
  fastmcp/resources/types.py,sha256=efFLGD1Xc5Xq3sxlPaZ_8gtJ2UOixueTBV4KQTi4cOU,4936
68
63
  fastmcp/server/__init__.py,sha256=qxNmIJcqsrpxpUvCv0mhdEAaUn1UZd1xLd8XRoWUlfY,119
69
- fastmcp/server/context.py,sha256=TYPUb7zr2rnNNmZSvaKbWy0J94dhdsL210eWl1HMPzQ,28650
70
- fastmcp/server/dependencies.py,sha256=gbtI6vqAH-u-TV9tbXZUcYisMCyUHs_-Y_PXcFxx5w4,5292
71
- fastmcp/server/elicitation.py,sha256=WYsj-H9U-t3b6awcLUWl1b1EA5X48Ef6_kvLhxYgYGs,8777
72
- fastmcp/server/http.py,sha256=IMggGikJxIMg1CkHH1du3BiKtbD2SU4wDyS0xvLG1O8,12032
73
- fastmcp/server/low_level.py,sha256=b1Sx0_Py0QxeLXSLdDA5PjR9Dd9ANB7KSNkkGSr1AeE,5490
74
- fastmcp/server/openapi.py,sha256=xWiQC3mjk81G7ZWhXF3PpECuCM1arD2tiHF9EM9kUyU,42332
75
- fastmcp/server/proxy.py,sha256=iGyBPPnhtzOxuTknv-OZEdzelgEF_MOBgI3RxEMxopI,26157
76
- fastmcp/server/server.py,sha256=G9Qesj1_p0AYvnqTA89dun2p1nwYMl1O-PMksZb93k8,109753
77
- fastmcp/server/auth/__init__.py,sha256=1VZ3MhZhlByvo7QCWT1tMIdRdMppUw4_TeqclSPJeiI,820
78
- fastmcp/server/auth/auth.py,sha256=YjRM4zHvTlAfQYB97HEnXfCgOXA60Kcrb5O2nHsyka8,14524
64
+ fastmcp/server/context.py,sha256=nd0bME6I7aB9RlKiESNBay97P8yDHJJ-IcjVCbkc7bc,42256
65
+ fastmcp/server/dependencies.py,sha256=7As8f1yRIQI0dSDpLVfSCPMXxaPuhUrDvNpxwjSG6W0,20643
66
+ fastmcp/server/elicitation.py,sha256=jmrLb_yzdmM9hVRxOYlC4aWnlCBCayuzVOs7--sByxU,17862
67
+ fastmcp/server/event_store.py,sha256=ZiBbrUQHw9--G8lzK1qLZmUAF2le2XchFen4pGbFKsE,6170
68
+ fastmcp/server/http.py,sha256=_HjMSYWH8mfKugDODU4iV0AhKDU2VRc40tS56L6i-_s,12737
69
+ fastmcp/server/low_level.py,sha256=o3jDf5SuZBQeurhLWRzaSVCnvrmaKMH_w-TbHk6BuZ4,7963
70
+ fastmcp/server/proxy.py,sha256=bsgVkcdlRtVK3bB4EeVKrq4PLjIoUvWN_hgzr1hq8yE,26837
71
+ fastmcp/server/server.py,sha256=e9a-0oiZGSavynLLc3mctw1R4avU5PpIqyOrTOKK7YM,122647
72
+ fastmcp/server/auth/__init__.py,sha256=MTZvDKEUMqjs9-raRN0h8Zjx8pWFXs_iSRbB1UqBUqU,527
73
+ fastmcp/server/auth/auth.py,sha256=6FIjQLhQ-ps58o05nrOi5pyD1OmM0fANrV-M79Jb7do,19775
79
74
  fastmcp/server/auth/jwt_issuer.py,sha256=lJYvrpC1ygI4jkoJlL_nTH6m7FKdTw2lbEycKo4eHLY,7197
80
75
  fastmcp/server/auth/middleware.py,sha256=xwj3fUCLSlJK6n1Ehp-FN1qnjKqEz8b7LGAGMTqQ8Hk,3284
81
- fastmcp/server/auth/oauth_proxy.py,sha256=onInFJmGOxlAk2iZhug2AfncDFo3owkd1QbA6UQo_n0,92482
82
- fastmcp/server/auth/oidc_proxy.py,sha256=1VsNrTeBNnVm_yO5JPoIig-XvAynnsnFBwhaIx4fywE,17414
76
+ fastmcp/server/auth/oauth_proxy.py,sha256=Kk09KEK5YwZ2TnVbevqo0WuflBNz5kwWbOXq2St6itE,90694
77
+ fastmcp/server/auth/oidc_proxy.py,sha256=gU_RgBbVMj-9vn0TSRTmT1YaT19VFmJLpARcIXn208k,17969
83
78
  fastmcp/server/auth/redirect_validation.py,sha256=Jlhela9xpTbw4aWnQ04A5Z-TW0HYOC3f9BMsq3NXx1Q,2000
84
79
  fastmcp/server/auth/handlers/authorize.py,sha256=1zrmXqRUhjiWSHgUhfj0CcCkj3uSlGkTnxHzaic0xYs,11617
85
80
  fastmcp/server/auth/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
81
  fastmcp/server/auth/providers/auth0.py,sha256=dZkc7hppii20YWota_6_Y3vdNw-DZSq0OyModbly-RA,7814
87
82
  fastmcp/server/auth/providers/aws.py,sha256=MXoEEnXmeIlRjaHqTeNCmJ90iTx9jwUdEdpyLUmzfIc,10852
88
83
  fastmcp/server/auth/providers/azure.py,sha256=Lq949keq4-AC7AR6Dbn5caEim5XOAK3WpnB-GmRPLtY,20891
89
- fastmcp/server/auth/providers/bearer.py,sha256=LwkCfDJS48BxBxZwrIrauqNfCtDrJtGqYyEWnJjUq7s,923
90
84
  fastmcp/server/auth/providers/debug.py,sha256=92erHZGQB1ATsl6PwrXui6h3WJ4wLxE9ACbI3JutmWY,3881
91
85
  fastmcp/server/auth/providers/descope.py,sha256=y3PX3RmEL-JzHktKUbRW25QPZ7AVMGh579Pwgmr9P3k,9551
92
86
  fastmcp/server/auth/providers/discord.py,sha256=AK7WRydWNnXAUWnFeYUqgcdqsGkwFfcKZcyZMuOQcUw,12616
93
87
  fastmcp/server/auth/providers/github.py,sha256=xsv-Qj1VJRc64YcRuUG4a61xFH1nqqVX_biC7B1su9U,12414
94
88
  fastmcp/server/auth/providers/google.py,sha256=BAw3XfB8fE2zr80OZUP-bZBnlHRmZQGuvmoVFgW5D1E,14723
95
- fastmcp/server/auth/providers/in_memory.py,sha256=y8a8sfLQXctSB78yGpR3ZyG9x5pWRvI_t0LHgSZ4nvI,15444
89
+ fastmcp/server/auth/providers/in_memory.py,sha256=VjEQq8sEyPT0BQbjrOvriM0PY_HNd_YK1HbkrprVqyI,15496
96
90
  fastmcp/server/auth/providers/introspection.py,sha256=v2hlcuxxwug5myCr4KcTZlawwazAWYVHuRb0d3er13w,10733
97
91
  fastmcp/server/auth/providers/jwt.py,sha256=c-2Wji-CvuYt3U3unxjJR-5-EABRDks_755EpxKBDH8,20798
98
- fastmcp/server/auth/providers/oci.py,sha256=-XXDCmxnyBYJ9kdv_Y3iLJ4MxLSOgUjZdJrGwH3vPrE,9849
92
+ fastmcp/server/auth/providers/oci.py,sha256=QxpsStKEyl_W4dcJOky4m6wdpGnCSnt7WQ8DWjGPmSU,9894
99
93
  fastmcp/server/auth/providers/scalekit.py,sha256=30J2HImUAkyknMgH7lUGytcDOy4d01ClxTrBCO4E3GQ,9064
100
94
  fastmcp/server/auth/providers/supabase.py,sha256=9aK9fZ2OtccOF-ittMJnwj6sEzUNUTIrRPWAPLMwCac,7321
101
95
  fastmcp/server/auth/providers/workos.py,sha256=_KWsgKPV4OJ6a37FaVgq2LIzM3Nx26G5QQhgS8x2MO4,17244
@@ -103,33 +97,47 @@ fastmcp/server/middleware/__init__.py,sha256=LXT2IcZI4gbAtR4TnA7v_1lOWBR6eaHiE3C
103
97
  fastmcp/server/middleware/caching.py,sha256=xYUXkFeuoLaIJ_TB2570qEBS1TtneJClJOpJGNsNbu8,18414
104
98
  fastmcp/server/middleware/error_handling.py,sha256=eSMKrmIxDcnhzLGyOL49hup5k5e0iwvH_n2XVxJ69W8,7726
105
99
  fastmcp/server/middleware/logging.py,sha256=Reta-f4z8suYkJn4rPyJWYrNBeU25w8Y40U0uaV9ygo,9427
106
- fastmcp/server/middleware/middleware.py,sha256=qCzUFJ8vZfd2HwQFl8vcZ_waaaIpQEZgcBnNRahgRwk,6599
100
+ fastmcp/server/middleware/middleware.py,sha256=-L4QuyyjIF1QIcydWzamrmpIE2w7d2f35-QyoXMZnZM,6643
107
101
  fastmcp/server/middleware/rate_limiting.py,sha256=MwhMOhgsIhZjYwEQB8H8961hohV5564JlTwwYy_9ctU,7915
108
102
  fastmcp/server/middleware/timing.py,sha256=lL_xc-ErLD5lplfvd5-HIyWEbZhgNBYkcQ74KFXAMkA,5591
109
103
  fastmcp/server/middleware/tool_injection.py,sha256=zElqBN-yjZvcTADp57e0dn86kpxT9xsFqvYztiXuA08,3595
110
- fastmcp/server/sampling/handler.py,sha256=yjLzvxlGllE-EY4bc6djsijEmwMT24PCpV6vJl-sPcI,580
104
+ fastmcp/server/openapi/README.md,sha256=1Mc1Ur15OxMn-wAPEa1rZIiNNSMdv9sboQ3YpvNpUXM,9886
105
+ fastmcp/server/openapi/__init__.py,sha256=cZPebMY9xwjW8nUgTN5MvawnZEFx9E0Oe_TFqSrevp0,728
106
+ fastmcp/server/openapi/components.py,sha256=lHT3AJUKDt68-x7RpErP2ePLJp12HKKUn1VWq5TU6Ss,13346
107
+ fastmcp/server/openapi/routing.py,sha256=_WWci6GNqtfF-5yO-uHwXXc9nNFNV-YlbIWHa7-lCk4,4018
108
+ fastmcp/server/openapi/server.py,sha256=aQ_VwvHxdsC-O-7k_uKmPDkOlcgtOW-gk-RtlLtEtuw,16069
109
+ fastmcp/server/sampling/__init__.py,sha256=u9jDHSE_yz6kTzbFqIOXqnM0PfIAiP-peAjHJBNqDd0,249
110
+ fastmcp/server/sampling/run.py,sha256=1FIg9TMcvilQcgW0i00xlpgd7Yz6b814ntG3ihtFo6g,10469
111
+ fastmcp/server/sampling/sampling_tool.py,sha256=YltN7-NcMXUk6cFbuOQmuJ980bmQyh83qgFo0TogP5Q,3311
112
+ fastmcp/server/tasks/__init__.py,sha256=VizXvmXgA3SvrApQ6PSz4z1TPA9B6uROvmWeGSYOJ0I,530
113
+ fastmcp/server/tasks/capabilities.py,sha256=-8QMBjs6HZuQdUNmOrNEBvJs-opGptIyxOODU0TGGFE,574
114
+ fastmcp/server/tasks/config.py,sha256=msPkUuxnZKuqSj21Eh8m5Cwq0htwUzTCeoWsnbvKGkk,3006
115
+ fastmcp/server/tasks/converters.py,sha256=ON7c8gOMjBYiQoyk_vkymI8J01ccoYzizDwtgIIqIZQ,6701
116
+ fastmcp/server/tasks/handlers.py,sha256=8wiDiP6tHj8E3iMEIpjZmoiY_k1wgQg-F59KwGk56X8,12489
117
+ fastmcp/server/tasks/keys.py,sha256=w9diycj0N6ViVqe6stxUS9vg2H94bl_614Bu5kNRM-k,3011
118
+ fastmcp/server/tasks/protocol.py,sha256=g97D4k1U8ua_UBTyoqFXcPp5rf6KvuiY5d6mx5KMIPY,12222
119
+ fastmcp/server/tasks/subscriptions.py,sha256=iehPO2zx80aRIqKHCFj9kuR5NVMqYSkIepMXBifQFWw,6692
111
120
  fastmcp/tools/__init__.py,sha256=XGcaMkBgwr-AHzbNjyjdb3ATgp5TQ0wzSq0nsrBD__E,201
112
- fastmcp/tools/tool.py,sha256=stqAmfmtCLor_WCD9WpPE-a4dzvZX3wRP5imG97UvUU,22091
121
+ fastmcp/tools/tool.py,sha256=nED1tGlB-8v4DLBweIhHzAjw92whty-LcB1yCmEHv3I,23137
113
122
  fastmcp/tools/tool_manager.py,sha256=pCQGvKimXYEigcUqRHBd6_mbfJwD2KN3i0SmFj9Fj_c,5913
114
- fastmcp/tools/tool_transform.py,sha256=5ayCeLSUUTfhrWozODQ4yhF35t-XRnWPfc6vL3xtfJE,38579
123
+ fastmcp/tools/tool_transform.py,sha256=m1XDYuu_BDPxpH3yRNdT3jCca9KmVSO-Jd00BK4F5rw,38099
115
124
  fastmcp/utilities/__init__.py,sha256=-imJ8S-rXmbXMWeDamldP-dHDqAPg_wwmPVz-LNX14E,31
116
125
  fastmcp/utilities/auth.py,sha256=ZVHkNb4YBpLE1EmmFyhvFB2qfWDZdEYNH9TRI9jylOE,1140
117
126
  fastmcp/utilities/cli.py,sha256=46gyOddE8kWhUV2lHFM7kA2v0YNyzcajvIX3Db8gJXk,12174
118
- fastmcp/utilities/components.py,sha256=WY2Bmc4KOLFnDP3YVYB17q4tCCu8ky_naJ9MXFGX-6o,6009
127
+ fastmcp/utilities/components.py,sha256=fF4M9cdqbZTlDAZ0hltcTTg_8IU2jNSzOyH4oqH49ig,6087
119
128
  fastmcp/utilities/exceptions.py,sha256=7Z9j5IzM5rT27BC1Mcn8tkS-bjqCYqMKwb2MMTaxJYU,1350
120
129
  fastmcp/utilities/http.py,sha256=1ns1ymBS-WSxbZjGP6JYjSO52Wa_ls4j4WbnXiupoa4,245
121
130
  fastmcp/utilities/inspect.py,sha256=3wYUuQH1xCCCdzZwALHNqaRABH6iqpA43dIXEhqVb5Q,18030
122
131
  fastmcp/utilities/json_schema.py,sha256=-XjtAVzCaaJ_S-HoWo7Aabvlu8ubBqyoOinm9E85F4o,8888
123
- fastmcp/utilities/json_schema_type.py,sha256=AjBhZtAj9-g6goCZbzrSyFthlwrRrfrE4DzgCuphYdw,22250
132
+ fastmcp/utilities/json_schema_type.py,sha256=5cf1ZeHzqirrGx62kznqmgAWk0uCc29REVKcDRBeJX0,22348
124
133
  fastmcp/utilities/logging.py,sha256=61wVk5yQ62km3K8kZtkKtT_3EN26VL85GYW0aMtnwKA,7175
125
- fastmcp/utilities/mcp_config.py,sha256=qATTXMGiYET-7PflOixQOgiw3aOizX-RlloRjAo7nwI,1796
126
- fastmcp/utilities/openapi.py,sha256=Q3DD3Yc3JwoUG0usSI75OxbLT1ASq9FQwOymx1F8YZk,63339
127
- fastmcp/utilities/tests.py,sha256=ChjKv-k5vf9y4ZHqItagBtooqPNrQiiJLAARUVOEP6M,8922
128
- fastmcp/utilities/types.py,sha256=GA6aweKOke8nJDnESka3EKv9vStfKK5NiCZwLUF8Ars,17231
134
+ fastmcp/utilities/mcp_config.py,sha256=lVllZtAXZ3Zy78D40aXN-S5fs-ms0lgryL1tY2WzwCY,1783
135
+ fastmcp/utilities/tests.py,sha256=VIsYPpk07tXvE02yK_neBUeZgu5YtbUlK6JJNzU-6lQ,9229
136
+ fastmcp/utilities/types.py,sha256=7c56m736JjbKY-YP7RLWPZcsW5Z7mikpByKaDQ5IJwg,17586
129
137
  fastmcp/utilities/ui.py,sha256=gcnha7Vj4xEBxdrS83EZlKpN_43AQzcgiZFEvkTqzqg,14252
130
138
  fastmcp/utilities/mcp_server_config/__init__.py,sha256=hHBxEwRsrgN0Q-1bvj28X6UVGDpfG6dt3yfSBGsOY80,791
131
139
  fastmcp/utilities/mcp_server_config/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
132
- fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py,sha256=9XHryV-JnAcPP5YR_EzAkUDmj5Fm3PE8lNUgTflYZfs,15467
140
+ fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py,sha256=1B3J7sRR0GcOW6FcSNNTTTOtEePNhUKc7Y0xEDk-wao,15497
133
141
  fastmcp/utilities/mcp_server_config/v1/schema.json,sha256=ymDNFOWzcpnhIMeJmVPTw9b-NtHoHoru8Mc0WlSVxUY,8602
134
142
  fastmcp/utilities/mcp_server_config/v1/environments/__init__.py,sha256=Tkv0dmJ6tKKotOBo-tho09QVdvEjy37iBsvBbEwH0EA,256
135
143
  fastmcp/utilities/mcp_server_config/v1/environments/base.py,sha256=fbC1C25jI1whwXLlIQtmji5B4UEHLgKvw5K8NICb33Y,826
@@ -137,8 +145,16 @@ fastmcp/utilities/mcp_server_config/v1/environments/uv.py,sha256=DPVAXM5JDTN89wO
137
145
  fastmcp/utilities/mcp_server_config/v1/sources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
146
  fastmcp/utilities/mcp_server_config/v1/sources/base.py,sha256=Y5MCxJyoDsaxcBN1zDL0CZtF5oAXxT_yqQOI-ze9b34,967
139
147
  fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py,sha256=eFX47XNXz2oKHW8MZvx60dqyHkBxdg2FMOrHcyAS28g,8106
140
- fastmcp-2.13.3.dist-info/METADATA,sha256=NJupIezScBX3GtYch_qp9e-VGA5k1w3pFvsgwoUnqf4,20512
141
- fastmcp-2.13.3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
142
- fastmcp-2.13.3.dist-info/entry_points.txt,sha256=ff8bMtKX1JvXyurMibAacMSKbJEPmac9ffAKU9mLnM8,44
143
- fastmcp-2.13.3.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
144
- fastmcp-2.13.3.dist-info/RECORD,,
148
+ fastmcp/utilities/openapi/README.md,sha256=pcxMeSIHUmuhXHRYV7GOuMUZtw9QBv-rowQIDqmkab8,7657
149
+ fastmcp/utilities/openapi/__init__.py,sha256=6FTQyP-kWvFg5Ykq53j7byBhPuysOyMYSrFTdUAKeO0,1592
150
+ fastmcp/utilities/openapi/director.py,sha256=bsK5W8-vdydbB85xMLy5WsQJewnObXaDrtAIS5HdKjY,7956
151
+ fastmcp/utilities/openapi/formatters.py,sha256=AWyETOfnBmTUcD1T2ajfkbsVyyMnN4tZ-U34hFScWqI,15546
152
+ fastmcp/utilities/openapi/json_schema_converter.py,sha256=PxaYpgHBsdDTT0XSP6s4RZBMeDpAO_-dRXlBF2iYD9s,13089
153
+ fastmcp/utilities/openapi/models.py,sha256=-kfndwZSe92tVtKAgOuFn5rk1tN7oydCZKtLOEMEalA,2805
154
+ fastmcp/utilities/openapi/parser.py,sha256=qsa68Ro1c8ov77kdEP20IwZqD74E4IGKjtfeIkn3HdE,34338
155
+ fastmcp/utilities/openapi/schemas.py,sha256=84nPtnOlfjNoFGDoVoWLs0dh_7Ps92p3AuHgpVA5a-s,23349
156
+ fastmcp-2.14.1.dist-info/METADATA,sha256=aNyfWR6oKRLz0VSxRKuof27SbNeQvjvve0X3SxXwOa4,20617
157
+ fastmcp-2.14.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
158
+ fastmcp-2.14.1.dist-info/entry_points.txt,sha256=ff8bMtKX1JvXyurMibAacMSKbJEPmac9ffAKU9mLnM8,44
159
+ fastmcp-2.14.1.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
160
+ fastmcp-2.14.1.dist-info/RECORD,,
@@ -1,56 +0,0 @@
1
- import inspect
2
- from collections.abc import Awaitable, Callable
3
- from typing import TypeAlias
4
-
5
- import mcp.types
6
- from mcp import CreateMessageResult
7
- from mcp.client.session import ClientSession, SamplingFnT
8
- from mcp.shared.context import LifespanContextT, RequestContext
9
- from mcp.types import CreateMessageRequestParams as SamplingParams
10
- from mcp.types import SamplingMessage
11
-
12
- from fastmcp.server.sampling.handler import ServerSamplingHandler
13
-
14
- __all__ = ["SamplingHandler", "SamplingMessage", "SamplingParams"]
15
-
16
-
17
- ClientSamplingHandler: TypeAlias = Callable[
18
- [
19
- list[SamplingMessage],
20
- SamplingParams,
21
- RequestContext[ClientSession, LifespanContextT],
22
- ],
23
- str | CreateMessageResult | Awaitable[str | CreateMessageResult],
24
- ]
25
-
26
- SamplingHandler: TypeAlias = (
27
- ClientSamplingHandler[LifespanContextT] | ServerSamplingHandler[LifespanContextT]
28
- )
29
-
30
-
31
- def create_sampling_callback(
32
- sampling_handler: ClientSamplingHandler[LifespanContextT],
33
- ) -> SamplingFnT:
34
- async def _sampling_handler(
35
- context: RequestContext[ClientSession, LifespanContextT],
36
- params: SamplingParams,
37
- ) -> CreateMessageResult | mcp.types.ErrorData:
38
- try:
39
- result = sampling_handler(params.messages, params, context)
40
- if inspect.isawaitable(result):
41
- result = await result
42
-
43
- if isinstance(result, str):
44
- result = CreateMessageResult(
45
- role="assistant",
46
- model="fastmcp-client",
47
- content=mcp.types.TextContent(type="text", text=result),
48
- )
49
- return result
50
- except Exception as e:
51
- return mcp.types.ErrorData(
52
- code=mcp.types.INTERNAL_ERROR,
53
- message=str(e),
54
- )
55
-
56
- return _sampling_handler
@@ -1,21 +0,0 @@
1
- from abc import ABC, abstractmethod
2
- from collections.abc import Awaitable
3
-
4
- from mcp import ClientSession, CreateMessageResult
5
- from mcp.server.session import ServerSession
6
- from mcp.shared.context import LifespanContextT, RequestContext
7
- from mcp.types import CreateMessageRequestParams as SamplingParams
8
- from mcp.types import (
9
- SamplingMessage,
10
- )
11
-
12
-
13
- class BaseLLMSamplingHandler(ABC):
14
- @abstractmethod
15
- def __call__(
16
- self,
17
- messages: list[SamplingMessage],
18
- params: SamplingParams,
19
- context: RequestContext[ServerSession, LifespanContextT]
20
- | RequestContext[ClientSession, LifespanContextT],
21
- ) -> str | CreateMessageResult | Awaitable[str | CreateMessageResult]: ...
@@ -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", "JWKData", "JWKSData", "RSAKeyPair"]
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
- )