fastmcp 2.14.1__py3-none-any.whl → 2.14.3__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/cli/cli.py +9 -0
- fastmcp/client/auth/oauth.py +4 -1
- fastmcp/client/transports.py +19 -13
- fastmcp/prompts/prompt_manager.py +3 -4
- fastmcp/resources/resource_manager.py +9 -14
- fastmcp/server/auth/auth.py +20 -5
- fastmcp/server/auth/oauth_proxy.py +118 -25
- fastmcp/server/auth/providers/supabase.py +11 -6
- fastmcp/server/context.py +28 -4
- fastmcp/server/dependencies.py +5 -0
- fastmcp/server/elicitation.py +7 -3
- fastmcp/server/middleware/error_handling.py +1 -1
- fastmcp/server/openapi/components.py +2 -4
- fastmcp/server/server.py +24 -57
- fastmcp/server/tasks/handlers.py +19 -10
- fastmcp/server/tasks/protocol.py +12 -8
- fastmcp/server/tasks/subscriptions.py +3 -5
- fastmcp/settings.py +15 -0
- fastmcp/tools/tool.py +5 -1
- fastmcp/tools/tool_manager.py +5 -7
- fastmcp/utilities/cli.py +49 -42
- fastmcp/utilities/json_schema.py +40 -0
- fastmcp/utilities/openapi/schemas.py +4 -4
- fastmcp/utilities/version_check.py +153 -0
- {fastmcp-2.14.1.dist-info → fastmcp-2.14.3.dist-info}/METADATA +6 -3
- {fastmcp-2.14.1.dist-info → fastmcp-2.14.3.dist-info}/RECORD +29 -28
- {fastmcp-2.14.1.dist-info → fastmcp-2.14.3.dist-info}/WHEEL +0 -0
- {fastmcp-2.14.1.dist-info → fastmcp-2.14.3.dist-info}/entry_points.txt +0 -0
- {fastmcp-2.14.1.dist-info → fastmcp-2.14.3.dist-info}/licenses/LICENSE +0 -0
|
@@ -539,9 +539,9 @@ def extract_output_schema_from_responses(
|
|
|
539
539
|
# Replace $ref with the actual schema definition
|
|
540
540
|
output_schema = _replace_ref_with_defs(schema_definitions[schema_name])
|
|
541
541
|
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
542
|
+
if openapi_version and openapi_version.startswith("3"):
|
|
543
|
+
# Convert OpenAPI 3.x schema to JSON Schema format for proper handling
|
|
544
|
+
# of constructs like oneOf, anyOf, and nullable fields
|
|
545
545
|
from .json_schema_converter import convert_openapi_schema_to_json_schema
|
|
546
546
|
|
|
547
547
|
output_schema = convert_openapi_schema_to_json_schema(
|
|
@@ -570,7 +570,7 @@ def extract_output_schema_from_responses(
|
|
|
570
570
|
processed_defs[name] = _replace_ref_with_defs(schema)
|
|
571
571
|
|
|
572
572
|
# Convert OpenAPI schema definitions to JSON Schema format if needed
|
|
573
|
-
if openapi_version and openapi_version.startswith("3
|
|
573
|
+
if openapi_version and openapi_version.startswith("3"):
|
|
574
574
|
from .json_schema_converter import convert_openapi_schema_to_json_schema
|
|
575
575
|
|
|
576
576
|
for def_name in list(processed_defs.keys()):
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"""Version checking utilities for FastMCP."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
import time
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
import httpx
|
|
10
|
+
from packaging.version import Version
|
|
11
|
+
|
|
12
|
+
from fastmcp.utilities.logging import get_logger
|
|
13
|
+
|
|
14
|
+
logger = get_logger(__name__)
|
|
15
|
+
|
|
16
|
+
PYPI_URL = "https://pypi.org/pypi/fastmcp/json"
|
|
17
|
+
CACHE_TTL_SECONDS = 60 * 60 * 12 # 12 hours
|
|
18
|
+
REQUEST_TIMEOUT_SECONDS = 2.0
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def _get_cache_path(include_prereleases: bool = False) -> Path:
|
|
22
|
+
"""Get the path to the version cache file."""
|
|
23
|
+
import fastmcp
|
|
24
|
+
|
|
25
|
+
suffix = "_prerelease" if include_prereleases else ""
|
|
26
|
+
return fastmcp.settings.home / f"version_cache{suffix}.json"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _read_cache(include_prereleases: bool = False) -> tuple[str | None, float]:
|
|
30
|
+
"""Read cached version info.
|
|
31
|
+
|
|
32
|
+
Returns:
|
|
33
|
+
Tuple of (cached_version, cache_timestamp) or (None, 0) if no cache.
|
|
34
|
+
"""
|
|
35
|
+
cache_path = _get_cache_path(include_prereleases)
|
|
36
|
+
if not cache_path.exists():
|
|
37
|
+
return None, 0
|
|
38
|
+
|
|
39
|
+
try:
|
|
40
|
+
data = json.loads(cache_path.read_text())
|
|
41
|
+
return data.get("latest_version"), data.get("timestamp", 0)
|
|
42
|
+
except (json.JSONDecodeError, OSError):
|
|
43
|
+
return None, 0
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def _write_cache(latest_version: str, include_prereleases: bool = False) -> None:
|
|
47
|
+
"""Write version info to cache."""
|
|
48
|
+
cache_path = _get_cache_path(include_prereleases)
|
|
49
|
+
try:
|
|
50
|
+
cache_path.parent.mkdir(parents=True, exist_ok=True)
|
|
51
|
+
cache_path.write_text(
|
|
52
|
+
json.dumps({"latest_version": latest_version, "timestamp": time.time()})
|
|
53
|
+
)
|
|
54
|
+
except OSError:
|
|
55
|
+
# Silently ignore cache write failures
|
|
56
|
+
pass
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def _fetch_latest_version(include_prereleases: bool = False) -> str | None:
|
|
60
|
+
"""Fetch the latest version from PyPI.
|
|
61
|
+
|
|
62
|
+
Args:
|
|
63
|
+
include_prereleases: If True, include pre-release versions (alpha, beta, rc).
|
|
64
|
+
|
|
65
|
+
Returns:
|
|
66
|
+
The latest version string, or None if the fetch failed.
|
|
67
|
+
"""
|
|
68
|
+
try:
|
|
69
|
+
response = httpx.get(PYPI_URL, timeout=REQUEST_TIMEOUT_SECONDS)
|
|
70
|
+
response.raise_for_status()
|
|
71
|
+
data = response.json()
|
|
72
|
+
|
|
73
|
+
releases = data.get("releases", {})
|
|
74
|
+
if not releases:
|
|
75
|
+
return None
|
|
76
|
+
|
|
77
|
+
versions = []
|
|
78
|
+
for version_str in releases:
|
|
79
|
+
try:
|
|
80
|
+
v = Version(version_str)
|
|
81
|
+
# Skip prereleases if not requested
|
|
82
|
+
if not include_prereleases and v.is_prerelease:
|
|
83
|
+
continue
|
|
84
|
+
versions.append(v)
|
|
85
|
+
except ValueError:
|
|
86
|
+
logger.debug(f"Skipping invalid version string: {version_str}")
|
|
87
|
+
continue
|
|
88
|
+
|
|
89
|
+
if not versions:
|
|
90
|
+
return None
|
|
91
|
+
|
|
92
|
+
return str(max(versions))
|
|
93
|
+
|
|
94
|
+
except (httpx.HTTPError, json.JSONDecodeError, KeyError):
|
|
95
|
+
return None
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def get_latest_version(include_prereleases: bool = False) -> str | None:
|
|
99
|
+
"""Get the latest version of FastMCP from PyPI, using cache when available.
|
|
100
|
+
|
|
101
|
+
Args:
|
|
102
|
+
include_prereleases: If True, include pre-release versions.
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
The latest version string, or None if unavailable.
|
|
106
|
+
"""
|
|
107
|
+
# Check cache first
|
|
108
|
+
cached_version, cache_timestamp = _read_cache(include_prereleases)
|
|
109
|
+
if cached_version and (time.time() - cache_timestamp) < CACHE_TTL_SECONDS:
|
|
110
|
+
return cached_version
|
|
111
|
+
|
|
112
|
+
# Fetch from PyPI
|
|
113
|
+
latest_version = _fetch_latest_version(include_prereleases)
|
|
114
|
+
|
|
115
|
+
# Update cache if we got a valid version
|
|
116
|
+
if latest_version:
|
|
117
|
+
_write_cache(latest_version, include_prereleases)
|
|
118
|
+
return latest_version
|
|
119
|
+
|
|
120
|
+
# Return stale cache if available
|
|
121
|
+
return cached_version
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def check_for_newer_version() -> str | None:
|
|
125
|
+
"""Check if a newer version of FastMCP is available.
|
|
126
|
+
|
|
127
|
+
Returns:
|
|
128
|
+
The latest version string if newer than current, None otherwise.
|
|
129
|
+
"""
|
|
130
|
+
import fastmcp
|
|
131
|
+
|
|
132
|
+
setting = fastmcp.settings.check_for_updates
|
|
133
|
+
if setting == "off":
|
|
134
|
+
return None
|
|
135
|
+
|
|
136
|
+
include_prereleases = setting == "prerelease"
|
|
137
|
+
latest_version = get_latest_version(include_prereleases)
|
|
138
|
+
if not latest_version:
|
|
139
|
+
return None
|
|
140
|
+
|
|
141
|
+
try:
|
|
142
|
+
current = Version(fastmcp.__version__)
|
|
143
|
+
latest = Version(latest_version)
|
|
144
|
+
|
|
145
|
+
if latest > current:
|
|
146
|
+
return latest_version
|
|
147
|
+
except ValueError:
|
|
148
|
+
logger.debug(
|
|
149
|
+
f"Could not compare versions: current={fastmcp.__version__!r}, "
|
|
150
|
+
f"latest={latest_version!r}"
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
return None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fastmcp
|
|
3
|
-
Version: 2.14.
|
|
3
|
+
Version: 2.14.3
|
|
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,12 +23,12 @@ 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<2.0,>=1.24.0
|
|
27
27
|
Requires-Dist: openapi-pydantic>=0.5.1
|
|
28
28
|
Requires-Dist: platformdirs>=4.0.0
|
|
29
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.
|
|
31
|
+
Requires-Dist: pydocket>=0.16.6
|
|
32
32
|
Requires-Dist: pyperclip>=1.9.0
|
|
33
33
|
Requires-Dist: python-dotenv>=1.1.0
|
|
34
34
|
Requires-Dist: rich>=13.9.4
|
|
@@ -75,6 +75,9 @@ Description-Content-Type: text/markdown
|
|
|
75
75
|
>
|
|
76
76
|
> **For production MCP applications, install FastMCP:** `pip install fastmcp`
|
|
77
77
|
|
|
78
|
+
> [!Important]
|
|
79
|
+
> FastMCP 3.0 is in development and may include breaking changes. To avoid unexpected issues, pin your dependency to v2: `fastmcp<3`
|
|
80
|
+
|
|
78
81
|
---
|
|
79
82
|
|
|
80
83
|
**FastMCP is the standard framework for building MCP applications**, providing the fastest path from idea to production.
|
|
@@ -3,10 +3,10 @@ fastmcp/dependencies.py,sha256=Un5S30WHJbAiIdjVjEeaQC7UcEVEkkyjf4EF7l4FYq0,513
|
|
|
3
3
|
fastmcp/exceptions.py,sha256=-krEavxwddQau6T7MESCR4VjKNLfP9KHJrU1p3y72FU,744
|
|
4
4
|
fastmcp/mcp_config.py,sha256=YXZ0piljrxFgPYEwYSwPw6IiPwU3Cwp2VzlT9CWxutc,11397
|
|
5
5
|
fastmcp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
fastmcp/settings.py,sha256=
|
|
6
|
+
fastmcp/settings.py,sha256=IL3r6kyGzy3WW4evL4BwDfBGNNArbCnwnGmKlOHTr8Y,13888
|
|
7
7
|
fastmcp/cli/__init__.py,sha256=Bo7WQWPBRQ6fqbYYPfbadefpXgl2h9gkdMaqTazGWyw,49
|
|
8
8
|
fastmcp/cli/__main__.py,sha256=cGU_smvfctQI9xEY13u7tTEwwUI4AUieikXXA7ykYhA,69
|
|
9
|
-
fastmcp/cli/cli.py,sha256=
|
|
9
|
+
fastmcp/cli/cli.py,sha256=Bedska9lyo7NuMUb4G0hvBK3OzG7BMTnA756s72rdq8,28664
|
|
10
10
|
fastmcp/cli/run.py,sha256=HeaiHYcVY17JpHg4UjnIHkP5ttU0PNd1bZIL3brif8A,7047
|
|
11
11
|
fastmcp/cli/tasks.py,sha256=B57vy76d3ybdi4wmlODRCCFrte1GmhLKqYixzRkGUuw,3791
|
|
12
12
|
fastmcp/cli/install/__init__.py,sha256=FUrwjMVaxONgz1qO7suzJNz1xosRfR3TOHlr3Z77JXA,797
|
|
@@ -25,10 +25,10 @@ fastmcp/client/oauth_callback.py,sha256=3xqL5_HD1QS9eGfw31HzoVF94QQelq_0TTqS7qWD
|
|
|
25
25
|
fastmcp/client/progress.py,sha256=WjLLDbUKMsx8DK-fqO7AGsXb83ak-6BMrLvzzznGmcI,1043
|
|
26
26
|
fastmcp/client/roots.py,sha256=Uap1RSr3uEeQRZTHkEttkhTI2fOA8IeDcRSggtZp9aY,2568
|
|
27
27
|
fastmcp/client/tasks.py,sha256=zjiTfvjU9NaA4e3XTBGHsqvSfBRR19UqZMIUhJ_nQTo,19480
|
|
28
|
-
fastmcp/client/transports.py,sha256=
|
|
28
|
+
fastmcp/client/transports.py,sha256=g-LDLwTw-t8lkV0u_nFL3XgC0L_sccD98R7OnU5d9F0,43583
|
|
29
29
|
fastmcp/client/auth/__init__.py,sha256=4DNsfp4iaQeBcpds0JDdMn6Mmfud44stWLsret0sVKY,91
|
|
30
30
|
fastmcp/client/auth/bearer.py,sha256=MFEFqcH6u_V86msYiOsEFKN5ks1V9BnBNiPsPLHUTqo,399
|
|
31
|
-
fastmcp/client/auth/oauth.py,sha256=
|
|
31
|
+
fastmcp/client/auth/oauth.py,sha256=PXtWFFSqR29QZ_ZYk74EIRHdj_qOGP2yerXb0HDw2ns,12745
|
|
32
32
|
fastmcp/client/sampling/__init__.py,sha256=jaquyp7c5lz4mczv0d5Skl153uWrnXVcS4qCmbjLKRY,2208
|
|
33
33
|
fastmcp/client/sampling/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
34
34
|
fastmcp/client/sampling/handlers/anthropic.py,sha256=LjxTYzIWOnbJwJDHJOkRybW0dXBcyt2c7B4sCaG3uLM,14318
|
|
@@ -54,26 +54,26 @@ fastmcp/experimental/server/openapi/__init__.py,sha256=QNrM6ZNwJLk78jh7hq1tdZ-Wn
|
|
|
54
54
|
fastmcp/experimental/utilities/openapi/__init__.py,sha256=-SIYFQ4CE9MTxKQbksQ4J3lwm409EV3qKkHuTwAEyNk,907
|
|
55
55
|
fastmcp/prompts/__init__.py,sha256=BQ5ooDJcNhb5maYBcg2mF1VaHAY_A64cEU3UiCQ3Lw8,179
|
|
56
56
|
fastmcp/prompts/prompt.py,sha256=6Q6xKDIw5MdPC9dTAnM-9FRtA-34dv4qqTrD_5s2w0Y,14483
|
|
57
|
-
fastmcp/prompts/prompt_manager.py,sha256=
|
|
57
|
+
fastmcp/prompts/prompt_manager.py,sha256=OJiRAlWLPrPVfyzAzKfP_OHBXKqsU4eotrbUJNABz-A,4205
|
|
58
58
|
fastmcp/resources/__init__.py,sha256=si8aT_9taxUNN0vkfbifst_SCId56DZmYi4YOb4mtlE,463
|
|
59
59
|
fastmcp/resources/resource.py,sha256=PNzfTpywc5OIvDtFgAa8SGymzBbpwZCa32Mshh9YcGk,7890
|
|
60
|
-
fastmcp/resources/resource_manager.py,sha256=
|
|
60
|
+
fastmcp/resources/resource_manager.py,sha256=yG3EieKY9DqIcYTIFJkSJlRoXeffV6mTOnW3EwpoZfY,13008
|
|
61
61
|
fastmcp/resources/template.py,sha256=MSAK46bYk74nqJTQ923xb4KETlof9clfg_QaqLrJX_Y,15495
|
|
62
62
|
fastmcp/resources/types.py,sha256=efFLGD1Xc5Xq3sxlPaZ_8gtJ2UOixueTBV4KQTi4cOU,4936
|
|
63
63
|
fastmcp/server/__init__.py,sha256=qxNmIJcqsrpxpUvCv0mhdEAaUn1UZd1xLd8XRoWUlfY,119
|
|
64
|
-
fastmcp/server/context.py,sha256=
|
|
65
|
-
fastmcp/server/dependencies.py,sha256=
|
|
66
|
-
fastmcp/server/elicitation.py,sha256=
|
|
64
|
+
fastmcp/server/context.py,sha256=vivwwI4u7RuaYMivQ0IlqqHDQxZo682ZMckt-5muC3A,43187
|
|
65
|
+
fastmcp/server/dependencies.py,sha256=gRc60PhEvna9rlqMW-ZlYNszPlUeEeOWT5winYGNH2A,20928
|
|
66
|
+
fastmcp/server/elicitation.py,sha256=CmHi_SERmhEcNjwnM90_HGihUKlCM3RPGHI0uns2t7M,17912
|
|
67
67
|
fastmcp/server/event_store.py,sha256=ZiBbrUQHw9--G8lzK1qLZmUAF2le2XchFen4pGbFKsE,6170
|
|
68
68
|
fastmcp/server/http.py,sha256=_HjMSYWH8mfKugDODU4iV0AhKDU2VRc40tS56L6i-_s,12737
|
|
69
69
|
fastmcp/server/low_level.py,sha256=o3jDf5SuZBQeurhLWRzaSVCnvrmaKMH_w-TbHk6BuZ4,7963
|
|
70
70
|
fastmcp/server/proxy.py,sha256=bsgVkcdlRtVK3bB4EeVKrq4PLjIoUvWN_hgzr1hq8yE,26837
|
|
71
|
-
fastmcp/server/server.py,sha256=
|
|
71
|
+
fastmcp/server/server.py,sha256=MjNPByytoVMyNvxjn9K26vDB1k7hKeXvOa52K3uivT4,121608
|
|
72
72
|
fastmcp/server/auth/__init__.py,sha256=MTZvDKEUMqjs9-raRN0h8Zjx8pWFXs_iSRbB1UqBUqU,527
|
|
73
|
-
fastmcp/server/auth/auth.py,sha256=
|
|
73
|
+
fastmcp/server/auth/auth.py,sha256=Bvm98USOP0A0yTckKCN7yHJHS4JgCG804W5cQx6GgO4,20430
|
|
74
74
|
fastmcp/server/auth/jwt_issuer.py,sha256=lJYvrpC1ygI4jkoJlL_nTH6m7FKdTw2lbEycKo4eHLY,7197
|
|
75
75
|
fastmcp/server/auth/middleware.py,sha256=xwj3fUCLSlJK6n1Ehp-FN1qnjKqEz8b7LGAGMTqQ8Hk,3284
|
|
76
|
-
fastmcp/server/auth/oauth_proxy.py,sha256=
|
|
76
|
+
fastmcp/server/auth/oauth_proxy.py,sha256=pEvYQAhTRT6eiIkK4eG5VnlOIr7fnHSEDO803ULCP5Q,94785
|
|
77
77
|
fastmcp/server/auth/oidc_proxy.py,sha256=gU_RgBbVMj-9vn0TSRTmT1YaT19VFmJLpARcIXn208k,17969
|
|
78
78
|
fastmcp/server/auth/redirect_validation.py,sha256=Jlhela9xpTbw4aWnQ04A5Z-TW0HYOC3f9BMsq3NXx1Q,2000
|
|
79
79
|
fastmcp/server/auth/handlers/authorize.py,sha256=1zrmXqRUhjiWSHgUhfj0CcCkj3uSlGkTnxHzaic0xYs,11617
|
|
@@ -91,11 +91,11 @@ fastmcp/server/auth/providers/introspection.py,sha256=v2hlcuxxwug5myCr4KcTZlawwa
|
|
|
91
91
|
fastmcp/server/auth/providers/jwt.py,sha256=c-2Wji-CvuYt3U3unxjJR-5-EABRDks_755EpxKBDH8,20798
|
|
92
92
|
fastmcp/server/auth/providers/oci.py,sha256=QxpsStKEyl_W4dcJOky4m6wdpGnCSnt7WQ8DWjGPmSU,9894
|
|
93
93
|
fastmcp/server/auth/providers/scalekit.py,sha256=30J2HImUAkyknMgH7lUGytcDOy4d01ClxTrBCO4E3GQ,9064
|
|
94
|
-
fastmcp/server/auth/providers/supabase.py,sha256=
|
|
94
|
+
fastmcp/server/auth/providers/supabase.py,sha256=T3Qq1mkkzZ9T9ah3uK7qRuMMLWeD_3eRLJRnpiqgTiY,7618
|
|
95
95
|
fastmcp/server/auth/providers/workos.py,sha256=_KWsgKPV4OJ6a37FaVgq2LIzM3Nx26G5QQhgS8x2MO4,17244
|
|
96
96
|
fastmcp/server/middleware/__init__.py,sha256=LXT2IcZI4gbAtR4TnA7v_1lOWBR6eaHiE3Cp32Pv0bc,155
|
|
97
97
|
fastmcp/server/middleware/caching.py,sha256=xYUXkFeuoLaIJ_TB2570qEBS1TtneJClJOpJGNsNbu8,18414
|
|
98
|
-
fastmcp/server/middleware/error_handling.py,sha256=
|
|
98
|
+
fastmcp/server/middleware/error_handling.py,sha256=TqERAA3qMvqb0Q0N_rwD5iOhoefOW2WT9IGSUZIWFik,7772
|
|
99
99
|
fastmcp/server/middleware/logging.py,sha256=Reta-f4z8suYkJn4rPyJWYrNBeU25w8Y40U0uaV9ygo,9427
|
|
100
100
|
fastmcp/server/middleware/middleware.py,sha256=-L4QuyyjIF1QIcydWzamrmpIE2w7d2f35-QyoXMZnZM,6643
|
|
101
101
|
fastmcp/server/middleware/rate_limiting.py,sha256=MwhMOhgsIhZjYwEQB8H8961hohV5564JlTwwYy_9ctU,7915
|
|
@@ -103,7 +103,7 @@ fastmcp/server/middleware/timing.py,sha256=lL_xc-ErLD5lplfvd5-HIyWEbZhgNBYkcQ74K
|
|
|
103
103
|
fastmcp/server/middleware/tool_injection.py,sha256=zElqBN-yjZvcTADp57e0dn86kpxT9xsFqvYztiXuA08,3595
|
|
104
104
|
fastmcp/server/openapi/README.md,sha256=1Mc1Ur15OxMn-wAPEa1rZIiNNSMdv9sboQ3YpvNpUXM,9886
|
|
105
105
|
fastmcp/server/openapi/__init__.py,sha256=cZPebMY9xwjW8nUgTN5MvawnZEFx9E0Oe_TFqSrevp0,728
|
|
106
|
-
fastmcp/server/openapi/components.py,sha256=
|
|
106
|
+
fastmcp/server/openapi/components.py,sha256=VdCwdyFh46Y8YIhz5qq1yVXhrQnIWu_KzWi9Ea2HOLc,13294
|
|
107
107
|
fastmcp/server/openapi/routing.py,sha256=_WWci6GNqtfF-5yO-uHwXXc9nNFNV-YlbIWHa7-lCk4,4018
|
|
108
108
|
fastmcp/server/openapi/server.py,sha256=aQ_VwvHxdsC-O-7k_uKmPDkOlcgtOW-gk-RtlLtEtuw,16069
|
|
109
109
|
fastmcp/server/sampling/__init__.py,sha256=u9jDHSE_yz6kTzbFqIOXqnM0PfIAiP-peAjHJBNqDd0,249
|
|
@@ -113,28 +113,29 @@ fastmcp/server/tasks/__init__.py,sha256=VizXvmXgA3SvrApQ6PSz4z1TPA9B6uROvmWeGSYO
|
|
|
113
113
|
fastmcp/server/tasks/capabilities.py,sha256=-8QMBjs6HZuQdUNmOrNEBvJs-opGptIyxOODU0TGGFE,574
|
|
114
114
|
fastmcp/server/tasks/config.py,sha256=msPkUuxnZKuqSj21Eh8m5Cwq0htwUzTCeoWsnbvKGkk,3006
|
|
115
115
|
fastmcp/server/tasks/converters.py,sha256=ON7c8gOMjBYiQoyk_vkymI8J01ccoYzizDwtgIIqIZQ,6701
|
|
116
|
-
fastmcp/server/tasks/handlers.py,sha256=
|
|
116
|
+
fastmcp/server/tasks/handlers.py,sha256=1KTyfPgpQ-6YRfiK3s10sqa2pkRB0tR6ZZzb55KLZDk,12884
|
|
117
117
|
fastmcp/server/tasks/keys.py,sha256=w9diycj0N6ViVqe6stxUS9vg2H94bl_614Bu5kNRM-k,3011
|
|
118
|
-
fastmcp/server/tasks/protocol.py,sha256=
|
|
119
|
-
fastmcp/server/tasks/subscriptions.py,sha256=
|
|
118
|
+
fastmcp/server/tasks/protocol.py,sha256=1wmpubpLb5URzz9JMrPSKmoRRtvrYJ_SW16DROAvXQo,12350
|
|
119
|
+
fastmcp/server/tasks/subscriptions.py,sha256=cNJptdgkofJ6Gg8ae92MAkr95aZewxl--l8BE1_ZJ1U,6615
|
|
120
120
|
fastmcp/tools/__init__.py,sha256=XGcaMkBgwr-AHzbNjyjdb3ATgp5TQ0wzSq0nsrBD__E,201
|
|
121
|
-
fastmcp/tools/tool.py,sha256=
|
|
122
|
-
fastmcp/tools/tool_manager.py,sha256=
|
|
121
|
+
fastmcp/tools/tool.py,sha256=_l0HEnuTyYxm_xNWYxO2seRnzb6NunvjnEsWQIeKBDY,23394
|
|
122
|
+
fastmcp/tools/tool_manager.py,sha256=_SSHYgKygZaJ86B2pncmBm2Kbj0NLIDrpphsc9qgB3M,5788
|
|
123
123
|
fastmcp/tools/tool_transform.py,sha256=m1XDYuu_BDPxpH3yRNdT3jCca9KmVSO-Jd00BK4F5rw,38099
|
|
124
124
|
fastmcp/utilities/__init__.py,sha256=-imJ8S-rXmbXMWeDamldP-dHDqAPg_wwmPVz-LNX14E,31
|
|
125
125
|
fastmcp/utilities/auth.py,sha256=ZVHkNb4YBpLE1EmmFyhvFB2qfWDZdEYNH9TRI9jylOE,1140
|
|
126
|
-
fastmcp/utilities/cli.py,sha256=
|
|
126
|
+
fastmcp/utilities/cli.py,sha256=QPYbVJnH0oNmGbo-vg-3nhqr-zJYSxJfsF7r2n9uQXc,12455
|
|
127
127
|
fastmcp/utilities/components.py,sha256=fF4M9cdqbZTlDAZ0hltcTTg_8IU2jNSzOyH4oqH49ig,6087
|
|
128
128
|
fastmcp/utilities/exceptions.py,sha256=7Z9j5IzM5rT27BC1Mcn8tkS-bjqCYqMKwb2MMTaxJYU,1350
|
|
129
129
|
fastmcp/utilities/http.py,sha256=1ns1ymBS-WSxbZjGP6JYjSO52Wa_ls4j4WbnXiupoa4,245
|
|
130
130
|
fastmcp/utilities/inspect.py,sha256=3wYUuQH1xCCCdzZwALHNqaRABH6iqpA43dIXEhqVb5Q,18030
|
|
131
|
-
fastmcp/utilities/json_schema.py,sha256
|
|
131
|
+
fastmcp/utilities/json_schema.py,sha256=H8RNucfulnXqYjCzRrlaWCBfToHmJGc7M32VJu5q7Eo,10587
|
|
132
132
|
fastmcp/utilities/json_schema_type.py,sha256=5cf1ZeHzqirrGx62kznqmgAWk0uCc29REVKcDRBeJX0,22348
|
|
133
133
|
fastmcp/utilities/logging.py,sha256=61wVk5yQ62km3K8kZtkKtT_3EN26VL85GYW0aMtnwKA,7175
|
|
134
134
|
fastmcp/utilities/mcp_config.py,sha256=lVllZtAXZ3Zy78D40aXN-S5fs-ms0lgryL1tY2WzwCY,1783
|
|
135
135
|
fastmcp/utilities/tests.py,sha256=VIsYPpk07tXvE02yK_neBUeZgu5YtbUlK6JJNzU-6lQ,9229
|
|
136
136
|
fastmcp/utilities/types.py,sha256=7c56m736JjbKY-YP7RLWPZcsW5Z7mikpByKaDQ5IJwg,17586
|
|
137
137
|
fastmcp/utilities/ui.py,sha256=gcnha7Vj4xEBxdrS83EZlKpN_43AQzcgiZFEvkTqzqg,14252
|
|
138
|
+
fastmcp/utilities/version_check.py,sha256=zjY2HaSW4f09Gjun3V6TLyaeJC_ZPPf16VvQAdDigO8,4419
|
|
138
139
|
fastmcp/utilities/mcp_server_config/__init__.py,sha256=hHBxEwRsrgN0Q-1bvj28X6UVGDpfG6dt3yfSBGsOY80,791
|
|
139
140
|
fastmcp/utilities/mcp_server_config/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
140
141
|
fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py,sha256=1B3J7sRR0GcOW6FcSNNTTTOtEePNhUKc7Y0xEDk-wao,15497
|
|
@@ -152,9 +153,9 @@ fastmcp/utilities/openapi/formatters.py,sha256=AWyETOfnBmTUcD1T2ajfkbsVyyMnN4tZ-
|
|
|
152
153
|
fastmcp/utilities/openapi/json_schema_converter.py,sha256=PxaYpgHBsdDTT0XSP6s4RZBMeDpAO_-dRXlBF2iYD9s,13089
|
|
153
154
|
fastmcp/utilities/openapi/models.py,sha256=-kfndwZSe92tVtKAgOuFn5rk1tN7oydCZKtLOEMEalA,2805
|
|
154
155
|
fastmcp/utilities/openapi/parser.py,sha256=qsa68Ro1c8ov77kdEP20IwZqD74E4IGKjtfeIkn3HdE,34338
|
|
155
|
-
fastmcp/utilities/openapi/schemas.py,sha256=
|
|
156
|
-
fastmcp-2.14.
|
|
157
|
-
fastmcp-2.14.
|
|
158
|
-
fastmcp-2.14.
|
|
159
|
-
fastmcp-2.14.
|
|
160
|
-
fastmcp-2.14.
|
|
156
|
+
fastmcp/utilities/openapi/schemas.py,sha256=UXHHjkJyDp1WwJ8kowYt79wnwdbDwAbUFfqwcIY6mIM,23359
|
|
157
|
+
fastmcp-2.14.3.dist-info/METADATA,sha256=Oj-OVe1cTUGmHVkFAlA6Zu_g4a92JnghvjJ-YbKwoAc,20771
|
|
158
|
+
fastmcp-2.14.3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
159
|
+
fastmcp-2.14.3.dist-info/entry_points.txt,sha256=ff8bMtKX1JvXyurMibAacMSKbJEPmac9ffAKU9mLnM8,44
|
|
160
|
+
fastmcp-2.14.3.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
161
|
+
fastmcp-2.14.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|