fastmcp 2.5.2__py3-none-any.whl → 2.6.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/client/__init__.py +3 -0
- fastmcp/client/auth/__init__.py +4 -0
- fastmcp/client/auth/bearer.py +17 -0
- fastmcp/client/auth/oauth.py +391 -0
- fastmcp/client/client.py +74 -26
- fastmcp/client/oauth_callback.py +310 -0
- fastmcp/client/transports.py +76 -14
- fastmcp/server/auth/__init__.py +4 -0
- fastmcp/server/auth/auth.py +45 -0
- fastmcp/server/auth/providers/bearer.py +377 -0
- fastmcp/server/auth/providers/bearer_env.py +62 -0
- fastmcp/server/auth/providers/in_memory.py +325 -0
- fastmcp/server/dependencies.py +10 -0
- fastmcp/server/http.py +38 -66
- fastmcp/server/openapi.py +2 -0
- fastmcp/server/server.py +21 -26
- fastmcp/settings.py +27 -8
- fastmcp/tools/tool.py +22 -3
- fastmcp/tools/tool_manager.py +2 -0
- fastmcp/utilities/http.py +8 -0
- fastmcp/utilities/tests.py +22 -10
- {fastmcp-2.5.2.dist-info → fastmcp-2.6.1.dist-info}/METADATA +28 -16
- {fastmcp-2.5.2.dist-info → fastmcp-2.6.1.dist-info}/RECORD +27 -19
- fastmcp/client/base.py +0 -0
- fastmcp/low_level/README.md +0 -1
- /fastmcp/{low_level → server/auth/providers}/__init__.py +0 -0
- {fastmcp-2.5.2.dist-info → fastmcp-2.6.1.dist-info}/WHEEL +0 -0
- {fastmcp-2.5.2.dist-info → fastmcp-2.6.1.dist-info}/entry_points.txt +0 -0
- {fastmcp-2.5.2.dist-info → fastmcp-2.6.1.dist-info}/licenses/LICENSE +0 -0
fastmcp/settings.py
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
from __future__ import annotations as _annotations
|
|
2
2
|
|
|
3
3
|
import inspect
|
|
4
|
-
from
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
from typing import Annotated, Literal
|
|
5
6
|
|
|
6
|
-
from mcp.server.auth.settings import AuthSettings
|
|
7
7
|
from pydantic import Field, model_validator
|
|
8
|
-
from pydantic_settings import
|
|
8
|
+
from pydantic_settings import (
|
|
9
|
+
BaseSettings,
|
|
10
|
+
SettingsConfigDict,
|
|
11
|
+
)
|
|
9
12
|
from typing_extensions import Self
|
|
10
13
|
|
|
11
|
-
if TYPE_CHECKING:
|
|
12
|
-
pass
|
|
13
|
-
|
|
14
14
|
LOG_LEVEL = Literal["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]
|
|
15
15
|
|
|
16
16
|
DuplicateBehavior = Literal["warn", "error", "replace", "ignore"]
|
|
@@ -27,6 +27,8 @@ class Settings(BaseSettings):
|
|
|
27
27
|
nested_model_default_partial_update=True,
|
|
28
28
|
)
|
|
29
29
|
|
|
30
|
+
home: Path = Path.home() / ".fastmcp"
|
|
31
|
+
|
|
30
32
|
test_mode: bool = False
|
|
31
33
|
log_level: LOG_LEVEL = "INFO"
|
|
32
34
|
enable_rich_tracebacks: Annotated[
|
|
@@ -171,13 +173,30 @@ class ServerSettings(BaseSettings):
|
|
|
171
173
|
# cache settings (for checking mounted servers)
|
|
172
174
|
cache_expiration_seconds: float = 0
|
|
173
175
|
|
|
174
|
-
auth: AuthSettings | None = None
|
|
175
|
-
|
|
176
176
|
# StreamableHTTP settings
|
|
177
177
|
json_response: bool = False
|
|
178
178
|
stateless_http: bool = (
|
|
179
179
|
False # If True, uses true stateless mode (new transport per request)
|
|
180
180
|
)
|
|
181
181
|
|
|
182
|
+
# Auth settings
|
|
183
|
+
default_auth_provider: Annotated[
|
|
184
|
+
Literal["bearer_env"] | None,
|
|
185
|
+
Field(
|
|
186
|
+
description=inspect.cleandoc(
|
|
187
|
+
"""
|
|
188
|
+
Configure the authentication provider. This setting is intended only to
|
|
189
|
+
be used for remote confirugation of providers that fully support
|
|
190
|
+
environment variable configuration.
|
|
191
|
+
|
|
192
|
+
If None, no automatic configuration will take place.
|
|
193
|
+
|
|
194
|
+
This setting is *always* overriden by any auth provider passed to the
|
|
195
|
+
FastMCP constructor.
|
|
196
|
+
"""
|
|
197
|
+
),
|
|
198
|
+
),
|
|
199
|
+
] = None
|
|
200
|
+
|
|
182
201
|
|
|
183
202
|
settings = Settings()
|
fastmcp/tools/tool.py
CHANGED
|
@@ -46,6 +46,10 @@ class Tool(BaseModel):
|
|
|
46
46
|
annotations: ToolAnnotations | None = Field(
|
|
47
47
|
None, description="Additional annotations about the tool"
|
|
48
48
|
)
|
|
49
|
+
exclude_args: list[str] | None = Field(
|
|
50
|
+
None,
|
|
51
|
+
description="Arguments to exclude from the tool schema, such as State, Memory, or Credential",
|
|
52
|
+
)
|
|
49
53
|
serializer: Callable[[Any], str] | None = Field(
|
|
50
54
|
None, description="Optional custom serializer for tool results"
|
|
51
55
|
)
|
|
@@ -58,6 +62,7 @@ class Tool(BaseModel):
|
|
|
58
62
|
description: str | None = None,
|
|
59
63
|
tags: set[str] | None = None,
|
|
60
64
|
annotations: ToolAnnotations | None = None,
|
|
65
|
+
exclude_args: list[str] | None = None,
|
|
61
66
|
serializer: Callable[[Any], str] | None = None,
|
|
62
67
|
) -> Tool:
|
|
63
68
|
"""Create a Tool from a function."""
|
|
@@ -71,6 +76,18 @@ class Tool(BaseModel):
|
|
|
71
76
|
if param.kind == inspect.Parameter.VAR_KEYWORD:
|
|
72
77
|
raise ValueError("Functions with **kwargs are not supported as tools")
|
|
73
78
|
|
|
79
|
+
if exclude_args:
|
|
80
|
+
for arg_name in exclude_args:
|
|
81
|
+
if arg_name not in sig.parameters:
|
|
82
|
+
raise ValueError(
|
|
83
|
+
f"Parameter '{arg_name}' in exclude_args does not exist in function."
|
|
84
|
+
)
|
|
85
|
+
param = sig.parameters[arg_name]
|
|
86
|
+
if param.default == inspect.Parameter.empty:
|
|
87
|
+
raise ValueError(
|
|
88
|
+
f"Parameter '{arg_name}' in exclude_args must have a default value."
|
|
89
|
+
)
|
|
90
|
+
|
|
74
91
|
func_name = name or getattr(fn, "__name__", None) or fn.__class__.__name__
|
|
75
92
|
|
|
76
93
|
if func_name == "<lambda>":
|
|
@@ -85,11 +102,12 @@ class Tool(BaseModel):
|
|
|
85
102
|
type_adapter = get_cached_typeadapter(fn)
|
|
86
103
|
schema = type_adapter.json_schema()
|
|
87
104
|
|
|
105
|
+
prune_params: list[str] = []
|
|
88
106
|
context_kwarg = find_kwarg_by_type(fn, kwarg_type=Context)
|
|
89
107
|
if context_kwarg:
|
|
90
|
-
prune_params
|
|
91
|
-
|
|
92
|
-
prune_params
|
|
108
|
+
prune_params.append(context_kwarg)
|
|
109
|
+
if exclude_args:
|
|
110
|
+
prune_params.extend(exclude_args)
|
|
93
111
|
|
|
94
112
|
schema = compress_schema(schema, prune_params=prune_params)
|
|
95
113
|
|
|
@@ -100,6 +118,7 @@ class Tool(BaseModel):
|
|
|
100
118
|
parameters=schema,
|
|
101
119
|
tags=tags or set(),
|
|
102
120
|
annotations=annotations,
|
|
121
|
+
exclude_args=exclude_args,
|
|
103
122
|
serializer=serializer,
|
|
104
123
|
)
|
|
105
124
|
|
fastmcp/tools/tool_manager.py
CHANGED
|
@@ -66,6 +66,7 @@ class ToolManager:
|
|
|
66
66
|
description: str | None = None,
|
|
67
67
|
tags: set[str] | None = None,
|
|
68
68
|
annotations: ToolAnnotations | None = None,
|
|
69
|
+
exclude_args: list[str] | None = None,
|
|
69
70
|
) -> Tool:
|
|
70
71
|
"""Add a tool to the server."""
|
|
71
72
|
tool = Tool.from_function(
|
|
@@ -75,6 +76,7 @@ class ToolManager:
|
|
|
75
76
|
tags=tags,
|
|
76
77
|
annotations=annotations,
|
|
77
78
|
serializer=self._serializer,
|
|
79
|
+
exclude_args=exclude_args,
|
|
78
80
|
)
|
|
79
81
|
return self.add_tool(tool)
|
|
80
82
|
|
fastmcp/utilities/tests.py
CHANGED
|
@@ -11,6 +11,7 @@ from typing import TYPE_CHECKING, Any, Literal
|
|
|
11
11
|
import uvicorn
|
|
12
12
|
|
|
13
13
|
from fastmcp.settings import settings
|
|
14
|
+
from fastmcp.utilities.http import find_available_port
|
|
14
15
|
|
|
15
16
|
if TYPE_CHECKING:
|
|
16
17
|
from fastmcp.server.server import FastMCP
|
|
@@ -71,30 +72,38 @@ def _run_server(mcp_server: FastMCP, transport: Literal["sse"], port: int) -> No
|
|
|
71
72
|
|
|
72
73
|
@contextmanager
|
|
73
74
|
def run_server_in_process(
|
|
74
|
-
server_fn: Callable[..., None],
|
|
75
|
+
server_fn: Callable[..., None],
|
|
76
|
+
*args,
|
|
77
|
+
provide_host_and_port: bool = True,
|
|
78
|
+
**kwargs,
|
|
75
79
|
) -> Generator[str, None, None]:
|
|
76
80
|
"""
|
|
77
|
-
Context manager that runs a
|
|
78
|
-
server URL. When the context manager is exited, the server process is killed.
|
|
81
|
+
Context manager that runs a FastMCP server in a separate process and
|
|
82
|
+
returns the server URL. When the context manager is exited, the server process is killed.
|
|
79
83
|
|
|
80
84
|
Args:
|
|
81
|
-
|
|
85
|
+
server_fn: The function that runs a FastMCP server. FastMCP servers are
|
|
86
|
+
not pickleable, so we need a function that creates and runs one.
|
|
87
|
+
*args: Arguments to pass to the server function.
|
|
88
|
+
provide_host_and_port: Whether to provide the host and port to the server function as kwargs.
|
|
89
|
+
**kwargs: Keyword arguments to pass to the server function.
|
|
82
90
|
|
|
83
91
|
Returns:
|
|
84
92
|
The server URL.
|
|
85
93
|
"""
|
|
86
94
|
host = "127.0.0.1"
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
95
|
+
port = find_available_port()
|
|
96
|
+
|
|
97
|
+
if provide_host_and_port:
|
|
98
|
+
kwargs |= {"host": host, "port": port}
|
|
90
99
|
|
|
91
100
|
proc = multiprocessing.Process(
|
|
92
|
-
target=server_fn, args=
|
|
101
|
+
target=server_fn, args=args, kwargs=kwargs, daemon=True
|
|
93
102
|
)
|
|
94
103
|
proc.start()
|
|
95
104
|
|
|
96
105
|
# Wait for server to be running
|
|
97
|
-
max_attempts =
|
|
106
|
+
max_attempts = 10
|
|
98
107
|
attempt = 0
|
|
99
108
|
while attempt < max_attempts and proc.is_alive():
|
|
100
109
|
try:
|
|
@@ -102,7 +111,10 @@ def run_server_in_process(
|
|
|
102
111
|
s.connect((host, port))
|
|
103
112
|
break
|
|
104
113
|
except ConnectionRefusedError:
|
|
105
|
-
|
|
114
|
+
if attempt < 3:
|
|
115
|
+
time.sleep(0.01)
|
|
116
|
+
else:
|
|
117
|
+
time.sleep(0.1)
|
|
106
118
|
attempt += 1
|
|
107
119
|
else:
|
|
108
120
|
raise RuntimeError(f"Server failed to start after {max_attempts} attempts")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fastmcp
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.6.1
|
|
4
4
|
Summary: The fast, Pythonic way to build MCP servers.
|
|
5
5
|
Project-URL: Homepage, https://gofastmcp.com
|
|
6
6
|
Project-URL: Repository, https://github.com/jlowin/fastmcp
|
|
@@ -17,9 +17,10 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
17
17
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
18
18
|
Classifier: Typing :: Typed
|
|
19
19
|
Requires-Python: >=3.10
|
|
20
|
+
Requires-Dist: authlib>=1.5.2
|
|
20
21
|
Requires-Dist: exceptiongroup>=1.2.2
|
|
21
22
|
Requires-Dist: httpx>=0.28.1
|
|
22
|
-
Requires-Dist: mcp<2.0.0,>=1.9.
|
|
23
|
+
Requires-Dist: mcp<2.0.0,>=1.9.2
|
|
23
24
|
Requires-Dist: openapi-pydantic>=0.5.1
|
|
24
25
|
Requires-Dist: python-dotenv>=1.1.0
|
|
25
26
|
Requires-Dist: rich>=13.9.4
|
|
@@ -41,14 +42,14 @@ Description-Content-Type: text/markdown
|
|
|
41
42
|
<a href="https://trendshift.io/repositories/13266" target="_blank"><img src="https://trendshift.io/api/badge/repositories/13266" alt="jlowin%2Ffastmcp | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
|
42
43
|
</div>
|
|
43
44
|
|
|
44
|
-
> [!
|
|
45
|
-
> ####
|
|
45
|
+
> [!Note]
|
|
46
|
+
> #### Beyond the Protocol
|
|
47
|
+
>
|
|
48
|
+
> FastMCP is the standard framework for working with the Model Context Protocol. FastMCP 1.0 was incorporated into the [official low-level Python SDK](https://github.com/modelcontextprotocol/python-sdk), and FastMCP 2.0 *(this project)* provides a complete toolkit for working with the MCP ecosystem.
|
|
46
49
|
>
|
|
47
|
-
> FastMCP
|
|
50
|
+
> FastMCP has a comprehensive set of features that go far beyond the core MCP specification, all in service of providing **the simplest path to production**. These include client support, server composition, auth, automatic generation from OpenAPI specs, remote server proxying, built-in testing tools, integrations, and more.
|
|
48
51
|
>
|
|
49
|
-
>
|
|
50
|
-
>
|
|
51
|
-
> FastMCP 2.0 is the complete toolkit for modern AI applications. Ready to upgrade or get started? Follow the [installation instructions](https://gofastmcp.com/getting-started/installation), which include specific steps for upgrading from the official MCP SDK.
|
|
52
|
+
> Ready to upgrade or get started? Follow the [installation instructions](/getting-started/installation), which include specific steps for upgrading from the official MCP SDK.
|
|
52
53
|
|
|
53
54
|
---
|
|
54
55
|
|
|
@@ -103,6 +104,7 @@ There are two ways to access the LLM-friendly documentation:
|
|
|
103
104
|
- [Proxy Servers](#proxy-servers)
|
|
104
105
|
- [Composing MCP Servers](#composing-mcp-servers)
|
|
105
106
|
- [OpenAPI \& FastAPI Generation](#openapi--fastapi-generation)
|
|
107
|
+
- [Authentication \& Security](#authentication--security)
|
|
106
108
|
- [Running Your Server](#running-your-server)
|
|
107
109
|
- [Contributing](#contributing)
|
|
108
110
|
- [Prerequisites](#prerequisites)
|
|
@@ -115,20 +117,20 @@ There are two ways to access the LLM-friendly documentation:
|
|
|
115
117
|
|
|
116
118
|
## What is MCP?
|
|
117
119
|
|
|
118
|
-
The [Model Context Protocol (MCP)](https://modelcontextprotocol.io) lets you build servers that expose data and functionality to LLM applications in a secure, standardized way.
|
|
120
|
+
The [Model Context Protocol (MCP)](https://modelcontextprotocol.io) lets you build servers that expose data and functionality to LLM applications in a secure, standardized way. It is often described as "the USB-C port for AI", providing a uniform way to connect LLMs to resources they can use. It may be easier to think of it as an API, but specifically designed for LLM interactions. MCP servers can:
|
|
119
121
|
|
|
120
|
-
- Expose data through **Resources** (
|
|
121
|
-
- Provide functionality through **Tools** (
|
|
122
|
-
- Define interaction patterns through **Prompts** (reusable templates)
|
|
122
|
+
- Expose data through **Resources** (think of these sort of like GET endpoints; they are used to load information into the LLM's context)
|
|
123
|
+
- Provide functionality through **Tools** (sort of like POST endpoints; they are used to execute code or otherwise produce a side effect)
|
|
124
|
+
- Define interaction patterns through **Prompts** (reusable templates for LLM interactions)
|
|
123
125
|
- And more!
|
|
124
126
|
|
|
125
|
-
FastMCP provides a high-level, Pythonic interface for building and interacting with these servers.
|
|
127
|
+
FastMCP provides a high-level, Pythonic interface for building, managing, and interacting with these servers.
|
|
126
128
|
|
|
127
129
|
## Why FastMCP?
|
|
128
130
|
|
|
129
131
|
The MCP protocol is powerful but implementing it involves a lot of boilerplate - server setup, protocol handlers, content types, error management. FastMCP handles all the complex protocol details and server management, so you can focus on building great tools. It's designed to be high-level and Pythonic; in most cases, decorating a function is all you need.
|
|
130
132
|
|
|
131
|
-
|
|
133
|
+
FastMCP 2.0 has evolved into a comprehensive platform that goes far beyond basic protocol implementation. While 1.0 provided server-building capabilities (and is now part of the official MCP SDK), 2.0 offers a complete ecosystem including client libraries, authentication systems, deployment tools, integrations with major AI platforms, testing frameworks, and production-ready infrastructure patterns.
|
|
132
134
|
|
|
133
135
|
FastMCP aims to be:
|
|
134
136
|
|
|
@@ -138,7 +140,7 @@ FastMCP aims to be:
|
|
|
138
140
|
|
|
139
141
|
🐍 **Pythonic:** Feels natural to Python developers
|
|
140
142
|
|
|
141
|
-
🔍 **Complete:**
|
|
143
|
+
🔍 **Complete:** A comprehensive platform for all MCP use cases, from dev to prod
|
|
142
144
|
|
|
143
145
|
## Installation
|
|
144
146
|
|
|
@@ -156,7 +158,7 @@ These are the building blocks for creating MCP servers and clients with FastMCP.
|
|
|
156
158
|
|
|
157
159
|
### The `FastMCP` Server
|
|
158
160
|
|
|
159
|
-
The central object representing your MCP application. It holds your tools, resources, and prompts, manages connections, and can be configured with settings like
|
|
161
|
+
The central object representing your MCP application. It holds your tools, resources, and prompts, manages connections, and can be configured with settings like authentication.
|
|
160
162
|
|
|
161
163
|
```python
|
|
162
164
|
from fastmcp import FastMCP
|
|
@@ -329,6 +331,16 @@ Automatically generate FastMCP servers from existing OpenAPI specifications (`Fa
|
|
|
329
331
|
|
|
330
332
|
Learn more: [**OpenAPI Integration**](https://gofastmcp.com/patterns/openapi) | [**FastAPI Integration**](https://gofastmcp.com/patterns/fastapi).
|
|
331
333
|
|
|
334
|
+
### Authentication & Security
|
|
335
|
+
|
|
336
|
+
FastMCP provides built-in authentication support to secure both your MCP servers and clients in production environments. Protect your server endpoints from unauthorized access and authenticate your clients against secured MCP servers using industry-standard protocols.
|
|
337
|
+
|
|
338
|
+
- **Server Protection**: Secure your FastMCP server endpoints with configurable authentication providers
|
|
339
|
+
- **Client Authentication**: Connect to authenticated MCP servers with automatic credential management
|
|
340
|
+
- **Production Ready**: Support for common authentication patterns used in enterprise environments
|
|
341
|
+
|
|
342
|
+
Learn more in the **Authentication Documentation** for [servers](https://gofastmcp.com/servers/auth) and [clients](https://gofastmcp.com/clients/auth).
|
|
343
|
+
|
|
332
344
|
## Running Your Server
|
|
333
345
|
|
|
334
346
|
The main way to run a FastMCP server is by calling the `run()` method on your server instance:
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
fastmcp/__init__.py,sha256=yTAqLZORsPqbr7AE0ayw6zIYBeMlxQlI-3HE2WqbvHk,435
|
|
2
2
|
fastmcp/exceptions.py,sha256=YvaKqOT3w0boXF9ylIoaSIzW9XiQ1qLFG1LZq6B60H8,680
|
|
3
3
|
fastmcp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
fastmcp/settings.py,sha256=
|
|
4
|
+
fastmcp/settings.py,sha256=DbFdWx4EVHhJZF6e2GB0pBMCSjc425kXIVY8mqfOVX8,6175
|
|
5
5
|
fastmcp/cli/__init__.py,sha256=Ii284TNoG5lxTP40ETMGhHEq3lQZWxu9m9JuU57kUpQ,87
|
|
6
6
|
fastmcp/cli/claude.py,sha256=IAlcZ4qZKBBj09jZUMEx7EANZE_IR3vcu7zOBJmMOuU,4567
|
|
7
7
|
fastmcp/cli/cli.py,sha256=CQxpRTXgnQQynGJLEV5g1FnLMaiWoiUgefnMZ7VxS4o,12367
|
|
8
8
|
fastmcp/cli/run.py,sha256=o7Ge6JZKXYwlY2vYdMNoVX8agBchAaeU_73iPndojIM,5351
|
|
9
|
-
fastmcp/client/__init__.py,sha256=
|
|
10
|
-
fastmcp/client/
|
|
11
|
-
fastmcp/client/client.py,sha256=JxFC_YUOrDPZwiDbD0JgCHQsOy1F8Rup7hnege96OIc,23021
|
|
9
|
+
fastmcp/client/__init__.py,sha256=kd2hhSuD8rZuF87c9zlPJP_icJ-Rx3exyNoK0EzfOtE,617
|
|
10
|
+
fastmcp/client/client.py,sha256=vQk0l6htoD6CyO0le8q23iYd5hX1l8NIbxchedbWqgE,24872
|
|
12
11
|
fastmcp/client/logging.py,sha256=hOPRailZUp89RUck6V4HPaWVZinVrNY8HD4hD0dd-fE,822
|
|
12
|
+
fastmcp/client/oauth_callback.py,sha256=ODAnVX-ettL82RuI5KpfkKf8iDtYMDue3Tnab5sjQtM,10071
|
|
13
13
|
fastmcp/client/progress.py,sha256=WjLLDbUKMsx8DK-fqO7AGsXb83ak-6BMrLvzzznGmcI,1043
|
|
14
14
|
fastmcp/client/roots.py,sha256=IxI_bHwHTmg6c2H-s1av1ZgrRnNDieHtYwdGFbzXT5c,2471
|
|
15
15
|
fastmcp/client/sampling.py,sha256=UlDHxnd6k_HoU8RA3ob0g8-e6haJBc9u27N_v291QoI,1698
|
|
16
|
-
fastmcp/client/transports.py,sha256=
|
|
16
|
+
fastmcp/client/transports.py,sha256=XBbw5nDzDQffeWmfDgWgXZUOX0hJqk3fdusnqqUge9c,31822
|
|
17
|
+
fastmcp/client/auth/__init__.py,sha256=4DNsfp4iaQeBcpds0JDdMn6Mmfud44stWLsret0sVKY,91
|
|
18
|
+
fastmcp/client/auth/bearer.py,sha256=MFEFqcH6u_V86msYiOsEFKN5ks1V9BnBNiPsPLHUTqo,399
|
|
19
|
+
fastmcp/client/auth/oauth.py,sha256=LJHCB-34EC-sL9GC97XFQkyanK8Cc5skAp6GkH0tKzE,14709
|
|
17
20
|
fastmcp/contrib/README.md,sha256=rKknYSI1T192UvSszqwwDlQ2eYQpxywrNTLoj177SYU,878
|
|
18
21
|
fastmcp/contrib/bulk_tool_caller/README.md,sha256=5aUUY1TSFKtz1pvTLSDqkUCkGkuqMfMZNsLeaNqEgAc,1960
|
|
19
22
|
fastmcp/contrib/bulk_tool_caller/__init__.py,sha256=xvGSSaUXTQrc31erBoi1Gh7BikgOliETDiYVTP3rLxY,75
|
|
@@ -23,8 +26,6 @@ fastmcp/contrib/mcp_mixin/README.md,sha256=9DDTJXWkA3yv1fp5V58gofmARPQ2xWDhblYGv
|
|
|
23
26
|
fastmcp/contrib/mcp_mixin/__init__.py,sha256=aw9IQ1ssNjCgws4ZNt8bkdpossAAGVAwwjBpMp9O5ZQ,153
|
|
24
27
|
fastmcp/contrib/mcp_mixin/example.py,sha256=GnunkXmtG5hLLTUsM8aW5ZURU52Z8vI4tNLl-fK7Dg0,1228
|
|
25
28
|
fastmcp/contrib/mcp_mixin/mcp_mixin.py,sha256=cfIRbnSxsVzglTD-auyTE0izVQeHP7Oz18qzYoBZJgg,7899
|
|
26
|
-
fastmcp/low_level/README.md,sha256=IRvElvOOc_RLLsqbUm7e6VOEwrKHPJeox0pV7JVKHWw,106
|
|
27
|
-
fastmcp/low_level/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
29
|
fastmcp/prompts/__init__.py,sha256=An8uMBUh9Hrb7qqcn_5_Hent7IOeSh7EA2IUVsIrtHc,179
|
|
29
30
|
fastmcp/prompts/prompt.py,sha256=_bMuLMSnkH_vJpPcf_b8HOUnMOsQJXZdtjZBoebzNjI,8249
|
|
30
31
|
fastmcp/prompts/prompt_manager.py,sha256=qptEhZHMwc8XxQd5lTQg8iIb5MiTZVsNaux_XLvQ0mw,3871
|
|
@@ -35,26 +36,33 @@ fastmcp/resources/template.py,sha256=u0_-yNMmZfnl5DqtSRndGbGBrm7JgbzBU8IUd0hrEWE
|
|
|
35
36
|
fastmcp/resources/types.py,sha256=5fUFvzRlekNjtfihtq8S-fT0alKoNfclzrugqeM5JRE,6366
|
|
36
37
|
fastmcp/server/__init__.py,sha256=bMD4aQD4yJqLz7-mudoNsyeV8UgQfRAg3PRwPvwTEds,119
|
|
37
38
|
fastmcp/server/context.py,sha256=yN1e0LsnCl7cEpr9WlbvFhSf8oE56kKb-20m8h2SsBY,10171
|
|
38
|
-
fastmcp/server/dependencies.py,sha256=
|
|
39
|
-
fastmcp/server/http.py,sha256=
|
|
40
|
-
fastmcp/server/openapi.py,sha256=
|
|
39
|
+
fastmcp/server/dependencies.py,sha256=DfN40fz4UkmdzvVg3QesuHKUVJ07iQU5ookkWawAoH4,2336
|
|
40
|
+
fastmcp/server/http.py,sha256=RbUnqqKsiThOGZwJH-BIzC5_V1EXQh9tBlN4S-JJhbY,11624
|
|
41
|
+
fastmcp/server/openapi.py,sha256=yYO-_9QQhi6IUGW-TsSHkhZFLll4wt5ysbtl0VHaHZM,39239
|
|
41
42
|
fastmcp/server/proxy.py,sha256=mt3eM6TQWfnZD5XehmTXisskZ4CBbsWyjRPjprlTjBY,9653
|
|
42
|
-
fastmcp/server/server.py,sha256=
|
|
43
|
+
fastmcp/server/server.py,sha256=f_31CGp6MOLDzApe9epOlQryPZnc2rmFzIGprICJAYU,57739
|
|
44
|
+
fastmcp/server/auth/__init__.py,sha256=doHCLwOIElvH1NrTdpeP9JKfnNf3MDYPSpQfdsQ-uI0,84
|
|
45
|
+
fastmcp/server/auth/auth.py,sha256=kz02HGwXYU0N0clURZDjFNWdKSpTYmgmCnGJN-jSG3Y,1640
|
|
46
|
+
fastmcp/server/auth/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
47
|
+
fastmcp/server/auth/providers/bearer.py,sha256=3pTKL3tEU7FlCD5yI81LTa2n0dBsM7GRpIIn30WCWsA,12679
|
|
48
|
+
fastmcp/server/auth/providers/bearer_env.py,sha256=MXsr4rjRm8DDmbdNd7IEXT6naCq48fkC1LlpoFAjt7c,1971
|
|
49
|
+
fastmcp/server/auth/providers/in_memory.py,sha256=sCRJambxXFZLg_EbJ5ma-aUZvtxuuKbGy7lTxIbzVb0,13772
|
|
43
50
|
fastmcp/tools/__init__.py,sha256=ocw-SFTtN6vQ8fgnlF8iNAOflRmh79xS1xdO0Bc3QPE,96
|
|
44
|
-
fastmcp/tools/tool.py,sha256=
|
|
45
|
-
fastmcp/tools/tool_manager.py,sha256=
|
|
51
|
+
fastmcp/tools/tool.py,sha256=Lj0PZYNKbqZRBouqn17ayz2gDgU2-bEfHOC75r4GOB8,8687
|
|
52
|
+
fastmcp/tools/tool_manager.py,sha256=HVT1-8Sdir5yY45oOUedMWnD8HJUkVkLUy0U-eAayoQ,4516
|
|
46
53
|
fastmcp/utilities/__init__.py,sha256=-imJ8S-rXmbXMWeDamldP-dHDqAPg_wwmPVz-LNX14E,31
|
|
47
54
|
fastmcp/utilities/cache.py,sha256=aV3oZ-ZhMgLSM9iAotlUlEy5jFvGXrVo0Y5Bj4PBtqY,707
|
|
48
55
|
fastmcp/utilities/decorators.py,sha256=AjhjsetQZF4YOPV5MTZmIxO21iFp_4fDIS3O2_KNCEg,2990
|
|
49
56
|
fastmcp/utilities/exceptions.py,sha256=Aax9K0larjzrrgJBS6o_PQwoIrvBvVwck2suZvgafXE,1359
|
|
57
|
+
fastmcp/utilities/http.py,sha256=1ns1ymBS-WSxbZjGP6JYjSO52Wa_ls4j4WbnXiupoa4,245
|
|
50
58
|
fastmcp/utilities/json_schema.py,sha256=m65XU9lPq7pCxJ9vvCeGRl0HOFr6ArezvYpMBR6-gAg,3777
|
|
51
59
|
fastmcp/utilities/logging.py,sha256=B1WNO-ZWFjd9wiFSh13YtW1hAKaNmbpscDZleIAhr-g,1317
|
|
52
60
|
fastmcp/utilities/mcp_config.py,sha256=_wY3peaFDEgyOBkJ_Tb8sETk3mtdwtw1053q7ry0za0,2169
|
|
53
61
|
fastmcp/utilities/openapi.py,sha256=QQos4vP59HQ8vPDTKftWOIVv_zmW30mNxYSXVU7JUbY,38441
|
|
54
|
-
fastmcp/utilities/tests.py,sha256=
|
|
62
|
+
fastmcp/utilities/tests.py,sha256=4Vuua6nVgbE5uQspEK0fk4tBuJ0rO4GTBmnyD0kXJPA,3930
|
|
55
63
|
fastmcp/utilities/types.py,sha256=6CcqAQ1QqCO2HGSFlPS6FO5JRWnacjCcO2-EhyEnZV0,4400
|
|
56
|
-
fastmcp-2.
|
|
57
|
-
fastmcp-2.
|
|
58
|
-
fastmcp-2.
|
|
59
|
-
fastmcp-2.
|
|
60
|
-
fastmcp-2.
|
|
64
|
+
fastmcp-2.6.1.dist-info/METADATA,sha256=kTe3mh_2fOQJZRICJy6pAZS0gQmEKxrLZ2LXn57Vtoo,17609
|
|
65
|
+
fastmcp-2.6.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
66
|
+
fastmcp-2.6.1.dist-info/entry_points.txt,sha256=ff8bMtKX1JvXyurMibAacMSKbJEPmac9ffAKU9mLnM8,44
|
|
67
|
+
fastmcp-2.6.1.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
68
|
+
fastmcp-2.6.1.dist-info/RECORD,,
|
fastmcp/client/base.py
DELETED
|
File without changes
|
fastmcp/low_level/README.md
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Patched low-level objects. When possible, we prefer the official SDK, but we patch bugs here if necessary.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|