From c63fcc96ead36780dae81cb37672ffd4610a5bb4 Mon Sep 17 00:00:00 2001 From: Jeremiah Lowin <153965+jlowin@users.noreply.github.com> Date: Sun, 4 May 2025 12:18:28 -0400 Subject: [PATCH 1/2] Remove is_async attribute --- src/fastmcp/server/proxy.py | 1 - tests/tools/test_tool.py | 3 --- tests/tools/test_tool_manager.py | 3 --- 3 files changed, 7 deletions(-) diff --git a/src/fastmcp/server/proxy.py b/src/fastmcp/server/proxy.py index 52e63bfa3..a2f83fa4c 100644 --- a/src/fastmcp/server/proxy.py +++ b/src/fastmcp/server/proxy.py @@ -52,7 +52,6 @@ class ProxyTool(Tool): description=tool.description, parameters=tool.inputSchema, fn=_proxy_passthrough, - is_async=True, ) async def run( diff --git a/tests/tools/test_tool.py b/tests/tools/test_tool.py index e0316f81f..a12953e41 100644 --- a/tests/tools/test_tool.py +++ b/tests/tools/test_tool.py @@ -18,7 +18,6 @@ class TestToolFromFunction: assert tool.name == "add" assert tool.description == "Add two numbers." - assert tool.is_async is False assert tool.parameters["properties"]["a"]["type"] == "integer" assert tool.parameters["properties"]["b"]["type"] == "integer" @@ -33,7 +32,6 @@ class TestToolFromFunction: assert tool.name == "fetch_data" assert tool.description == "Fetch data from URL." - assert tool.is_async is True assert tool.parameters["properties"]["url"]["type"] == "string" def test_pydantic_model_function(self): @@ -51,7 +49,6 @@ class TestToolFromFunction: assert tool.name == "create_user" assert tool.description == "Create a new user." - assert tool.is_async is False assert "name" in tool.parameters["$defs"]["UserInput"]["properties"] assert "age" in tool.parameters["$defs"]["UserInput"]["properties"] assert "flag" in tool.parameters["properties"] diff --git a/tests/tools/test_tool_manager.py b/tests/tools/test_tool_manager.py index 0aaaca128..6cc44a36b 100644 --- a/tests/tools/test_tool_manager.py +++ b/tests/tools/test_tool_manager.py @@ -31,7 +31,6 @@ class TestAddTools: assert tool is not None assert tool.name == "add" assert tool.description == "Add two numbers." - assert tool.is_async is False assert tool.parameters["properties"]["a"]["type"] == "integer" assert tool.parameters["properties"]["b"]["type"] == "integer" @@ -49,7 +48,6 @@ class TestAddTools: assert tool is not None assert tool.name == "fetch_data" assert tool.description == "Fetch data from URL." - assert tool.is_async is True assert tool.parameters["properties"]["url"]["type"] == "string" def test_pydantic_model_function(self): @@ -70,7 +68,6 @@ class TestAddTools: assert tool is not None assert tool.name == "create_user" assert tool.description == "Create a new user." - assert tool.is_async is False assert "name" in tool.parameters["$defs"]["UserInput"]["properties"] assert "age" in tool.parameters["$defs"]["UserInput"]["properties"] assert "flag" in tool.parameters["properties"] From cdc08081904105a975b3bd8c825bbfcbf330f687 Mon Sep 17 00:00:00 2001 From: Jeremiah Lowin <153965+jlowin@users.noreply.github.com> Date: Sun, 4 May 2025 12:21:06 -0400 Subject: [PATCH 2/2] Finish removing --- src/fastmcp/server/openapi.py | 3 --- src/fastmcp/tools/tool.py | 3 --- 2 files changed, 6 deletions(-) diff --git a/src/fastmcp/server/openapi.py b/src/fastmcp/server/openapi.py index daeba1ea5..82a04307b 100644 --- a/src/fastmcp/server/openapi.py +++ b/src/fastmcp/server/openapi.py @@ -122,7 +122,6 @@ class OpenAPITool(Tool): name: str, description: str, parameters: dict[str, Any], - is_async: bool = True, tags: set[str] = set(), timeout: float | None = None, annotations: ToolAnnotations | None = None, @@ -133,7 +132,6 @@ class OpenAPITool(Tool): description=description, parameters=parameters, fn=self._execute_request, # We'll use an instance method instead of a global function - is_async=is_async, context_kwarg="context", # Default context keyword argument tags=tags, annotations=annotations, @@ -550,7 +548,6 @@ class FastMCPOpenAPI(FastMCP): name=tool_name, description=enhanced_description, parameters=combined_schema, - is_async=True, tags=set(route.tags or []), timeout=self._timeout, ) diff --git a/src/fastmcp/tools/tool.py b/src/fastmcp/tools/tool.py index 492dbeaca..4f178a6e8 100644 --- a/src/fastmcp/tools/tool.py +++ b/src/fastmcp/tools/tool.py @@ -40,7 +40,6 @@ class Tool(BaseModel): name: str = Field(description="Name of the tool") description: str = Field(description="Description of what the tool does") parameters: dict[str, Any] = Field(description="JSON schema for tool parameters") - is_async: bool = Field(description="Whether the tool is async") context_kwarg: str | None = Field( None, description="Name of the kwarg that should receive context" ) @@ -74,7 +73,6 @@ class Tool(BaseModel): raise ValueError("You must provide a name for lambda functions") func_doc = description or fn.__doc__ or "" - is_async = inspect.iscoroutinefunction(fn) if inspect.ismethod(fn) and hasattr(fn, "__func__"): sig = inspect.signature(fn.__func__) @@ -96,7 +94,6 @@ class Tool(BaseModel): name=func_name, description=func_doc, parameters=schema, - is_async=is_async, context_kwarg=context_kwarg, tags=tags or set(), annotations=annotations,