diff --git a/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py b/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py index 86f8c9aec..83879acaa 100644 --- a/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +++ b/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py @@ -6,9 +6,9 @@ from collections.abc import Callable from typing import TYPE_CHECKING, Any import fastmcp -from fastmcp.prompts.prompt import Prompt -from fastmcp.resources.resource import Resource -from fastmcp.tools.tool import Tool +from fastmcp.prompts.base import Prompt +from fastmcp.resources.base import Resource +from fastmcp.tools.base import Tool from fastmcp.utilities.types import get_fn_name if TYPE_CHECKING: diff --git a/src/fastmcp/experimental/transforms/code_mode.py b/src/fastmcp/experimental/transforms/code_mode.py index 02593e6f8..07306428d 100644 --- a/src/fastmcp/experimental/transforms/code_mode.py +++ b/src/fastmcp/experimental/transforms/code_mode.py @@ -14,7 +14,7 @@ from fastmcp.server.transforms.search.base import ( serialize_tools_for_output_json, serialize_tools_for_output_markdown, ) -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult from fastmcp.utilities.async_utils import is_coroutine_function from fastmcp.utilities.versions import VersionSpec diff --git a/src/fastmcp/prompts/__init__.py b/src/fastmcp/prompts/__init__.py index 7148c052d..d1b866075 100644 --- a/src/fastmcp/prompts/__init__.py +++ b/src/fastmcp/prompts/__init__.py @@ -1,5 +1,13 @@ +import sys + from .function_prompt import FunctionPrompt, prompt -from .prompt import Message, Prompt, PromptArgument, PromptMessage, PromptResult +from .base import Message, Prompt, PromptArgument, PromptMessage, PromptResult + +# Backward compat: prompt.py was renamed to base.py to stop Pyright from resolving +# `from fastmcp.prompts import prompt` as the submodule instead of the decorator function. +# This shim keeps `from fastmcp.prompts.prompt import Prompt` working at runtime. +# Safe to remove once we're confident no external code imports from the old path. +sys.modules[f"{__name__}.prompt"] = sys.modules[f"{__name__}.base"] __all__ = [ "FunctionPrompt", diff --git a/src/fastmcp/prompts/prompt.py b/src/fastmcp/prompts/base.py similarity index 100% rename from src/fastmcp/prompts/prompt.py rename to src/fastmcp/prompts/base.py diff --git a/src/fastmcp/prompts/function_prompt.py b/src/fastmcp/prompts/function_prompt.py index 132c36489..7fc0fd8ed 100644 --- a/src/fastmcp/prompts/function_prompt.py +++ b/src/fastmcp/prompts/function_prompt.py @@ -25,7 +25,7 @@ from pydantic.json_schema import SkipJsonSchema import fastmcp from fastmcp.decorators import resolve_task_config from fastmcp.exceptions import PromptError -from fastmcp.prompts.prompt import Prompt, PromptArgument, PromptResult +from fastmcp.prompts.base import Prompt, PromptArgument, PromptResult from fastmcp.server.auth.authorization import AuthCheck from fastmcp.server.dependencies import ( transform_context_annotations, diff --git a/src/fastmcp/resources/__init__.py b/src/fastmcp/resources/__init__.py index 68785c144..cbcfff785 100644 --- a/src/fastmcp/resources/__init__.py +++ b/src/fastmcp/resources/__init__.py @@ -1,5 +1,7 @@ +import sys + from .function_resource import FunctionResource, resource -from .resource import Resource, ResourceContent, ResourceResult +from .base import Resource, ResourceContent, ResourceResult from .template import ResourceTemplate from .types import ( BinaryResource, @@ -22,3 +24,9 @@ __all__ = [ "TextResource", "resource", ] + +# Backward compat: resource.py was renamed to base.py to stop Pyright from resolving +# `from fastmcp.resources import resource` as the submodule instead of the decorator function. +# This shim keeps `from fastmcp.resources.resource import Resource` working at runtime. +# Safe to remove once we're confident no external code imports from the old path. +sys.modules[f"{__name__}.resource"] = sys.modules[f"{__name__}.base"] diff --git a/src/fastmcp/resources/resource.py b/src/fastmcp/resources/base.py similarity index 100% rename from src/fastmcp/resources/resource.py rename to src/fastmcp/resources/base.py diff --git a/src/fastmcp/resources/function_resource.py b/src/fastmcp/resources/function_resource.py index 5a3f28ee8..fa46637bc 100644 --- a/src/fastmcp/resources/function_resource.py +++ b/src/fastmcp/resources/function_resource.py @@ -15,7 +15,7 @@ from pydantic.json_schema import SkipJsonSchema import fastmcp from fastmcp.decorators import resolve_task_config -from fastmcp.resources.resource import Resource, ResourceResult +from fastmcp.resources.base import Resource, ResourceResult from fastmcp.server.apps import resolve_ui_mime_type from fastmcp.server.auth.authorization import AuthCheck from fastmcp.server.dependencies import ( diff --git a/src/fastmcp/resources/template.py b/src/fastmcp/resources/template.py index a10769023..6550004f8 100644 --- a/src/fastmcp/resources/template.py +++ b/src/fastmcp/resources/template.py @@ -23,7 +23,7 @@ from pydantic import ( validate_call, ) -from fastmcp.resources.resource import Resource, ResourceResult +from fastmcp.resources.base import Resource, ResourceResult from fastmcp.server.apps import resolve_ui_mime_type from fastmcp.server.auth.authorization import AuthCheck from fastmcp.server.dependencies import ( diff --git a/src/fastmcp/resources/types.py b/src/fastmcp/resources/types.py index 30642683b..72e2bdd9e 100644 --- a/src/fastmcp/resources/types.py +++ b/src/fastmcp/resources/types.py @@ -12,7 +12,7 @@ from pydantic import Field, ValidationInfo from typing_extensions import override from fastmcp.exceptions import ResourceError -from fastmcp.resources.resource import Resource, ResourceContent, ResourceResult +from fastmcp.resources.base import Resource, ResourceContent, ResourceResult from fastmcp.utilities.logging import get_logger logger = get_logger(__name__) diff --git a/src/fastmcp/server/app.py b/src/fastmcp/server/app.py index 7d7f93cb4..9d786414a 100644 --- a/src/fastmcp/server/app.py +++ b/src/fastmcp/server/app.py @@ -38,7 +38,7 @@ from fastmcp.decorators import get_fastmcp_meta from fastmcp.server.auth.authorization import AuthCheck from fastmcp.server.providers.base import Provider from fastmcp.server.providers.local_provider import LocalProvider -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool from fastmcp.utilities.logging import get_logger logger = get_logger(__name__) diff --git a/src/fastmcp/server/auth/authorization.py b/src/fastmcp/server/auth/authorization.py index 8455b81f5..64eb5f721 100644 --- a/src/fastmcp/server/auth/authorization.py +++ b/src/fastmcp/server/auth/authorization.py @@ -40,7 +40,7 @@ logger = logging.getLogger(__name__) if TYPE_CHECKING: from fastmcp.server.auth import AccessToken - from fastmcp.tools.tool import Tool + from fastmcp.tools.base import Tool from fastmcp.utilities.components import FastMCPComponent @@ -66,7 +66,7 @@ class AuthContext: Returns the component if it's a Tool, None otherwise. """ - from fastmcp.tools.tool import Tool + from fastmcp.tools.base import Tool return self.component if isinstance(self.component, Tool) else None diff --git a/src/fastmcp/server/context.py b/src/fastmcp/server/context.py index 736271c30..5d1295188 100644 --- a/src/fastmcp/server/context.py +++ b/src/fastmcp/server/context.py @@ -26,7 +26,7 @@ from starlette.requests import Request from typing_extensions import TypeVar from uncalled_for import SharedContext -from fastmcp.resources.resource import ResourceResult +from fastmcp.resources.base import ResourceResult from fastmcp.server.elicitation import ( AcceptedElicitation, CancelledElicitation, diff --git a/src/fastmcp/server/middleware/authorization.py b/src/fastmcp/server/middleware/authorization.py index 4d3914a18..19b050370 100644 --- a/src/fastmcp/server/middleware/authorization.py +++ b/src/fastmcp/server/middleware/authorization.py @@ -29,8 +29,8 @@ from collections.abc import Sequence import mcp.types as mt from fastmcp.exceptions import AuthorizationError -from fastmcp.prompts.prompt import Prompt, PromptResult -from fastmcp.resources.resource import Resource, ResourceResult +from fastmcp.prompts.base import Prompt, PromptResult +from fastmcp.resources.base import Resource, ResourceResult from fastmcp.resources.template import ResourceTemplate from fastmcp.server.auth.authorization import ( AuthCheck, @@ -43,7 +43,7 @@ from fastmcp.server.middleware.middleware import ( Middleware, MiddlewareContext, ) -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult logger = logging.getLogger(__name__) diff --git a/src/fastmcp/server/middleware/caching.py b/src/fastmcp/server/middleware/caching.py index acc50f026..52f48fd56 100644 --- a/src/fastmcp/server/middleware/caching.py +++ b/src/fastmcp/server/middleware/caching.py @@ -18,10 +18,10 @@ from key_value.aio.wrappers.statistics.wrapper import ( from pydantic import Field from typing_extensions import NotRequired, Self, override -from fastmcp.prompts.prompt import Message, Prompt, PromptResult -from fastmcp.resources.resource import Resource, ResourceContent, ResourceResult +from fastmcp.prompts.base import Message, Prompt, PromptResult +from fastmcp.resources.base import Resource, ResourceContent, ResourceResult from fastmcp.server.middleware.middleware import CallNext, Middleware, MiddlewareContext -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult from fastmcp.utilities.logging import get_logger from fastmcp.utilities.types import FastMCPBaseModel diff --git a/src/fastmcp/server/middleware/dereference.py b/src/fastmcp/server/middleware/dereference.py index 89150d655..0c27585bc 100644 --- a/src/fastmcp/server/middleware/dereference.py +++ b/src/fastmcp/server/middleware/dereference.py @@ -8,7 +8,7 @@ from typing_extensions import override from fastmcp.resources.template import ResourceTemplate from fastmcp.server.middleware.middleware import CallNext, Middleware, MiddlewareContext -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool from fastmcp.utilities.json_schema import dereference_refs diff --git a/src/fastmcp/server/middleware/middleware.py b/src/fastmcp/server/middleware/middleware.py index 8022ee9dd..ce7f13567 100644 --- a/src/fastmcp/server/middleware/middleware.py +++ b/src/fastmcp/server/middleware/middleware.py @@ -17,10 +17,10 @@ from typing import ( import mcp.types as mt from typing_extensions import TypeVar -from fastmcp.prompts.prompt import Prompt, PromptResult -from fastmcp.resources.resource import Resource, ResourceResult +from fastmcp.prompts.base import Prompt, PromptResult +from fastmcp.resources.base import Resource, ResourceResult from fastmcp.resources.template import ResourceTemplate -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult if TYPE_CHECKING: from fastmcp.server.context import Context diff --git a/src/fastmcp/server/middleware/response_limiting.py b/src/fastmcp/server/middleware/response_limiting.py index df83e81a0..3afaf0705 100644 --- a/src/fastmcp/server/middleware/response_limiting.py +++ b/src/fastmcp/server/middleware/response_limiting.py @@ -8,7 +8,7 @@ import mcp.types as mt import pydantic_core from mcp.types import TextContent -from fastmcp.tools.tool import ToolResult +from fastmcp.tools.base import ToolResult from .middleware import CallNext, Middleware, MiddlewareContext diff --git a/src/fastmcp/server/middleware/tool_injection.py b/src/fastmcp/server/middleware/tool_injection.py index e824eb8dc..f9371d3c0 100644 --- a/src/fastmcp/server/middleware/tool_injection.py +++ b/src/fastmcp/server/middleware/tool_injection.py @@ -11,10 +11,10 @@ from pydantic import AnyUrl from typing_extensions import override import fastmcp -from fastmcp.resources.resource import ResourceResult +from fastmcp.resources.base import ResourceResult from fastmcp.server.context import Context from fastmcp.server.middleware.middleware import CallNext, Middleware, MiddlewareContext -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult from fastmcp.utilities.logging import get_logger logger: Logger = get_logger(name=__name__) diff --git a/src/fastmcp/server/providers/aggregate.py b/src/fastmcp/server/providers/aggregate.py index 0b640fe6e..0b212315e 100644 --- a/src/fastmcp/server/providers/aggregate.py +++ b/src/fastmcp/server/providers/aggregate.py @@ -33,10 +33,10 @@ from fastmcp.utilities.components import FastMCPComponent from fastmcp.utilities.versions import VersionSpec, version_sort_key if TYPE_CHECKING: - from fastmcp.prompts.prompt import Prompt - from fastmcp.resources.resource import Resource + from fastmcp.prompts.base import Prompt + from fastmcp.resources.base import Resource from fastmcp.resources.template import ResourceTemplate - from fastmcp.tools.tool import Tool + from fastmcp.tools.base import Tool logger = logging.getLogger(__name__) diff --git a/src/fastmcp/server/providers/base.py b/src/fastmcp/server/providers/base.py index ccd48765f..b538cb961 100644 --- a/src/fastmcp/server/providers/base.py +++ b/src/fastmcp/server/providers/base.py @@ -35,11 +35,11 @@ from typing import TYPE_CHECKING, Literal, cast from typing_extensions import Self -from fastmcp.prompts.prompt import Prompt -from fastmcp.resources.resource import Resource +from fastmcp.prompts.base import Prompt +from fastmcp.resources.base import Resource from fastmcp.resources.template import ResourceTemplate from fastmcp.server.transforms.visibility import Visibility -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool from fastmcp.utilities.async_utils import gather from fastmcp.utilities.components import FastMCPComponent from fastmcp.utilities.versions import VersionSpec, version_sort_key diff --git a/src/fastmcp/server/providers/fastmcp_provider.py b/src/fastmcp/server/providers/fastmcp_provider.py index 92038c540..cf536bb3b 100644 --- a/src/fastmcp/server/providers/fastmcp_provider.py +++ b/src/fastmcp/server/providers/fastmcp_provider.py @@ -19,13 +19,13 @@ from urllib.parse import quote import mcp.types from mcp.types import AnyUrl -from fastmcp.prompts.prompt import Prompt, PromptResult -from fastmcp.resources.resource import Resource, ResourceResult +from fastmcp.prompts.base import Prompt, PromptResult +from fastmcp.resources.base import Resource, ResourceResult from fastmcp.resources.template import ResourceTemplate from fastmcp.server.providers.base import Provider from fastmcp.server.tasks.config import TaskMeta from fastmcp.server.telemetry import delegate_span -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult from fastmcp.utilities.components import FastMCPComponent from fastmcp.utilities.versions import VersionSpec diff --git a/src/fastmcp/server/providers/filesystem.py b/src/fastmcp/server/providers/filesystem.py index 2306a48a7..774021dca 100644 --- a/src/fastmcp/server/providers/filesystem.py +++ b/src/fastmcp/server/providers/filesystem.py @@ -31,12 +31,12 @@ import asyncio from collections.abc import Sequence from pathlib import Path -from fastmcp.prompts.prompt import Prompt -from fastmcp.resources.resource import Resource +from fastmcp.prompts.base import Prompt +from fastmcp.resources.base import Resource from fastmcp.resources.template import ResourceTemplate from fastmcp.server.providers.filesystem_discovery import discover_and_import from fastmcp.server.providers.local_provider import LocalProvider -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool from fastmcp.utilities.components import FastMCPComponent from fastmcp.utilities.logging import get_logger from fastmcp.utilities.versions import VersionSpec diff --git a/src/fastmcp/server/providers/filesystem_discovery.py b/src/fastmcp/server/providers/filesystem_discovery.py index d78bddb4b..5dc15e11c 100644 --- a/src/fastmcp/server/providers/filesystem_discovery.py +++ b/src/fastmcp/server/providers/filesystem_discovery.py @@ -189,14 +189,14 @@ def extract_components(module: ModuleType) -> list[FastMCPComponent]: import inspect from fastmcp.decorators import get_fastmcp_meta + from fastmcp.prompts.base import Prompt from fastmcp.prompts.function_prompt import PromptMeta - from fastmcp.prompts.prompt import Prompt + from fastmcp.resources.base import Resource from fastmcp.resources.function_resource import ResourceMeta - from fastmcp.resources.resource import Resource from fastmcp.resources.template import ResourceTemplate from fastmcp.server.dependencies import without_injected_parameters + from fastmcp.tools.base import Tool from fastmcp.tools.function_tool import ToolMeta - from fastmcp.tools.tool import Tool component_types = (Tool, Resource, ResourceTemplate, Prompt) components: list[FastMCPComponent] = [] diff --git a/src/fastmcp/server/providers/local_provider/decorators/prompts.py b/src/fastmcp/server/providers/local_provider/decorators/prompts.py index d36c7d2f4..47d3169a6 100644 --- a/src/fastmcp/server/providers/local_provider/decorators/prompts.py +++ b/src/fastmcp/server/providers/local_provider/decorators/prompts.py @@ -15,8 +15,8 @@ import mcp.types from mcp.types import AnyFunction import fastmcp +from fastmcp.prompts.base import Prompt from fastmcp.prompts.function_prompt import FunctionPrompt -from fastmcp.prompts.prompt import Prompt from fastmcp.server.auth.authorization import AuthCheck from fastmcp.server.tasks.config import TaskConfig diff --git a/src/fastmcp/server/providers/local_provider/decorators/resources.py b/src/fastmcp/server/providers/local_provider/decorators/resources.py index 80a3e9a5c..869e27e8b 100644 --- a/src/fastmcp/server/providers/local_provider/decorators/resources.py +++ b/src/fastmcp/server/providers/local_provider/decorators/resources.py @@ -14,8 +14,8 @@ import mcp.types from mcp.types import Annotations, AnyFunction import fastmcp +from fastmcp.resources.base import Resource from fastmcp.resources.function_resource import resource as standalone_resource -from fastmcp.resources.resource import Resource from fastmcp.resources.template import ResourceTemplate from fastmcp.server.auth.authorization import AuthCheck from fastmcp.server.tasks.config import TaskConfig diff --git a/src/fastmcp/server/providers/local_provider/decorators/tools.py b/src/fastmcp/server/providers/local_provider/decorators/tools.py index 796be4224..16d147e4e 100644 --- a/src/fastmcp/server/providers/local_provider/decorators/tools.py +++ b/src/fastmcp/server/providers/local_provider/decorators/tools.py @@ -29,8 +29,8 @@ from mcp.types import AnyFunction, ToolAnnotations import fastmcp from fastmcp.server.auth.authorization import AuthCheck from fastmcp.server.tasks.config import TaskConfig +from fastmcp.tools.base import Tool from fastmcp.tools.function_tool import FunctionTool -from fastmcp.tools.tool import Tool from fastmcp.utilities.types import NotSet, NotSetT try: @@ -43,7 +43,7 @@ except ImportError: if TYPE_CHECKING: from fastmcp.server.providers.local_provider import LocalProvider - from fastmcp.tools.tool import ToolResultSerializerType + from fastmcp.tools.base import ToolResultSerializerType F = TypeVar("F", bound=Callable[..., Any]) diff --git a/src/fastmcp/server/providers/local_provider/local_provider.py b/src/fastmcp/server/providers/local_provider/local_provider.py index a1b8fe584..67ffffd11 100644 --- a/src/fastmcp/server/providers/local_provider/local_provider.py +++ b/src/fastmcp/server/providers/local_provider/local_provider.py @@ -27,8 +27,8 @@ from __future__ import annotations from collections.abc import Sequence from typing import Literal, TypeVar -from fastmcp.prompts.prompt import Prompt -from fastmcp.resources.resource import Resource +from fastmcp.prompts.base import Prompt +from fastmcp.resources.base import Resource from fastmcp.resources.template import ResourceTemplate from fastmcp.server.providers.base import Provider from fastmcp.server.providers.local_provider.decorators import ( @@ -36,7 +36,7 @@ from fastmcp.server.providers.local_provider.decorators import ( ResourceDecoratorMixin, ToolDecoratorMixin, ) -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool from fastmcp.utilities.components import FastMCPComponent from fastmcp.utilities.logging import get_logger from fastmcp.utilities.versions import VersionSpec, version_sort_key diff --git a/src/fastmcp/server/providers/openapi/components.py b/src/fastmcp/server/providers/openapi/components.py index 7d7722666..0d31dee70 100644 --- a/src/fastmcp/server/providers/openapi/components.py +++ b/src/fastmcp/server/providers/openapi/components.py @@ -21,7 +21,7 @@ from fastmcp.resources import ( ) from fastmcp.server.dependencies import get_http_headers from fastmcp.server.tasks.config import TaskConfig -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult from fastmcp.utilities.logging import get_logger from fastmcp.utilities.openapi import HTTPRoute from fastmcp.utilities.openapi.director import RequestDirector diff --git a/src/fastmcp/server/providers/openapi/provider.py b/src/fastmcp/server/providers/openapi/provider.py index 1e64d88c9..f5380c05b 100644 --- a/src/fastmcp/server/providers/openapi/provider.py +++ b/src/fastmcp/server/providers/openapi/provider.py @@ -28,7 +28,7 @@ from fastmcp.server.providers.openapi.routing import ( RouteMapFn, _determine_route_type, ) -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool from fastmcp.utilities.components import FastMCPComponent from fastmcp.utilities.logging import get_logger from fastmcp.utilities.openapi import ( diff --git a/src/fastmcp/server/providers/proxy.py b/src/fastmcp/server/providers/proxy.py index 39bbb223e..d9267829e 100644 --- a/src/fastmcp/server/providers/proxy.py +++ b/src/fastmcp/server/providers/proxy.py @@ -37,15 +37,15 @@ from fastmcp.client.transports import ClientTransportT from fastmcp.exceptions import ResourceError, ToolError from fastmcp.mcp_config import MCPConfig from fastmcp.prompts import Message, Prompt, PromptResult -from fastmcp.prompts.prompt import PromptArgument +from fastmcp.prompts.base import PromptArgument from fastmcp.resources import Resource, ResourceTemplate -from fastmcp.resources.resource import ResourceContent, ResourceResult +from fastmcp.resources.base import ResourceContent, ResourceResult from fastmcp.server.context import Context from fastmcp.server.dependencies import get_context from fastmcp.server.providers.base import Provider from fastmcp.server.server import FastMCP from fastmcp.server.tasks.config import TaskConfig -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult from fastmcp.utilities.components import FastMCPComponent, get_fastmcp_metadata from fastmcp.utilities.logging import get_logger from fastmcp.utilities.versions import VersionSpec, version_sort_key diff --git a/src/fastmcp/server/providers/skills/directory_provider.py b/src/fastmcp/server/providers/skills/directory_provider.py index 27f7c1e4c..c390b42f5 100644 --- a/src/fastmcp/server/providers/skills/directory_provider.py +++ b/src/fastmcp/server/providers/skills/directory_provider.py @@ -6,7 +6,7 @@ from collections.abc import Sequence from pathlib import Path from typing import Literal -from fastmcp.resources.resource import Resource +from fastmcp.resources.base import Resource from fastmcp.resources.template import ResourceTemplate from fastmcp.server.providers.aggregate import AggregateProvider from fastmcp.server.providers.skills.skill_provider import SkillProvider diff --git a/src/fastmcp/server/providers/skills/skill_provider.py b/src/fastmcp/server/providers/skills/skill_provider.py index 86bcba5e3..a52087bdd 100644 --- a/src/fastmcp/server/providers/skills/skill_provider.py +++ b/src/fastmcp/server/providers/skills/skill_provider.py @@ -10,7 +10,7 @@ from typing import Any, Literal, cast from pydantic import AnyUrl -from fastmcp.resources.resource import Resource, ResourceResult +from fastmcp.resources.base import Resource, ResourceResult from fastmcp.resources.template import ResourceTemplate from fastmcp.server.providers.base import Provider from fastmcp.server.providers.skills._common import ( diff --git a/src/fastmcp/server/providers/wrapped_provider.py b/src/fastmcp/server/providers/wrapped_provider.py index 4f5c0df92..17ae018d9 100644 --- a/src/fastmcp/server/providers/wrapped_provider.py +++ b/src/fastmcp/server/providers/wrapped_provider.py @@ -14,11 +14,11 @@ from fastmcp.server.providers.base import Provider from fastmcp.utilities.versions import VersionSpec if TYPE_CHECKING: - from fastmcp.prompts.prompt import Prompt - from fastmcp.resources.resource import Resource + from fastmcp.prompts.base import Prompt + from fastmcp.resources.base import Resource from fastmcp.resources.template import ResourceTemplate from fastmcp.server.transforms import Transform - from fastmcp.tools.tool import Tool + from fastmcp.tools.base import Tool from fastmcp.utilities.components import FastMCPComponent @@ -96,10 +96,10 @@ class _WrappedProvider(Provider): async def get_tasks(self) -> Sequence[FastMCPComponent]: """Delegate to inner's get_tasks and apply wrapper's transforms.""" # Import here to avoid circular imports - from fastmcp.prompts.prompt import Prompt - from fastmcp.resources.resource import Resource + from fastmcp.prompts.base import Prompt + from fastmcp.resources.base import Resource from fastmcp.resources.template import ResourceTemplate - from fastmcp.tools.tool import Tool + from fastmcp.tools.base import Tool # Get tasks from inner (already has inner's transforms) components = list(await self._inner.get_tasks()) diff --git a/src/fastmcp/server/sampling/sampling_tool.py b/src/fastmcp/server/sampling/sampling_tool.py index beeccac80..7f9354bbb 100644 --- a/src/fastmcp/server/sampling/sampling_tool.py +++ b/src/fastmcp/server/sampling/sampling_tool.py @@ -13,9 +13,9 @@ from pydantic import ConfigDict from fastmcp.exceptions import AuthorizationError from fastmcp.server.auth.authorization import AuthContext, run_auth_checks from fastmcp.server.dependencies import get_access_token +from fastmcp.tools.base import ToolResult from fastmcp.tools.function_parsing import ParsedFunction from fastmcp.tools.function_tool import FunctionTool -from fastmcp.tools.tool import ToolResult from fastmcp.tools.tool_transform import TransformedTool from fastmcp.utilities.types import FastMCPBaseModel diff --git a/src/fastmcp/server/server.py b/src/fastmcp/server/server.py index b2e40df8d..a8444c821 100644 --- a/src/fastmcp/server/server.py +++ b/src/fastmcp/server/server.py @@ -52,9 +52,9 @@ from fastmcp.exceptions import ( ) from fastmcp.mcp_config import MCPConfig from fastmcp.prompts import Prompt +from fastmcp.prompts.base import PromptResult from fastmcp.prompts.function_prompt import FunctionPrompt -from fastmcp.prompts.prompt import PromptResult -from fastmcp.resources.resource import Resource, ResourceResult +from fastmcp.resources.base import Resource, ResourceResult from fastmcp.resources.template import ResourceTemplate from fastmcp.server.apps import ( AppConfig, @@ -76,8 +76,8 @@ from fastmcp.server.transforms import ( ) from fastmcp.server.transforms.visibility import apply_session_transforms, is_enabled from fastmcp.settings import DuplicateBehavior as DuplicateBehaviorSetting +from fastmcp.tools.base import Tool, ToolResult from fastmcp.tools.function_tool import FunctionTool -from fastmcp.tools.tool import Tool, ToolResult from fastmcp.tools.tool_transform import ToolTransformConfig from fastmcp.utilities.components import FastMCPComponent, _coerce_version from fastmcp.utilities.logging import get_logger diff --git a/src/fastmcp/server/tasks/handlers.py b/src/fastmcp/server/tasks/handlers.py index 10bf18b6d..f0c1f5e79 100644 --- a/src/fastmcp/server/tasks/handlers.py +++ b/src/fastmcp/server/tasks/handlers.py @@ -20,10 +20,10 @@ from fastmcp.server.tasks.keys import build_task_key from fastmcp.utilities.logging import get_logger if TYPE_CHECKING: - from fastmcp.prompts.prompt import Prompt - from fastmcp.resources.resource import Resource + from fastmcp.prompts.base import Prompt + from fastmcp.resources.base import Resource from fastmcp.resources.template import ResourceTemplate - from fastmcp.tools.tool import Tool + from fastmcp.tools.base import Tool logger = get_logger(__name__) diff --git a/src/fastmcp/server/tasks/requests.py b/src/fastmcp/server/tasks/requests.py index f2700b3a4..a4ce4f8ff 100644 --- a/src/fastmcp/server/tasks/requests.py +++ b/src/fastmcp/server/tasks/requests.py @@ -25,12 +25,12 @@ from mcp.types import ( import fastmcp.server.context from fastmcp.exceptions import NotFoundError -from fastmcp.prompts.prompt import Prompt -from fastmcp.resources.resource import Resource +from fastmcp.prompts.base import Prompt +from fastmcp.resources.base import Resource from fastmcp.resources.template import ResourceTemplate from fastmcp.server.tasks.config import DEFAULT_POLL_INTERVAL_MS, DEFAULT_TTL_MS from fastmcp.server.tasks.keys import parse_task_key -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool from fastmcp.utilities.versions import VersionSpec if TYPE_CHECKING: diff --git a/src/fastmcp/server/tasks/routing.py b/src/fastmcp/server/tasks/routing.py index ab9e240c8..cb6812a87 100644 --- a/src/fastmcp/server/tasks/routing.py +++ b/src/fastmcp/server/tasks/routing.py @@ -15,10 +15,10 @@ from fastmcp.server.tasks.config import TaskMeta from fastmcp.server.tasks.handlers import submit_to_docket if TYPE_CHECKING: - from fastmcp.prompts.prompt import Prompt - from fastmcp.resources.resource import Resource + from fastmcp.prompts.base import Prompt + from fastmcp.resources.base import Resource from fastmcp.resources.template import ResourceTemplate - from fastmcp.tools.tool import Tool + from fastmcp.tools.base import Tool TaskType = Literal["tool", "resource", "template", "prompt"] diff --git a/src/fastmcp/server/transforms/__init__.py b/src/fastmcp/server/transforms/__init__.py index cdda16d82..411a2e0f8 100644 --- a/src/fastmcp/server/transforms/__init__.py +++ b/src/fastmcp/server/transforms/__init__.py @@ -26,10 +26,10 @@ from typing import TYPE_CHECKING, Protocol from fastmcp.utilities.versions import VersionSpec if TYPE_CHECKING: - from fastmcp.prompts.prompt import Prompt - from fastmcp.resources.resource import Resource + from fastmcp.prompts.base import Prompt + from fastmcp.resources.base import Resource from fastmcp.resources.template import ResourceTemplate - from fastmcp.tools.tool import Tool + from fastmcp.tools.base import Tool # Get methods use Protocol to express keyword-only version parameter diff --git a/src/fastmcp/server/transforms/catalog.py b/src/fastmcp/server/transforms/catalog.py index 748e12645..936fcd9b3 100644 --- a/src/fastmcp/server/transforms/catalog.py +++ b/src/fastmcp/server/transforms/catalog.py @@ -53,11 +53,11 @@ from fastmcp.server.transforms import Transform from fastmcp.utilities.versions import dedupe_with_versions if TYPE_CHECKING: - from fastmcp.prompts.prompt import Prompt - from fastmcp.resources.resource import Resource + from fastmcp.prompts.base import Prompt + from fastmcp.resources.base import Resource from fastmcp.resources.template import ResourceTemplate from fastmcp.server.context import Context - from fastmcp.tools.tool import Tool + from fastmcp.tools.base import Tool _instance_counter = itertools.count() diff --git a/src/fastmcp/server/transforms/namespace.py b/src/fastmcp/server/transforms/namespace.py index 152d493e5..f1a219ac7 100644 --- a/src/fastmcp/server/transforms/namespace.py +++ b/src/fastmcp/server/transforms/namespace.py @@ -16,10 +16,10 @@ from fastmcp.server.transforms import ( from fastmcp.utilities.versions import VersionSpec if TYPE_CHECKING: - from fastmcp.prompts.prompt import Prompt - from fastmcp.resources.resource import Resource + from fastmcp.prompts.base import Prompt + from fastmcp.resources.base import Resource from fastmcp.resources.template import ResourceTemplate - from fastmcp.tools.tool import Tool + from fastmcp.tools.base import Tool # Pattern for matching URIs: protocol://path _URI_PATTERN = re.compile(r"^([^:]+://)(.*?)$") diff --git a/src/fastmcp/server/transforms/prompts_as_tools.py b/src/fastmcp/server/transforms/prompts_as_tools.py index 783342f3d..078b250d0 100644 --- a/src/fastmcp/server/transforms/prompts_as_tools.py +++ b/src/fastmcp/server/transforms/prompts_as_tools.py @@ -28,7 +28,7 @@ from mcp.types import TextContent from fastmcp.server.dependencies import get_context from fastmcp.server.transforms import GetToolNext, Transform -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool from fastmcp.utilities.versions import VersionSpec if TYPE_CHECKING: diff --git a/src/fastmcp/server/transforms/resources_as_tools.py b/src/fastmcp/server/transforms/resources_as_tools.py index 850d996e5..780e513b7 100644 --- a/src/fastmcp/server/transforms/resources_as_tools.py +++ b/src/fastmcp/server/transforms/resources_as_tools.py @@ -29,7 +29,7 @@ from mcp.types import ToolAnnotations from fastmcp.server.dependencies import get_context from fastmcp.server.transforms import GetToolNext, Transform -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool from fastmcp.utilities.versions import VersionSpec _DEFAULT_ANNOTATIONS = ToolAnnotations(readOnlyHint=True) diff --git a/src/fastmcp/server/transforms/search/base.py b/src/fastmcp/server/transforms/search/base.py index 24743b5d9..945cddd1d 100644 --- a/src/fastmcp/server/transforms/search/base.py +++ b/src/fastmcp/server/transforms/search/base.py @@ -34,7 +34,7 @@ from typing import Annotated, Any from fastmcp.server.context import Context from fastmcp.server.transforms import GetToolNext from fastmcp.server.transforms.catalog import CatalogTransform -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult from fastmcp.utilities.versions import VersionSpec diff --git a/src/fastmcp/server/transforms/search/bm25.py b/src/fastmcp/server/transforms/search/bm25.py index 8e06ac4be..2badff1a2 100644 --- a/src/fastmcp/server/transforms/search/bm25.py +++ b/src/fastmcp/server/transforms/search/bm25.py @@ -12,7 +12,7 @@ from fastmcp.server.transforms.search.base import ( SearchResultSerializer, _extract_searchable_text, ) -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool def _tokenize(text: str) -> list[str]: diff --git a/src/fastmcp/server/transforms/search/regex.py b/src/fastmcp/server/transforms/search/regex.py index 8f00bdce6..c64168423 100644 --- a/src/fastmcp/server/transforms/search/regex.py +++ b/src/fastmcp/server/transforms/search/regex.py @@ -9,7 +9,7 @@ from fastmcp.server.transforms.search.base import ( BaseSearchTransform, _extract_searchable_text, ) -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool class RegexSearchTransform(BaseSearchTransform): diff --git a/src/fastmcp/server/transforms/tool_transform.py b/src/fastmcp/server/transforms/tool_transform.py index ed58788da..bd4f168cf 100644 --- a/src/fastmcp/server/transforms/tool_transform.py +++ b/src/fastmcp/server/transforms/tool_transform.py @@ -10,7 +10,7 @@ from fastmcp.tools.tool_transform import ToolTransformConfig from fastmcp.utilities.versions import VersionSpec if TYPE_CHECKING: - from fastmcp.tools.tool import Tool + from fastmcp.tools.base import Tool class ToolTransform(Transform): diff --git a/src/fastmcp/server/transforms/version_filter.py b/src/fastmcp/server/transforms/version_filter.py index 1b1d0270c..11a586248 100644 --- a/src/fastmcp/server/transforms/version_filter.py +++ b/src/fastmcp/server/transforms/version_filter.py @@ -15,10 +15,10 @@ from fastmcp.server.transforms import ( from fastmcp.utilities.versions import VersionSpec if TYPE_CHECKING: - from fastmcp.prompts.prompt import Prompt - from fastmcp.resources.resource import Resource + from fastmcp.prompts.base import Prompt + from fastmcp.resources.base import Resource from fastmcp.resources.template import ResourceTemplate - from fastmcp.tools.tool import Tool + from fastmcp.tools.base import Tool class VersionFilter(Transform): diff --git a/src/fastmcp/server/transforms/visibility.py b/src/fastmcp/server/transforms/visibility.py index 5a3588886..e95fd5845 100644 --- a/src/fastmcp/server/transforms/visibility.py +++ b/src/fastmcp/server/transforms/visibility.py @@ -12,7 +12,7 @@ from typing import TYPE_CHECKING, Any, Literal, TypeVar import mcp.types -from fastmcp.resources.resource import Resource +from fastmcp.resources.base import Resource from fastmcp.resources.template import ResourceTemplate from fastmcp.server.transforms import ( GetPromptNext, @@ -24,9 +24,9 @@ from fastmcp.server.transforms import ( from fastmcp.utilities.versions import VersionSpec if TYPE_CHECKING: - from fastmcp.prompts.prompt import Prompt + from fastmcp.prompts.base import Prompt from fastmcp.server.context import Context - from fastmcp.tools.tool import Tool + from fastmcp.tools.base import Tool from fastmcp.utilities.components import FastMCPComponent T = TypeVar("T", bound="FastMCPComponent") diff --git a/src/fastmcp/tools/__init__.py b/src/fastmcp/tools/__init__.py index 9aff985ba..64360b2aa 100644 --- a/src/fastmcp/tools/__init__.py +++ b/src/fastmcp/tools/__init__.py @@ -1,7 +1,15 @@ +import sys + from .function_tool import FunctionTool, tool -from .tool import Tool, ToolResult +from .base import Tool, ToolResult from .tool_transform import forward, forward_raw +# Backward compat: tool.py was renamed to base.py to stop Pyright from resolving +# `from fastmcp.tools import tool` as the submodule instead of the decorator function. +# This shim keeps `from fastmcp.tools.tool import Tool` working at runtime. +# Safe to remove once we're confident no external code imports from the old path. +sys.modules[f"{__name__}.tool"] = sys.modules[f"{__name__}.base"] + __all__ = [ "FunctionTool", "Tool", diff --git a/src/fastmcp/tools/tool.py b/src/fastmcp/tools/base.py similarity index 100% rename from src/fastmcp/tools/tool.py rename to src/fastmcp/tools/base.py diff --git a/src/fastmcp/tools/function_parsing.py b/src/fastmcp/tools/function_parsing.py index ce519f79e..10ee7f089 100644 --- a/src/fastmcp/tools/function_parsing.py +++ b/src/fastmcp/tools/function_parsing.py @@ -17,7 +17,7 @@ from fastmcp.server.dependencies import ( transform_context_annotations, without_injected_parameters, ) -from fastmcp.tools.tool import ToolResult +from fastmcp.tools.base import ToolResult from fastmcp.utilities.json_schema import compress_schema from fastmcp.utilities.logging import get_logger from fastmcp.utilities.types import ( diff --git a/src/fastmcp/tools/function_tool.py b/src/fastmcp/tools/function_tool.py index 140a2975b..93603a0fd 100644 --- a/src/fastmcp/tools/function_tool.py +++ b/src/fastmcp/tools/function_tool.py @@ -29,12 +29,12 @@ from fastmcp.decorators import resolve_task_config from fastmcp.server.auth.authorization import AuthCheck from fastmcp.server.dependencies import without_injected_parameters from fastmcp.server.tasks.config import TaskConfig -from fastmcp.tools.function_parsing import ParsedFunction, _is_object_schema -from fastmcp.tools.tool import ( +from fastmcp.tools.base import ( Tool, ToolResult, ToolResultSerializerType, ) +from fastmcp.tools.function_parsing import ParsedFunction, _is_object_schema from fastmcp.utilities.async_utils import ( call_sync_fn_in_threadpool, is_coroutine_function, diff --git a/src/fastmcp/tools/tool_transform.py b/src/fastmcp/tools/tool_transform.py index 251bc9229..e750a1103 100644 --- a/src/fastmcp/tools/tool_transform.py +++ b/src/fastmcp/tools/tool_transform.py @@ -16,8 +16,8 @@ from pydantic.functional_validators import BeforeValidator from pydantic.json_schema import SkipJsonSchema import fastmcp +from fastmcp.tools.base import Tool, ToolResult, _convert_to_content from fastmcp.tools.function_parsing import ParsedFunction -from fastmcp.tools.tool import Tool, ToolResult, _convert_to_content from fastmcp.utilities.components import _convert_set_default_none from fastmcp.utilities.json_schema import compress_schema from fastmcp.utilities.logging import get_logger diff --git a/tests/contrib/test_bulk_tool_caller.py b/tests/contrib/test_bulk_tool_caller.py index 36b98bb7d..24873f4ea 100644 --- a/tests/contrib/test_bulk_tool_caller.py +++ b/tests/contrib/test_bulk_tool_caller.py @@ -10,7 +10,7 @@ from fastmcp.contrib.bulk_tool_caller.bulk_tool_caller import ( CallToolRequest, CallToolRequestResult, ) -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool class ToolException(Exception): diff --git a/tests/contrib/test_mcp_mixin.py b/tests/contrib/test_mcp_mixin.py index 22bf02ceb..0d58a05a9 100644 --- a/tests/contrib/test_mcp_mixin.py +++ b/tests/contrib/test_mcp_mixin.py @@ -348,7 +348,7 @@ class TestMCPMixinKwargsSync: """Verify that the valid-kwarg sets stay in sync with from_function signatures.""" def test_tool_valid_kwargs_match_from_function(self): - from fastmcp.tools.tool import Tool + from fastmcp.tools.base import Tool expected = frozenset( p for p in inspect.signature(Tool.from_function).parameters if p != "fn" @@ -356,7 +356,7 @@ class TestMCPMixinKwargsSync: assert _TOOL_VALID_KWARGS == expected def test_resource_valid_kwargs_match_from_function(self): - from fastmcp.resources.resource import Resource + from fastmcp.resources.base import Resource expected = frozenset( p @@ -366,7 +366,7 @@ class TestMCPMixinKwargsSync: assert _RESOURCE_VALID_KWARGS == expected def test_prompt_valid_kwargs_match_from_function(self): - from fastmcp.prompts.prompt import Prompt + from fastmcp.prompts.base import Prompt expected = frozenset( p for p in inspect.signature(Prompt.from_function).parameters if p != "fn" diff --git a/tests/deprecated/test_exclude_args.py b/tests/deprecated/test_exclude_args.py index d6ed9d9d3..f01d5f6b7 100644 --- a/tests/deprecated/test_exclude_args.py +++ b/tests/deprecated/test_exclude_args.py @@ -4,7 +4,7 @@ import pytest from mcp.server.session import ServerSession from fastmcp import Client, FastMCP -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool async def test_tool_exclude_args(): diff --git a/tests/deprecated/test_function_component_imports.py b/tests/deprecated/test_function_component_imports.py index 77166b28d..73c07dec9 100644 --- a/tests/deprecated/test_function_component_imports.py +++ b/tests/deprecated/test_function_component_imports.py @@ -13,7 +13,7 @@ class TestDeprecatedFunctionToolImports: with pytest.warns( DeprecationWarning, match="Import from fastmcp.tools.function_tool" ): - from fastmcp.tools.tool import FunctionTool + from fastmcp.tools.base import FunctionTool # Verify it's the real class from fastmcp.tools.function_tool import ( @@ -27,7 +27,7 @@ class TestDeprecatedFunctionToolImports: with pytest.warns( DeprecationWarning, match="Import from fastmcp.tools.function_tool" ): - from fastmcp.tools.tool import ParsedFunction + from fastmcp.tools.base import ParsedFunction from fastmcp.tools.function_tool import ( ParsedFunction as CanonicalParsedFunction, @@ -40,7 +40,7 @@ class TestDeprecatedFunctionToolImports: with pytest.warns( DeprecationWarning, match="Import from fastmcp.tools.function_tool" ): - from fastmcp.tools.tool import tool + from fastmcp.tools.base import tool from fastmcp.tools.function_tool import tool as canonical_tool @@ -50,7 +50,7 @@ class TestDeprecatedFunctionToolImports: with temporary_settings(deprecation_warnings=False): with warnings.catch_warnings(): warnings.simplefilter("error") - from fastmcp.tools.tool import FunctionTool # noqa: F401 + from fastmcp.tools.base import FunctionTool # noqa: F401 class TestDeprecatedFunctionResourceImports: @@ -60,7 +60,7 @@ class TestDeprecatedFunctionResourceImports: DeprecationWarning, match="Import from fastmcp.resources.function_resource", ): - from fastmcp.resources.resource import FunctionResource + from fastmcp.resources.base import FunctionResource from fastmcp.resources.function_resource import ( FunctionResource as CanonicalFunctionResource, @@ -74,7 +74,7 @@ class TestDeprecatedFunctionResourceImports: DeprecationWarning, match="Import from fastmcp.resources.function_resource", ): - from fastmcp.resources.resource import resource + from fastmcp.resources.base import resource from fastmcp.resources.function_resource import ( resource as canonical_resource, @@ -86,7 +86,7 @@ class TestDeprecatedFunctionResourceImports: with temporary_settings(deprecation_warnings=False): with warnings.catch_warnings(): warnings.simplefilter("error") - from fastmcp.resources.resource import FunctionResource # noqa: F401 + from fastmcp.resources.base import FunctionResource # noqa: F401 class TestDeprecatedFunctionPromptImports: @@ -95,7 +95,7 @@ class TestDeprecatedFunctionPromptImports: with pytest.warns( DeprecationWarning, match="Import from fastmcp.prompts.function_prompt" ): - from fastmcp.prompts.prompt import FunctionPrompt + from fastmcp.prompts.base import FunctionPrompt from fastmcp.prompts.function_prompt import ( FunctionPrompt as CanonicalFunctionPrompt, @@ -108,7 +108,7 @@ class TestDeprecatedFunctionPromptImports: with pytest.warns( DeprecationWarning, match="Import from fastmcp.prompts.function_prompt" ): - from fastmcp.prompts.prompt import prompt + from fastmcp.prompts.base import prompt from fastmcp.prompts.function_prompt import prompt as canonical_prompt @@ -118,4 +118,4 @@ class TestDeprecatedFunctionPromptImports: with temporary_settings(deprecation_warnings=False): with warnings.catch_warnings(): warnings.simplefilter("error") - from fastmcp.prompts.prompt import FunctionPrompt # noqa: F401 + from fastmcp.prompts.base import FunctionPrompt # noqa: F401 diff --git a/tests/deprecated/test_import_server.py b/tests/deprecated/test_import_server.py index 403617bbe..3ee808a8b 100644 --- a/tests/deprecated/test_import_server.py +++ b/tests/deprecated/test_import_server.py @@ -5,8 +5,8 @@ from mcp.types import TextContent, TextResourceContents from fastmcp.client.client import Client from fastmcp.server.server import FastMCP +from fastmcp.tools.base import Tool from fastmcp.tools.function_tool import FunctionTool -from fastmcp.tools.tool import Tool from tests.conftest import get_fn_name diff --git a/tests/deprecated/test_tool_serializer.py b/tests/deprecated/test_tool_serializer.py index 6e5ffef25..640441b38 100644 --- a/tests/deprecated/test_tool_serializer.py +++ b/tests/deprecated/test_tool_serializer.py @@ -13,7 +13,7 @@ from mcp.types import TextContent from fastmcp import FastMCP from fastmcp.contrib.mcp_mixin import mcp_tool from fastmcp.server.providers import LocalProvider -from fastmcp.tools.tool import Tool, _convert_to_content +from fastmcp.tools.base import Tool, _convert_to_content from fastmcp.tools.tool_transform import TransformedTool from fastmcp.utilities.tests import temporary_settings diff --git a/tests/experimental/transforms/test_code_mode.py b/tests/experimental/transforms/test_code_mode.py index 454a8ccfb..6702ead71 100644 --- a/tests/experimental/transforms/test_code_mode.py +++ b/tests/experimental/transforms/test_code_mode.py @@ -16,7 +16,7 @@ from fastmcp.experimental.transforms.code_mode import ( _ensure_async, ) from fastmcp.server.context import Context -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult def _unwrap_result(result: ToolResult) -> Any: diff --git a/tests/experimental/transforms/test_code_mode_discovery.py b/tests/experimental/transforms/test_code_mode_discovery.py index cdc45ba1f..f49e32a08 100644 --- a/tests/experimental/transforms/test_code_mode_discovery.py +++ b/tests/experimental/transforms/test_code_mode_discovery.py @@ -11,7 +11,7 @@ from fastmcp.experimental.transforms.code_mode import ( Search, _ensure_async, ) -from fastmcp.tools.tool import ToolResult +from fastmcp.tools.base import ToolResult def _unwrap_result(result: ToolResult) -> Any: diff --git a/tests/fs/test_discovery.py b/tests/fs/test_discovery.py index 535650d32..1b81911de 100644 --- a/tests/fs/test_discovery.py +++ b/tests/fs/test_discovery.py @@ -2,8 +2,8 @@ from pathlib import Path -from fastmcp.prompts.prompt import Prompt -from fastmcp.resources.resource import Resource +from fastmcp.prompts.base import Prompt +from fastmcp.resources.base import Resource from fastmcp.resources.template import FunctionResourceTemplate, ResourceTemplate from fastmcp.server.providers.filesystem_discovery import ( discover_and_import, @@ -12,7 +12,7 @@ from fastmcp.server.providers.filesystem_discovery import ( import_module_from_file, ) from fastmcp.tools import FunctionTool -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool class TestDiscoverFiles: diff --git a/tests/prompts/test_prompt.py b/tests/prompts/test_prompt.py index 65fad5444..c0b3c3f26 100644 --- a/tests/prompts/test_prompt.py +++ b/tests/prompts/test_prompt.py @@ -2,7 +2,7 @@ import pytest from mcp.types import EmbeddedResource, TextResourceContents from pydantic import FileUrl -from fastmcp.prompts.prompt import ( +from fastmcp.prompts.base import ( Message, Prompt, PromptResult, diff --git a/tests/resources/test_file_resources.py b/tests/resources/test_file_resources.py index 71e95ea99..e67e06802 100644 --- a/tests/resources/test_file_resources.py +++ b/tests/resources/test_file_resources.py @@ -7,7 +7,7 @@ from pydantic import FileUrl from fastmcp.exceptions import ResourceError from fastmcp.resources import FileResource -from fastmcp.resources.resource import ResourceResult +from fastmcp.resources.base import ResourceResult @pytest.fixture diff --git a/tests/resources/test_function_resources.py b/tests/resources/test_function_resources.py index 8c44221c9..c3490abe3 100644 --- a/tests/resources/test_function_resources.py +++ b/tests/resources/test_function_resources.py @@ -1,8 +1,8 @@ import pytest from pydantic import AnyUrl, BaseModel +from fastmcp.resources.base import ResourceContent from fastmcp.resources.function_resource import FunctionResource -from fastmcp.resources.resource import ResourceContent class TestFunctionResource: diff --git a/tests/server/middleware/test_caching.py b/tests/server/middleware/test_caching.py index 027b29959..c8d444006 100644 --- a/tests/server/middleware/test_caching.py +++ b/tests/server/middleware/test_caching.py @@ -27,9 +27,9 @@ from pydantic import AnyUrl, BaseModel from fastmcp import Context, FastMCP from fastmcp.client.client import CallToolResult, Client from fastmcp.client.transports import FastMCPTransport +from fastmcp.prompts.base import Message, Prompt from fastmcp.prompts.function_prompt import FunctionPrompt -from fastmcp.prompts.prompt import Message, Prompt -from fastmcp.resources.resource import Resource +from fastmcp.resources.base import Resource from fastmcp.server.middleware.caching import ( CachableToolResult, CallToolSettings, @@ -40,7 +40,7 @@ from fastmcp.server.middleware.caching import ( _make_read_resource_cache_key, ) from fastmcp.server.middleware.middleware import CallNext, MiddlewareContext -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult TEST_URI = AnyUrl("https://test_uri") diff --git a/tests/server/middleware/test_initialization_middleware.py b/tests/server/middleware/test_initialization_middleware.py index 7441511eb..1552edcf6 100644 --- a/tests/server/middleware/test_initialization_middleware.py +++ b/tests/server/middleware/test_initialization_middleware.py @@ -10,7 +10,7 @@ from mcp.types import ErrorData, TextContent from fastmcp import Client, FastMCP from fastmcp.server.middleware import CallNext, Middleware, MiddlewareContext -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool class InitializationMiddleware(Middleware): diff --git a/tests/server/middleware/test_middleware.py b/tests/server/middleware/test_middleware.py index 6b822e228..c9838bc8e 100644 --- a/tests/server/middleware/test_middleware.py +++ b/tests/server/middleware/test_middleware.py @@ -8,7 +8,7 @@ import pytest from fastmcp import Client, FastMCP from fastmcp.server.context import Context from fastmcp.server.middleware import CallNext, Middleware, MiddlewareContext -from fastmcp.tools.tool import ToolResult +from fastmcp.tools.base import ToolResult @dataclass diff --git a/tests/server/middleware/test_middleware_nested.py b/tests/server/middleware/test_middleware_nested.py index e57b9a311..ca73e62a3 100644 --- a/tests/server/middleware/test_middleware_nested.py +++ b/tests/server/middleware/test_middleware_nested.py @@ -9,7 +9,7 @@ from fastmcp import Client, FastMCP from fastmcp.exceptions import ToolError from fastmcp.server.context import Context from fastmcp.server.middleware import CallNext, Middleware, MiddlewareContext -from fastmcp.tools.tool import ToolResult +from fastmcp.tools.base import ToolResult @dataclass diff --git a/tests/server/middleware/test_response_limiting.py b/tests/server/middleware/test_response_limiting.py index 4e89e05de..b2c6cd810 100644 --- a/tests/server/middleware/test_response_limiting.py +++ b/tests/server/middleware/test_response_limiting.py @@ -5,7 +5,7 @@ from mcp.types import ImageContent, TextContent from fastmcp import Client, FastMCP from fastmcp.server.middleware.response_limiting import ResponseLimitingMiddleware -from fastmcp.tools.tool import ToolResult +from fastmcp.tools.base import ToolResult class TestResponseLimitingMiddleware: diff --git a/tests/server/middleware/test_tool_injection.py b/tests/server/middleware/test_tool_injection.py index f16c132e6..7509ba4d3 100644 --- a/tests/server/middleware/test_tool_injection.py +++ b/tests/server/middleware/test_tool_injection.py @@ -13,8 +13,8 @@ from fastmcp.client.transports import FastMCPTransport from fastmcp.server.middleware.tool_injection import ( ToolInjectionMiddleware, ) +from fastmcp.tools.base import Tool from fastmcp.tools.function_tool import FunctionTool -from fastmcp.tools.tool import Tool def multiply_fn(a: int, b: int) -> int: diff --git a/tests/server/mount/test_mount.py b/tests/server/mount/test_mount.py index b1b8ee0c0..1850a3d28 100644 --- a/tests/server/mount/test_mount.py +++ b/tests/server/mount/test_mount.py @@ -9,7 +9,7 @@ from mcp.types import TextContent from fastmcp import FastMCP from fastmcp.client import Client from fastmcp.client.transports import SSETransport -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool from fastmcp.tools.tool_transform import TransformedTool diff --git a/tests/server/providers/local_provider_tools/test_context.py b/tests/server/providers/local_provider_tools/test_context.py index 935a9d8af..2bd84c3a3 100644 --- a/tests/server/providers/local_provider_tools/test_context.py +++ b/tests/server/providers/local_provider_tools/test_context.py @@ -7,7 +7,7 @@ from pydantic import BaseModel from typing_extensions import TypedDict from fastmcp import Context, FastMCP -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool def _normalize_anyof_order(schema): diff --git a/tests/server/providers/local_provider_tools/test_decorator.py b/tests/server/providers/local_provider_tools/test_decorator.py index 92c5df44e..3bf490d4f 100644 --- a/tests/server/providers/local_provider_tools/test_decorator.py +++ b/tests/server/providers/local_provider_tools/test_decorator.py @@ -9,7 +9,7 @@ from typing_extensions import TypedDict from fastmcp import FastMCP from fastmcp.exceptions import NotFoundError -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool def _normalize_anyof_order(schema): diff --git a/tests/server/providers/local_provider_tools/test_output_schema.py b/tests/server/providers/local_provider_tools/test_output_schema.py index 0558dd1f6..31ae3e73c 100644 --- a/tests/server/providers/local_provider_tools/test_output_schema.py +++ b/tests/server/providers/local_provider_tools/test_output_schema.py @@ -11,8 +11,8 @@ from pydantic import AnyUrl, BaseModel, TypeAdapter from typing_extensions import TypeAliasType, TypedDict from fastmcp import FastMCP +from fastmcp.tools.base import ToolResult from fastmcp.tools.function_parsing import _is_object_schema -from fastmcp.tools.tool import ToolResult from fastmcp.utilities.json_schema import compress_schema diff --git a/tests/server/providers/proxy/test_proxy_server.py b/tests/server/providers/proxy/test_proxy_server.py index 6cfbcb72e..a3b69e122 100644 --- a/tests/server/providers/proxy/test_proxy_server.py +++ b/tests/server/providers/proxy/test_proxy_server.py @@ -23,7 +23,7 @@ from fastmcp.server.providers.proxy import ( ProxyClient, ProxyProvider, ) -from fastmcp.tools.tool import ToolResult +from fastmcp.tools.base import ToolResult from fastmcp.tools.tool_transform import ( ToolTransformConfig, ) @@ -136,7 +136,7 @@ def fastmcp_server(): @server.prompt def image_prompt(): """A prompt that returns an image.""" - from fastmcp.prompts.prompt import Message, PromptResult + from fastmcp.prompts.base import Message, PromptResult return PromptResult( messages=[ diff --git a/tests/server/providers/test_base_provider.py b/tests/server/providers/test_base_provider.py index ed084c34d..0e8898a3f 100644 --- a/tests/server/providers/test_base_provider.py +++ b/tests/server/providers/test_base_provider.py @@ -5,7 +5,7 @@ from typing import Any from fastmcp.server.providers.base import Provider from fastmcp.server.tasks.config import TaskConfig from fastmcp.server.transforms import Namespace -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult class CustomTool(Tool): diff --git a/tests/server/providers/test_fastmcp_provider.py b/tests/server/providers/test_fastmcp_provider.py index f7f86d9a3..4d739858d 100644 --- a/tests/server/providers/test_fastmcp_provider.py +++ b/tests/server/providers/test_fastmcp_provider.py @@ -4,11 +4,11 @@ import mcp.types as mt from fastmcp import FastMCP from fastmcp.client import Client -from fastmcp.prompts.prompt import PromptResult -from fastmcp.resources.resource import ResourceResult +from fastmcp.prompts.base import PromptResult +from fastmcp.resources.base import ResourceResult from fastmcp.server.middleware import CallNext, Middleware, MiddlewareContext from fastmcp.server.providers import FastMCPProvider -from fastmcp.tools.tool import ToolResult +from fastmcp.tools.base import ToolResult class ToolTracingMiddleware(Middleware): diff --git a/tests/server/providers/test_local_provider.py b/tests/server/providers/test_local_provider.py index 2db664338..ebc74f90c 100644 --- a/tests/server/providers/test_local_provider.py +++ b/tests/server/providers/test_local_provider.py @@ -15,10 +15,10 @@ import pytest from fastmcp import FastMCP from fastmcp.client import Client -from fastmcp.prompts.prompt import Prompt +from fastmcp.prompts.base import Prompt from fastmcp.server.providers.local_provider import LocalProvider from fastmcp.server.tasks import TaskConfig -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult class TestLocalProviderStorage: diff --git a/tests/server/providers/test_local_provider_prompts.py b/tests/server/providers/test_local_provider_prompts.py index 0176a9b53..8f2776759 100644 --- a/tests/server/providers/test_local_provider_prompts.py +++ b/tests/server/providers/test_local_provider_prompts.py @@ -9,7 +9,7 @@ import pytest from mcp.types import TextContent from fastmcp import Client, Context, FastMCP -from fastmcp.prompts.prompt import Prompt, PromptResult +from fastmcp.prompts.base import Prompt, PromptResult class TestPromptContext: diff --git a/tests/server/tasks/test_custom_subclass_tasks.py b/tests/server/tasks/test_custom_subclass_tasks.py index 381fd24ac..2077e066c 100644 --- a/tests/server/tasks/test_custom_subclass_tasks.py +++ b/tests/server/tasks/test_custom_subclass_tasks.py @@ -13,7 +13,7 @@ import pytest from fastmcp import FastMCP from fastmcp.client import Client from fastmcp.server.tasks import TaskConfig -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult from fastmcp.utilities.components import FastMCPComponent diff --git a/tests/server/tasks/test_resource_task_meta_parameter.py b/tests/server/tasks/test_resource_task_meta_parameter.py index 50650f9d5..ec5137932 100644 --- a/tests/server/tasks/test_resource_task_meta_parameter.py +++ b/tests/server/tasks/test_resource_task_meta_parameter.py @@ -10,7 +10,7 @@ from mcp.shared.exceptions import McpError from fastmcp import FastMCP from fastmcp.client import Client -from fastmcp.resources.resource import Resource +from fastmcp.resources.base import Resource from fastmcp.resources.template import ResourceTemplate from fastmcp.server.tasks.config import TaskMeta diff --git a/tests/server/tasks/test_task_config.py b/tests/server/tasks/test_task_config.py index 6287df933..c94ffec6a 100644 --- a/tests/server/tasks/test_task_config.py +++ b/tests/server/tasks/test_task_config.py @@ -16,7 +16,7 @@ from fastmcp import FastMCP from fastmcp.client import Client from fastmcp.exceptions import ToolError from fastmcp.server.tasks import TaskConfig -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool class TestTaskConfigNormalization: diff --git a/tests/server/tasks/test_task_meta_parameter.py b/tests/server/tasks/test_task_meta_parameter.py index ecf6d303a..954152580 100644 --- a/tests/server/tasks/test_task_meta_parameter.py +++ b/tests/server/tasks/test_task_meta_parameter.py @@ -13,7 +13,7 @@ from fastmcp.client import Client from fastmcp.exceptions import ToolError from fastmcp.server.middleware import CallNext, Middleware, MiddlewareContext from fastmcp.server.tasks.config import TaskMeta -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult class TestTaskMetaParameter: diff --git a/tests/server/tasks/test_task_mount.py b/tests/server/tasks/test_task_mount.py index b20cc4d32..d5827d890 100644 --- a/tests/server/tasks/test_task_mount.py +++ b/tests/server/tasks/test_task_mount.py @@ -13,12 +13,12 @@ from docket import Docket from fastmcp import FastMCP from fastmcp.client import Client -from fastmcp.prompts.prompt import PromptResult -from fastmcp.resources.resource import ResourceResult +from fastmcp.prompts.base import PromptResult +from fastmcp.resources.base import ResourceResult from fastmcp.server.dependencies import CurrentDocket, CurrentFastMCP from fastmcp.server.middleware import CallNext, Middleware, MiddlewareContext from fastmcp.server.tasks import TaskConfig -from fastmcp.tools.tool import ToolResult +from fastmcp.tools.base import ToolResult @pytest.fixture(autouse=True) diff --git a/tests/server/test_providers.py b/tests/server/test_providers.py index d634227fe..b62df314a 100644 --- a/tests/server/test_providers.py +++ b/tests/server/test_providers.py @@ -7,13 +7,13 @@ import pytest from mcp.types import AnyUrl, TextContent from fastmcp import FastMCP +from fastmcp.prompts.base import Prompt from fastmcp.prompts.function_prompt import FunctionPrompt -from fastmcp.prompts.prompt import Prompt +from fastmcp.resources.base import Resource from fastmcp.resources.function_resource import FunctionResource -from fastmcp.resources.resource import Resource from fastmcp.resources.template import FunctionResourceTemplate, ResourceTemplate from fastmcp.server.providers import Provider -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult from fastmcp.utilities.versions import VersionSpec diff --git a/tests/server/test_server.py b/tests/server/test_server.py index e3a7f5125..3d62e7092 100644 --- a/tests/server/test_server.py +++ b/tests/server/test_server.py @@ -10,7 +10,7 @@ from mcp.types import TextContent, TextResourceContents from fastmcp import Client, FastMCP from fastmcp.server.providers import LocalProvider from fastmcp.tools import FunctionTool -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool from fastmcp.utilities.tests import temporary_settings diff --git a/tests/server/test_tool_annotations.py b/tests/server/test_tool_annotations.py index b805f4f9e..8a2a925df 100644 --- a/tests/server/test_tool_annotations.py +++ b/tests/server/test_tool_annotations.py @@ -5,7 +5,7 @@ from mcp.types import Tool as MCPTool from mcp.types import ToolAnnotations, ToolExecution from fastmcp import Client, FastMCP -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool async def test_tool_annotations_in_tool_manager(): diff --git a/tests/server/transforms/test_catalog.py b/tests/server/transforms/test_catalog.py index 01004a2bf..d95fc55c4 100644 --- a/tests/server/transforms/test_catalog.py +++ b/tests/server/transforms/test_catalog.py @@ -12,7 +12,7 @@ from fastmcp.server.context import Context from fastmcp.server.transforms import GetToolNext from fastmcp.server.transforms.catalog import CatalogTransform from fastmcp.server.transforms.version_filter import VersionFilter -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool from fastmcp.utilities.versions import VersionSpec # --------------------------------------------------------------------------- diff --git a/tests/server/transforms/test_search.py b/tests/server/transforms/test_search.py index 9549f8c01..ee0f5ad40 100644 --- a/tests/server/transforms/test_search.py +++ b/tests/server/transforms/test_search.py @@ -20,7 +20,7 @@ from fastmcp.server.transforms.search.bm25 import ( _catalog_hash, ) from fastmcp.server.transforms.search.regex import RegexSearchTransform -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult # --------------------------------------------------------------------------- # Helpers diff --git a/tests/server/transforms/test_visibility.py b/tests/server/transforms/test_visibility.py index a784af1f4..d3434cc4a 100644 --- a/tests/server/transforms/test_visibility.py +++ b/tests/server/transforms/test_visibility.py @@ -3,7 +3,7 @@ import pytest from fastmcp.server.transforms.visibility import Visibility, is_enabled -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool from fastmcp.utilities.versions import VersionSpec diff --git a/tests/test_apps_prefab.py b/tests/test_apps_prefab.py index 301141d05..d9294d775 100644 --- a/tests/test_apps_prefab.py +++ b/tests/test_apps_prefab.py @@ -19,7 +19,7 @@ from fastmcp.server.apps import UI_MIME_TYPE, AppConfig from fastmcp.server.providers.local_provider.decorators.tools import ( PREFAB_RENDERER_URI, ) -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult # --------------------------------------------------------------------------- # convert_result diff --git a/tests/test_fastmcp_app.py b/tests/test_fastmcp_app.py index eabcef4a6..1ef8023f4 100644 --- a/tests/test_fastmcp_app.py +++ b/tests/test_fastmcp_app.py @@ -25,7 +25,7 @@ from fastmcp.server.app import ( _make_global_key, _resolve_tool_ref, ) -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool # --------------------------------------------------------------------------- # Fixtures / helpers diff --git a/tests/test_json_schema_generation.py b/tests/test_json_schema_generation.py index 9cf10a0a5..5fdd9ae23 100644 --- a/tests/test_json_schema_generation.py +++ b/tests/test_json_schema_generation.py @@ -7,8 +7,8 @@ using SkipJsonSchema annotations. from fastmcp.prompts.function_prompt import FunctionPrompt from fastmcp.resources.function_resource import FunctionResource from fastmcp.resources.template import FunctionResourceTemplate +from fastmcp.tools.base import Tool from fastmcp.tools.function_tool import FunctionTool -from fastmcp.tools.tool import Tool from fastmcp.tools.tool_transform import TransformedTool diff --git a/tests/test_mcp_config.py b/tests/test_mcp_config.py index 1cef09582..d8b0547dd 100644 --- a/tests/test_mcp_config.py +++ b/tests/test_mcp_config.py @@ -36,7 +36,7 @@ from fastmcp.mcp_config import ( StdioMCPServer, TransformingStdioMCPServer, ) -from fastmcp.tools.tool import Tool as FastMCPTool +from fastmcp.tools.base import Tool as FastMCPTool # These tests spawn subprocess servers via stdio which can be slow under # parallel CI load. Give them more headroom than the 5s default, and skip diff --git a/tests/tools/test_tool_future_annotations.py b/tests/tools/test_tool_future_annotations.py index 10ca9c57a..acddc76c4 100644 --- a/tests/tools/test_tool_future_annotations.py +++ b/tests/tools/test_tool_future_annotations.py @@ -7,7 +7,7 @@ from pydantic import Field from fastmcp import Context, FastMCP from fastmcp.client import Client -from fastmcp.tools.tool import ToolResult +from fastmcp.tools.base import ToolResult from fastmcp.utilities.types import Image fastmcp_server = FastMCP() diff --git a/tests/tools/tool/test_callable.py b/tests/tools/tool/test_callable.py index cffe8ab42..83dd149ce 100644 --- a/tests/tools/tool/test_callable.py +++ b/tests/tools/tool/test_callable.py @@ -4,7 +4,7 @@ import threading from mcp.types import TextContent from fastmcp import Context, FastMCP -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool class TestToolCallable: diff --git a/tests/tools/tool/test_content.py b/tests/tools/tool/test_content.py index d08720f80..0ffe54385 100644 --- a/tests/tools/tool/test_content.py +++ b/tests/tools/tool/test_content.py @@ -13,7 +13,7 @@ from mcp.types import ( ) from pydantic import AnyUrl, BaseModel -from fastmcp.tools.tool import Tool, _convert_to_content +from fastmcp.tools.base import Tool, _convert_to_content from fastmcp.utilities.types import Audio, File, Image diff --git a/tests/tools/tool/test_output_schema.py b/tests/tools/tool/test_output_schema.py index bf01781a2..8625d6886 100644 --- a/tests/tools/tool/test_output_schema.py +++ b/tests/tools/tool/test_output_schema.py @@ -7,7 +7,7 @@ from mcp.types import AudioContent, EmbeddedResource, ImageContent, TextContent from pydantic import AnyUrl, BaseModel, Field, TypeAdapter from typing_extensions import TypedDict -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool from fastmcp.utilities.json_schema import compress_schema from fastmcp.utilities.types import Audio, File, Image diff --git a/tests/tools/tool/test_results.py b/tests/tools/tool/test_results.py index da5973cd8..fb8de48ae 100644 --- a/tests/tools/tool/test_results.py +++ b/tests/tools/tool/test_results.py @@ -3,7 +3,7 @@ from typing import Any import pytest -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult class TestToolResultCasting: diff --git a/tests/tools/tool/test_title.py b/tests/tools/tool/test_title.py index 30fa5b3f6..f69a9418c 100644 --- a/tests/tools/tool/test_title.py +++ b/tests/tools/tool/test_title.py @@ -1,4 +1,4 @@ -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool class TestToolTitle: diff --git a/tests/tools/tool/test_tool.py b/tests/tools/tool/test_tool.py index e2976b674..b9c14a9f3 100644 --- a/tests/tools/tool/test_tool.py +++ b/tests/tools/tool/test_tool.py @@ -10,7 +10,7 @@ from mcp.types import ( ) from pydantic import BaseModel -from fastmcp.tools.tool import Tool, ToolResult +from fastmcp.tools.base import Tool, ToolResult from fastmcp.utilities.types import Audio, File, Image diff --git a/tests/tools/tool_transform/test_schemas.py b/tests/tools/tool_transform/test_schemas.py index 41aa7bbe8..b557186a5 100644 --- a/tests/tools/tool_transform/test_schemas.py +++ b/tests/tools/tool_transform/test_schemas.py @@ -7,8 +7,8 @@ from mcp.types import TextContent from pydantic import BaseModel, Field, TypeAdapter from fastmcp.tools import Tool, forward +from fastmcp.tools.base import ToolResult from fastmcp.tools.function_tool import FunctionTool -from fastmcp.tools.tool import ToolResult from fastmcp.tools.tool_transform import ( ArgTransform, TransformedTool, diff --git a/tests/tools/tool_transform/test_tool_transform.py b/tests/tools/tool_transform/test_tool_transform.py index cc81f8e8a..810225121 100644 --- a/tests/tools/tool_transform/test_tool_transform.py +++ b/tests/tools/tool_transform/test_tool_transform.py @@ -10,8 +10,8 @@ from pydantic import BaseModel, Field from fastmcp import FastMCP from fastmcp.client.client import Client from fastmcp.tools import Tool, forward, forward_raw, tool +from fastmcp.tools.base import ToolResult from fastmcp.tools.function_tool import FunctionTool -from fastmcp.tools.tool import ToolResult from fastmcp.tools.tool_transform import ( ArgTransform, TransformedTool, diff --git a/tests/utilities/test_components.py b/tests/utilities/test_components.py index d8b852986..39182d434 100644 --- a/tests/utilities/test_components.py +++ b/tests/utilities/test_components.py @@ -5,10 +5,10 @@ import warnings import pytest from pydantic import ValidationError -from fastmcp.prompts.prompt import Prompt -from fastmcp.resources.resource import Resource +from fastmcp.prompts.base import Prompt +from fastmcp.resources.base import Resource from fastmcp.resources.template import ResourceTemplate -from fastmcp.tools.tool import Tool +from fastmcp.tools.base import Tool from fastmcp.utilities.components import ( FastMCPComponent, FastMCPMeta,