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.
- fastmcp/__init__.py +0 -21
- fastmcp/cli/__init__.py +0 -3
- fastmcp/cli/__main__.py +5 -0
- fastmcp/cli/cli.py +8 -22
- fastmcp/cli/install/shared.py +0 -15
- fastmcp/cli/tasks.py +110 -0
- fastmcp/client/auth/oauth.py +9 -9
- fastmcp/client/client.py +739 -136
- fastmcp/client/elicitation.py +11 -5
- fastmcp/client/messages.py +7 -5
- fastmcp/client/roots.py +2 -1
- fastmcp/client/sampling/__init__.py +69 -0
- fastmcp/client/sampling/handlers/__init__.py +0 -0
- fastmcp/client/sampling/handlers/anthropic.py +387 -0
- fastmcp/client/sampling/handlers/openai.py +399 -0
- fastmcp/client/tasks.py +551 -0
- fastmcp/client/transports.py +72 -21
- fastmcp/contrib/component_manager/component_service.py +4 -20
- fastmcp/dependencies.py +25 -0
- fastmcp/experimental/sampling/handlers/__init__.py +5 -0
- fastmcp/experimental/sampling/handlers/openai.py +4 -169
- fastmcp/experimental/server/openapi/__init__.py +15 -13
- fastmcp/experimental/utilities/openapi/__init__.py +12 -38
- fastmcp/prompts/prompt.py +38 -38
- fastmcp/resources/resource.py +33 -16
- fastmcp/resources/template.py +69 -59
- fastmcp/server/auth/__init__.py +0 -9
- fastmcp/server/auth/auth.py +127 -3
- fastmcp/server/auth/oauth_proxy.py +47 -97
- fastmcp/server/auth/oidc_proxy.py +7 -0
- fastmcp/server/auth/providers/in_memory.py +2 -2
- fastmcp/server/auth/providers/oci.py +2 -2
- fastmcp/server/context.py +509 -180
- fastmcp/server/dependencies.py +464 -6
- fastmcp/server/elicitation.py +285 -47
- fastmcp/server/event_store.py +177 -0
- fastmcp/server/http.py +15 -3
- fastmcp/server/low_level.py +56 -12
- fastmcp/server/middleware/middleware.py +2 -2
- fastmcp/server/openapi/__init__.py +35 -0
- fastmcp/{experimental/server → server}/openapi/components.py +4 -3
- fastmcp/{experimental/server → server}/openapi/routing.py +1 -1
- fastmcp/{experimental/server → server}/openapi/server.py +6 -5
- fastmcp/server/proxy.py +53 -40
- fastmcp/server/sampling/__init__.py +10 -0
- fastmcp/server/sampling/run.py +301 -0
- fastmcp/server/sampling/sampling_tool.py +108 -0
- fastmcp/server/server.py +793 -552
- fastmcp/server/tasks/__init__.py +21 -0
- fastmcp/server/tasks/capabilities.py +22 -0
- fastmcp/server/tasks/config.py +89 -0
- fastmcp/server/tasks/converters.py +206 -0
- fastmcp/server/tasks/handlers.py +356 -0
- fastmcp/server/tasks/keys.py +93 -0
- fastmcp/server/tasks/protocol.py +355 -0
- fastmcp/server/tasks/subscriptions.py +205 -0
- fastmcp/settings.py +101 -103
- fastmcp/tools/tool.py +83 -49
- fastmcp/tools/tool_transform.py +1 -12
- fastmcp/utilities/components.py +3 -3
- fastmcp/utilities/json_schema_type.py +4 -4
- fastmcp/utilities/mcp_config.py +1 -2
- fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +1 -1
- fastmcp/{experimental/utilities → utilities}/openapi/README.md +7 -35
- fastmcp/utilities/openapi/__init__.py +63 -0
- fastmcp/{experimental/utilities → utilities}/openapi/formatters.py +5 -5
- fastmcp/{experimental/utilities → utilities}/openapi/json_schema_converter.py +1 -1
- fastmcp/utilities/tests.py +11 -5
- fastmcp/utilities/types.py +8 -0
- {fastmcp-2.13.3.dist-info → fastmcp-2.14.1.dist-info}/METADATA +7 -4
- {fastmcp-2.13.3.dist-info → fastmcp-2.14.1.dist-info}/RECORD +79 -63
- fastmcp/client/sampling.py +0 -56
- fastmcp/experimental/sampling/handlers/base.py +0 -21
- fastmcp/server/auth/providers/bearer.py +0 -25
- fastmcp/server/openapi.py +0 -1087
- fastmcp/server/sampling/handler.py +0 -19
- fastmcp/utilities/openapi.py +0 -1568
- /fastmcp/{experimental/server → server}/openapi/README.md +0 -0
- /fastmcp/{experimental/utilities → utilities}/openapi/director.py +0 -0
- /fastmcp/{experimental/utilities → utilities}/openapi/models.py +0 -0
- /fastmcp/{experimental/utilities → utilities}/openapi/parser.py +0 -0
- /fastmcp/{experimental/utilities → utilities}/openapi/schemas.py +0 -0
- {fastmcp-2.13.3.dist-info → fastmcp-2.14.1.dist-info}/WHEEL +0 -0
- {fastmcp-2.13.3.dist-info → fastmcp-2.14.1.dist-info}/entry_points.txt +0 -0
- {fastmcp-2.13.3.dist-info → fastmcp-2.14.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# OpenAPI Utilities
|
|
1
|
+
# OpenAPI Utilities
|
|
2
2
|
|
|
3
|
-
This directory contains the
|
|
3
|
+
This directory contains the OpenAPI integration utilities for FastMCP.
|
|
4
4
|
|
|
5
5
|
## Architecture Overview
|
|
6
6
|
|
|
7
|
-
The
|
|
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/
|
|
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.
|
|
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.
|
|
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/
|
|
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
|
|
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
|
|
76
|
-
param[id]=123¶m[type]=user
|
|
75
|
+
For example, `{"id": "123", "type": "user"}` becomes
|
|
76
|
+
`param[id]=123¶m[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"
|
|
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
|
|
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```"
|
fastmcp/utilities/tests.py
CHANGED
|
@@ -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
|
-
#
|
|
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(
|
|
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")
|
fastmcp/utilities/types.py
CHANGED
|
@@ -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.
|
|
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
|
|
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.
|
|
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/
|
|
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=
|
|
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=
|
|
6
|
-
fastmcp/cli/__init__.py,sha256=
|
|
7
|
-
fastmcp/cli/
|
|
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=
|
|
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=
|
|
18
|
-
fastmcp/client/elicitation.py,sha256=
|
|
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=
|
|
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=
|
|
24
|
-
fastmcp/client/
|
|
25
|
-
fastmcp/client/transports.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
45
|
-
fastmcp/experimental/sampling/handlers/
|
|
46
|
-
fastmcp/experimental/
|
|
47
|
-
fastmcp/experimental/
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
70
|
-
fastmcp/server/dependencies.py,sha256=
|
|
71
|
-
fastmcp/server/elicitation.py,sha256=
|
|
72
|
-
fastmcp/server/
|
|
73
|
-
fastmcp/server/
|
|
74
|
-
fastmcp/server/
|
|
75
|
-
fastmcp/server/proxy.py,sha256=
|
|
76
|
-
fastmcp/server/server.py,sha256=
|
|
77
|
-
fastmcp/server/auth/__init__.py,sha256=
|
|
78
|
-
fastmcp/server/auth/auth.py,sha256=
|
|
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=
|
|
82
|
-
fastmcp/server/auth/oidc_proxy.py,sha256=
|
|
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=
|
|
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
|
|
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
|
|
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/
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
126
|
-
fastmcp/utilities/
|
|
127
|
-
fastmcp/utilities/
|
|
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=
|
|
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
|
|
141
|
-
fastmcp
|
|
142
|
-
fastmcp
|
|
143
|
-
fastmcp
|
|
144
|
-
fastmcp
|
|
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,,
|
fastmcp/client/sampling.py
DELETED
|
@@ -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
|
-
)
|