mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-09 07:09:11 +02:00
fix: resolve Pyright "Module is not callable" on @tool, @resource, @prompt decorators (#3540)
* pin pydantic-monty to 0.0.8 * rename tool/prompt/resource base modules to avoid decorator name shadow * add sys.modules shims for old submodule import paths * preserve original module paths in deprecation warnings * clarify when sys.modules shims can be removed
This commit is contained in:
parent
6bffb22c6c
commit
360c9c31e5
107 changed files with 202 additions and 178 deletions
|
|
@ -6,9 +6,9 @@ from collections.abc import Callable
|
||||||
from typing import TYPE_CHECKING, Any
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
import fastmcp
|
import fastmcp
|
||||||
from fastmcp.prompts.prompt import Prompt
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.resources.resource import Resource
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
from fastmcp.utilities.types import get_fn_name
|
from fastmcp.utilities.types import get_fn_name
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ from fastmcp.server.transforms.search.base import (
|
||||||
serialize_tools_for_output_json,
|
serialize_tools_for_output_json,
|
||||||
serialize_tools_for_output_markdown,
|
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.async_utils import is_coroutine_function
|
||||||
from fastmcp.utilities.versions import VersionSpec
|
from fastmcp.utilities.versions import VersionSpec
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
|
import sys
|
||||||
|
|
||||||
from .function_prompt import FunctionPrompt, prompt
|
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__ = [
|
__all__ = [
|
||||||
"FunctionPrompt",
|
"FunctionPrompt",
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ from pydantic.json_schema import SkipJsonSchema
|
||||||
import fastmcp
|
import fastmcp
|
||||||
from fastmcp.decorators import resolve_task_config
|
from fastmcp.decorators import resolve_task_config
|
||||||
from fastmcp.exceptions import PromptError
|
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.auth.authorization import AuthCheck
|
||||||
from fastmcp.server.dependencies import (
|
from fastmcp.server.dependencies import (
|
||||||
transform_context_annotations,
|
transform_context_annotations,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
|
import sys
|
||||||
|
|
||||||
from .function_resource import FunctionResource, resource
|
from .function_resource import FunctionResource, resource
|
||||||
from .resource import Resource, ResourceContent, ResourceResult
|
from .base import Resource, ResourceContent, ResourceResult
|
||||||
from .template import ResourceTemplate
|
from .template import ResourceTemplate
|
||||||
from .types import (
|
from .types import (
|
||||||
BinaryResource,
|
BinaryResource,
|
||||||
|
|
@ -22,3 +24,9 @@ __all__ = [
|
||||||
"TextResource",
|
"TextResource",
|
||||||
"resource",
|
"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"]
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ from pydantic.json_schema import SkipJsonSchema
|
||||||
|
|
||||||
import fastmcp
|
import fastmcp
|
||||||
from fastmcp.decorators import resolve_task_config
|
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.apps import resolve_ui_mime_type
|
||||||
from fastmcp.server.auth.authorization import AuthCheck
|
from fastmcp.server.auth.authorization import AuthCheck
|
||||||
from fastmcp.server.dependencies import (
|
from fastmcp.server.dependencies import (
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ from pydantic import (
|
||||||
validate_call,
|
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.apps import resolve_ui_mime_type
|
||||||
from fastmcp.server.auth.authorization import AuthCheck
|
from fastmcp.server.auth.authorization import AuthCheck
|
||||||
from fastmcp.server.dependencies import (
|
from fastmcp.server.dependencies import (
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ from pydantic import Field, ValidationInfo
|
||||||
from typing_extensions import override
|
from typing_extensions import override
|
||||||
|
|
||||||
from fastmcp.exceptions import ResourceError
|
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
|
from fastmcp.utilities.logging import get_logger
|
||||||
|
|
||||||
logger = get_logger(__name__)
|
logger = get_logger(__name__)
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ from fastmcp.decorators import get_fastmcp_meta
|
||||||
from fastmcp.server.auth.authorization import AuthCheck
|
from fastmcp.server.auth.authorization import AuthCheck
|
||||||
from fastmcp.server.providers.base import Provider
|
from fastmcp.server.providers.base import Provider
|
||||||
from fastmcp.server.providers.local_provider import LocalProvider
|
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
|
from fastmcp.utilities.logging import get_logger
|
||||||
|
|
||||||
logger = get_logger(__name__)
|
logger = get_logger(__name__)
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from fastmcp.server.auth import AccessToken
|
from fastmcp.server.auth import AccessToken
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
from fastmcp.utilities.components import FastMCPComponent
|
from fastmcp.utilities.components import FastMCPComponent
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -66,7 +66,7 @@ class AuthContext:
|
||||||
|
|
||||||
Returns the component if it's a Tool, None otherwise.
|
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
|
return self.component if isinstance(self.component, Tool) else None
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ from starlette.requests import Request
|
||||||
from typing_extensions import TypeVar
|
from typing_extensions import TypeVar
|
||||||
from uncalled_for import SharedContext
|
from uncalled_for import SharedContext
|
||||||
|
|
||||||
from fastmcp.resources.resource import ResourceResult
|
from fastmcp.resources.base import ResourceResult
|
||||||
from fastmcp.server.elicitation import (
|
from fastmcp.server.elicitation import (
|
||||||
AcceptedElicitation,
|
AcceptedElicitation,
|
||||||
CancelledElicitation,
|
CancelledElicitation,
|
||||||
|
|
|
||||||
|
|
@ -29,8 +29,8 @@ from collections.abc import Sequence
|
||||||
import mcp.types as mt
|
import mcp.types as mt
|
||||||
|
|
||||||
from fastmcp.exceptions import AuthorizationError
|
from fastmcp.exceptions import AuthorizationError
|
||||||
from fastmcp.prompts.prompt import Prompt, PromptResult
|
from fastmcp.prompts.base import Prompt, PromptResult
|
||||||
from fastmcp.resources.resource import Resource, ResourceResult
|
from fastmcp.resources.base import Resource, ResourceResult
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.server.auth.authorization import (
|
from fastmcp.server.auth.authorization import (
|
||||||
AuthCheck,
|
AuthCheck,
|
||||||
|
|
@ -43,7 +43,7 @@ from fastmcp.server.middleware.middleware import (
|
||||||
Middleware,
|
Middleware,
|
||||||
MiddlewareContext,
|
MiddlewareContext,
|
||||||
)
|
)
|
||||||
from fastmcp.tools.tool import Tool, ToolResult
|
from fastmcp.tools.base import Tool, ToolResult
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,10 +18,10 @@ from key_value.aio.wrappers.statistics.wrapper import (
|
||||||
from pydantic import Field
|
from pydantic import Field
|
||||||
from typing_extensions import NotRequired, Self, override
|
from typing_extensions import NotRequired, Self, override
|
||||||
|
|
||||||
from fastmcp.prompts.prompt import Message, Prompt, PromptResult
|
from fastmcp.prompts.base import Message, Prompt, PromptResult
|
||||||
from fastmcp.resources.resource import Resource, ResourceContent, ResourceResult
|
from fastmcp.resources.base import Resource, ResourceContent, ResourceResult
|
||||||
from fastmcp.server.middleware.middleware import CallNext, Middleware, MiddlewareContext
|
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.logging import get_logger
|
||||||
from fastmcp.utilities.types import FastMCPBaseModel
|
from fastmcp.utilities.types import FastMCPBaseModel
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ from typing_extensions import override
|
||||||
|
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.server.middleware.middleware import CallNext, Middleware, MiddlewareContext
|
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
|
from fastmcp.utilities.json_schema import dereference_refs
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,10 @@ from typing import (
|
||||||
import mcp.types as mt
|
import mcp.types as mt
|
||||||
from typing_extensions import TypeVar
|
from typing_extensions import TypeVar
|
||||||
|
|
||||||
from fastmcp.prompts.prompt import Prompt, PromptResult
|
from fastmcp.prompts.base import Prompt, PromptResult
|
||||||
from fastmcp.resources.resource import Resource, ResourceResult
|
from fastmcp.resources.base import Resource, ResourceResult
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.tools.tool import Tool, ToolResult
|
from fastmcp.tools.base import Tool, ToolResult
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from fastmcp.server.context import Context
|
from fastmcp.server.context import Context
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import mcp.types as mt
|
||||||
import pydantic_core
|
import pydantic_core
|
||||||
from mcp.types import TextContent
|
from mcp.types import TextContent
|
||||||
|
|
||||||
from fastmcp.tools.tool import ToolResult
|
from fastmcp.tools.base import ToolResult
|
||||||
|
|
||||||
from .middleware import CallNext, Middleware, MiddlewareContext
|
from .middleware import CallNext, Middleware, MiddlewareContext
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,10 @@ from pydantic import AnyUrl
|
||||||
from typing_extensions import override
|
from typing_extensions import override
|
||||||
|
|
||||||
import fastmcp
|
import fastmcp
|
||||||
from fastmcp.resources.resource import ResourceResult
|
from fastmcp.resources.base import ResourceResult
|
||||||
from fastmcp.server.context import Context
|
from fastmcp.server.context import Context
|
||||||
from fastmcp.server.middleware.middleware import CallNext, Middleware, MiddlewareContext
|
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.logging import get_logger
|
||||||
|
|
||||||
logger: Logger = get_logger(name=__name__)
|
logger: Logger = get_logger(name=__name__)
|
||||||
|
|
|
||||||
|
|
@ -33,10 +33,10 @@ from fastmcp.utilities.components import FastMCPComponent
|
||||||
from fastmcp.utilities.versions import VersionSpec, version_sort_key
|
from fastmcp.utilities.versions import VersionSpec, version_sort_key
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from fastmcp.prompts.prompt import Prompt
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.resources.resource import Resource
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,11 +35,11 @@ from typing import TYPE_CHECKING, Literal, cast
|
||||||
|
|
||||||
from typing_extensions import Self
|
from typing_extensions import Self
|
||||||
|
|
||||||
from fastmcp.prompts.prompt import Prompt
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.resources.resource import Resource
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.server.transforms.visibility import Visibility
|
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.async_utils import gather
|
||||||
from fastmcp.utilities.components import FastMCPComponent
|
from fastmcp.utilities.components import FastMCPComponent
|
||||||
from fastmcp.utilities.versions import VersionSpec, version_sort_key
|
from fastmcp.utilities.versions import VersionSpec, version_sort_key
|
||||||
|
|
|
||||||
|
|
@ -19,13 +19,13 @@ from urllib.parse import quote
|
||||||
import mcp.types
|
import mcp.types
|
||||||
from mcp.types import AnyUrl
|
from mcp.types import AnyUrl
|
||||||
|
|
||||||
from fastmcp.prompts.prompt import Prompt, PromptResult
|
from fastmcp.prompts.base import Prompt, PromptResult
|
||||||
from fastmcp.resources.resource import Resource, ResourceResult
|
from fastmcp.resources.base import Resource, ResourceResult
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.server.providers.base import Provider
|
from fastmcp.server.providers.base import Provider
|
||||||
from fastmcp.server.tasks.config import TaskMeta
|
from fastmcp.server.tasks.config import TaskMeta
|
||||||
from fastmcp.server.telemetry import delegate_span
|
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.components import FastMCPComponent
|
||||||
from fastmcp.utilities.versions import VersionSpec
|
from fastmcp.utilities.versions import VersionSpec
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,12 +31,12 @@ import asyncio
|
||||||
from collections.abc import Sequence
|
from collections.abc import Sequence
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from fastmcp.prompts.prompt import Prompt
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.resources.resource import Resource
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.server.providers.filesystem_discovery import discover_and_import
|
from fastmcp.server.providers.filesystem_discovery import discover_and_import
|
||||||
from fastmcp.server.providers.local_provider import LocalProvider
|
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.components import FastMCPComponent
|
||||||
from fastmcp.utilities.logging import get_logger
|
from fastmcp.utilities.logging import get_logger
|
||||||
from fastmcp.utilities.versions import VersionSpec
|
from fastmcp.utilities.versions import VersionSpec
|
||||||
|
|
|
||||||
|
|
@ -189,14 +189,14 @@ def extract_components(module: ModuleType) -> list[FastMCPComponent]:
|
||||||
import inspect
|
import inspect
|
||||||
|
|
||||||
from fastmcp.decorators import get_fastmcp_meta
|
from fastmcp.decorators import get_fastmcp_meta
|
||||||
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.prompts.function_prompt import PromptMeta
|
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.function_resource import ResourceMeta
|
||||||
from fastmcp.resources.resource import Resource
|
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.server.dependencies import without_injected_parameters
|
from fastmcp.server.dependencies import without_injected_parameters
|
||||||
|
from fastmcp.tools.base import Tool
|
||||||
from fastmcp.tools.function_tool import ToolMeta
|
from fastmcp.tools.function_tool import ToolMeta
|
||||||
from fastmcp.tools.tool import Tool
|
|
||||||
|
|
||||||
component_types = (Tool, Resource, ResourceTemplate, Prompt)
|
component_types = (Tool, Resource, ResourceTemplate, Prompt)
|
||||||
components: list[FastMCPComponent] = []
|
components: list[FastMCPComponent] = []
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,8 @@ import mcp.types
|
||||||
from mcp.types import AnyFunction
|
from mcp.types import AnyFunction
|
||||||
|
|
||||||
import fastmcp
|
import fastmcp
|
||||||
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.prompts.function_prompt import FunctionPrompt
|
from fastmcp.prompts.function_prompt import FunctionPrompt
|
||||||
from fastmcp.prompts.prompt import Prompt
|
|
||||||
from fastmcp.server.auth.authorization import AuthCheck
|
from fastmcp.server.auth.authorization import AuthCheck
|
||||||
from fastmcp.server.tasks.config import TaskConfig
|
from fastmcp.server.tasks.config import TaskConfig
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,8 @@ import mcp.types
|
||||||
from mcp.types import Annotations, AnyFunction
|
from mcp.types import Annotations, AnyFunction
|
||||||
|
|
||||||
import fastmcp
|
import fastmcp
|
||||||
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.resources.function_resource import resource as standalone_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.resources.template import ResourceTemplate
|
||||||
from fastmcp.server.auth.authorization import AuthCheck
|
from fastmcp.server.auth.authorization import AuthCheck
|
||||||
from fastmcp.server.tasks.config import TaskConfig
|
from fastmcp.server.tasks.config import TaskConfig
|
||||||
|
|
|
||||||
|
|
@ -29,8 +29,8 @@ from mcp.types import AnyFunction, ToolAnnotations
|
||||||
import fastmcp
|
import fastmcp
|
||||||
from fastmcp.server.auth.authorization import AuthCheck
|
from fastmcp.server.auth.authorization import AuthCheck
|
||||||
from fastmcp.server.tasks.config import TaskConfig
|
from fastmcp.server.tasks.config import TaskConfig
|
||||||
|
from fastmcp.tools.base import Tool
|
||||||
from fastmcp.tools.function_tool import FunctionTool
|
from fastmcp.tools.function_tool import FunctionTool
|
||||||
from fastmcp.tools.tool import Tool
|
|
||||||
from fastmcp.utilities.types import NotSet, NotSetT
|
from fastmcp.utilities.types import NotSet, NotSetT
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
@ -43,7 +43,7 @@ except ImportError:
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from fastmcp.server.providers.local_provider import LocalProvider
|
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])
|
F = TypeVar("F", bound=Callable[..., Any])
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,8 @@ from __future__ import annotations
|
||||||
from collections.abc import Sequence
|
from collections.abc import Sequence
|
||||||
from typing import Literal, TypeVar
|
from typing import Literal, TypeVar
|
||||||
|
|
||||||
from fastmcp.prompts.prompt import Prompt
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.resources.resource import Resource
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.server.providers.base import Provider
|
from fastmcp.server.providers.base import Provider
|
||||||
from fastmcp.server.providers.local_provider.decorators import (
|
from fastmcp.server.providers.local_provider.decorators import (
|
||||||
|
|
@ -36,7 +36,7 @@ from fastmcp.server.providers.local_provider.decorators import (
|
||||||
ResourceDecoratorMixin,
|
ResourceDecoratorMixin,
|
||||||
ToolDecoratorMixin,
|
ToolDecoratorMixin,
|
||||||
)
|
)
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
from fastmcp.utilities.components import FastMCPComponent
|
from fastmcp.utilities.components import FastMCPComponent
|
||||||
from fastmcp.utilities.logging import get_logger
|
from fastmcp.utilities.logging import get_logger
|
||||||
from fastmcp.utilities.versions import VersionSpec, version_sort_key
|
from fastmcp.utilities.versions import VersionSpec, version_sort_key
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ from fastmcp.resources import (
|
||||||
)
|
)
|
||||||
from fastmcp.server.dependencies import get_http_headers
|
from fastmcp.server.dependencies import get_http_headers
|
||||||
from fastmcp.server.tasks.config import TaskConfig
|
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.logging import get_logger
|
||||||
from fastmcp.utilities.openapi import HTTPRoute
|
from fastmcp.utilities.openapi import HTTPRoute
|
||||||
from fastmcp.utilities.openapi.director import RequestDirector
|
from fastmcp.utilities.openapi.director import RequestDirector
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ from fastmcp.server.providers.openapi.routing import (
|
||||||
RouteMapFn,
|
RouteMapFn,
|
||||||
_determine_route_type,
|
_determine_route_type,
|
||||||
)
|
)
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
from fastmcp.utilities.components import FastMCPComponent
|
from fastmcp.utilities.components import FastMCPComponent
|
||||||
from fastmcp.utilities.logging import get_logger
|
from fastmcp.utilities.logging import get_logger
|
||||||
from fastmcp.utilities.openapi import (
|
from fastmcp.utilities.openapi import (
|
||||||
|
|
|
||||||
|
|
@ -37,15 +37,15 @@ from fastmcp.client.transports import ClientTransportT
|
||||||
from fastmcp.exceptions import ResourceError, ToolError
|
from fastmcp.exceptions import ResourceError, ToolError
|
||||||
from fastmcp.mcp_config import MCPConfig
|
from fastmcp.mcp_config import MCPConfig
|
||||||
from fastmcp.prompts import Message, Prompt, PromptResult
|
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 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.context import Context
|
||||||
from fastmcp.server.dependencies import get_context
|
from fastmcp.server.dependencies import get_context
|
||||||
from fastmcp.server.providers.base import Provider
|
from fastmcp.server.providers.base import Provider
|
||||||
from fastmcp.server.server import FastMCP
|
from fastmcp.server.server import FastMCP
|
||||||
from fastmcp.server.tasks.config import TaskConfig
|
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.components import FastMCPComponent, get_fastmcp_metadata
|
||||||
from fastmcp.utilities.logging import get_logger
|
from fastmcp.utilities.logging import get_logger
|
||||||
from fastmcp.utilities.versions import VersionSpec, version_sort_key
|
from fastmcp.utilities.versions import VersionSpec, version_sort_key
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ from collections.abc import Sequence
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Literal
|
from typing import Literal
|
||||||
|
|
||||||
from fastmcp.resources.resource import Resource
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.server.providers.aggregate import AggregateProvider
|
from fastmcp.server.providers.aggregate import AggregateProvider
|
||||||
from fastmcp.server.providers.skills.skill_provider import SkillProvider
|
from fastmcp.server.providers.skills.skill_provider import SkillProvider
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ from typing import Any, Literal, cast
|
||||||
|
|
||||||
from pydantic import AnyUrl
|
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.resources.template import ResourceTemplate
|
||||||
from fastmcp.server.providers.base import Provider
|
from fastmcp.server.providers.base import Provider
|
||||||
from fastmcp.server.providers.skills._common import (
|
from fastmcp.server.providers.skills._common import (
|
||||||
|
|
|
||||||
|
|
@ -14,11 +14,11 @@ from fastmcp.server.providers.base import Provider
|
||||||
from fastmcp.utilities.versions import VersionSpec
|
from fastmcp.utilities.versions import VersionSpec
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from fastmcp.prompts.prompt import Prompt
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.resources.resource import Resource
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.server.transforms import Transform
|
from fastmcp.server.transforms import Transform
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
from fastmcp.utilities.components import FastMCPComponent
|
from fastmcp.utilities.components import FastMCPComponent
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -96,10 +96,10 @@ class _WrappedProvider(Provider):
|
||||||
async def get_tasks(self) -> Sequence[FastMCPComponent]:
|
async def get_tasks(self) -> Sequence[FastMCPComponent]:
|
||||||
"""Delegate to inner's get_tasks and apply wrapper's transforms."""
|
"""Delegate to inner's get_tasks and apply wrapper's transforms."""
|
||||||
# Import here to avoid circular imports
|
# Import here to avoid circular imports
|
||||||
from fastmcp.prompts.prompt import Prompt
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.resources.resource import Resource
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
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)
|
# Get tasks from inner (already has inner's transforms)
|
||||||
components = list(await self._inner.get_tasks())
|
components = list(await self._inner.get_tasks())
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,9 @@ from pydantic import ConfigDict
|
||||||
from fastmcp.exceptions import AuthorizationError
|
from fastmcp.exceptions import AuthorizationError
|
||||||
from fastmcp.server.auth.authorization import AuthContext, run_auth_checks
|
from fastmcp.server.auth.authorization import AuthContext, run_auth_checks
|
||||||
from fastmcp.server.dependencies import get_access_token
|
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_parsing import ParsedFunction
|
||||||
from fastmcp.tools.function_tool import FunctionTool
|
from fastmcp.tools.function_tool import FunctionTool
|
||||||
from fastmcp.tools.tool import ToolResult
|
|
||||||
from fastmcp.tools.tool_transform import TransformedTool
|
from fastmcp.tools.tool_transform import TransformedTool
|
||||||
from fastmcp.utilities.types import FastMCPBaseModel
|
from fastmcp.utilities.types import FastMCPBaseModel
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -52,9 +52,9 @@ from fastmcp.exceptions import (
|
||||||
)
|
)
|
||||||
from fastmcp.mcp_config import MCPConfig
|
from fastmcp.mcp_config import MCPConfig
|
||||||
from fastmcp.prompts import Prompt
|
from fastmcp.prompts import Prompt
|
||||||
|
from fastmcp.prompts.base import PromptResult
|
||||||
from fastmcp.prompts.function_prompt import FunctionPrompt
|
from fastmcp.prompts.function_prompt import FunctionPrompt
|
||||||
from fastmcp.prompts.prompt import PromptResult
|
from fastmcp.resources.base import Resource, ResourceResult
|
||||||
from fastmcp.resources.resource import Resource, ResourceResult
|
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.server.apps import (
|
from fastmcp.server.apps import (
|
||||||
AppConfig,
|
AppConfig,
|
||||||
|
|
@ -76,8 +76,8 @@ from fastmcp.server.transforms import (
|
||||||
)
|
)
|
||||||
from fastmcp.server.transforms.visibility import apply_session_transforms, is_enabled
|
from fastmcp.server.transforms.visibility import apply_session_transforms, is_enabled
|
||||||
from fastmcp.settings import DuplicateBehavior as DuplicateBehaviorSetting
|
from fastmcp.settings import DuplicateBehavior as DuplicateBehaviorSetting
|
||||||
|
from fastmcp.tools.base import Tool, ToolResult
|
||||||
from fastmcp.tools.function_tool import FunctionTool
|
from fastmcp.tools.function_tool import FunctionTool
|
||||||
from fastmcp.tools.tool import Tool, ToolResult
|
|
||||||
from fastmcp.tools.tool_transform import ToolTransformConfig
|
from fastmcp.tools.tool_transform import ToolTransformConfig
|
||||||
from fastmcp.utilities.components import FastMCPComponent, _coerce_version
|
from fastmcp.utilities.components import FastMCPComponent, _coerce_version
|
||||||
from fastmcp.utilities.logging import get_logger
|
from fastmcp.utilities.logging import get_logger
|
||||||
|
|
|
||||||
|
|
@ -20,10 +20,10 @@ from fastmcp.server.tasks.keys import build_task_key
|
||||||
from fastmcp.utilities.logging import get_logger
|
from fastmcp.utilities.logging import get_logger
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from fastmcp.prompts.prompt import Prompt
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.resources.resource import Resource
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
logger = get_logger(__name__)
|
logger = get_logger(__name__)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,12 +25,12 @@ from mcp.types import (
|
||||||
|
|
||||||
import fastmcp.server.context
|
import fastmcp.server.context
|
||||||
from fastmcp.exceptions import NotFoundError
|
from fastmcp.exceptions import NotFoundError
|
||||||
from fastmcp.prompts.prompt import Prompt
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.resources.resource import Resource
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.server.tasks.config import DEFAULT_POLL_INTERVAL_MS, DEFAULT_TTL_MS
|
from fastmcp.server.tasks.config import DEFAULT_POLL_INTERVAL_MS, DEFAULT_TTL_MS
|
||||||
from fastmcp.server.tasks.keys import parse_task_key
|
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
|
from fastmcp.utilities.versions import VersionSpec
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
|
|
|
||||||
|
|
@ -15,10 +15,10 @@ from fastmcp.server.tasks.config import TaskMeta
|
||||||
from fastmcp.server.tasks.handlers import submit_to_docket
|
from fastmcp.server.tasks.handlers import submit_to_docket
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from fastmcp.prompts.prompt import Prompt
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.resources.resource import Resource
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
TaskType = Literal["tool", "resource", "template", "prompt"]
|
TaskType = Literal["tool", "resource", "template", "prompt"]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,10 +26,10 @@ from typing import TYPE_CHECKING, Protocol
|
||||||
from fastmcp.utilities.versions import VersionSpec
|
from fastmcp.utilities.versions import VersionSpec
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from fastmcp.prompts.prompt import Prompt
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.resources.resource import Resource
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
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
|
# Get methods use Protocol to express keyword-only version parameter
|
||||||
|
|
|
||||||
|
|
@ -53,11 +53,11 @@ from fastmcp.server.transforms import Transform
|
||||||
from fastmcp.utilities.versions import dedupe_with_versions
|
from fastmcp.utilities.versions import dedupe_with_versions
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from fastmcp.prompts.prompt import Prompt
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.resources.resource import Resource
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.server.context import Context
|
from fastmcp.server.context import Context
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
_instance_counter = itertools.count()
|
_instance_counter = itertools.count()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,10 @@ from fastmcp.server.transforms import (
|
||||||
from fastmcp.utilities.versions import VersionSpec
|
from fastmcp.utilities.versions import VersionSpec
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from fastmcp.prompts.prompt import Prompt
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.resources.resource import Resource
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
# Pattern for matching URIs: protocol://path
|
# Pattern for matching URIs: protocol://path
|
||||||
_URI_PATTERN = re.compile(r"^([^:]+://)(.*?)$")
|
_URI_PATTERN = re.compile(r"^([^:]+://)(.*?)$")
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ from mcp.types import TextContent
|
||||||
|
|
||||||
from fastmcp.server.dependencies import get_context
|
from fastmcp.server.dependencies import get_context
|
||||||
from fastmcp.server.transforms import GetToolNext, Transform
|
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
|
from fastmcp.utilities.versions import VersionSpec
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ from mcp.types import ToolAnnotations
|
||||||
|
|
||||||
from fastmcp.server.dependencies import get_context
|
from fastmcp.server.dependencies import get_context
|
||||||
from fastmcp.server.transforms import GetToolNext, Transform
|
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
|
from fastmcp.utilities.versions import VersionSpec
|
||||||
|
|
||||||
_DEFAULT_ANNOTATIONS = ToolAnnotations(readOnlyHint=True)
|
_DEFAULT_ANNOTATIONS = ToolAnnotations(readOnlyHint=True)
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ from typing import Annotated, Any
|
||||||
from fastmcp.server.context import Context
|
from fastmcp.server.context import Context
|
||||||
from fastmcp.server.transforms import GetToolNext
|
from fastmcp.server.transforms import GetToolNext
|
||||||
from fastmcp.server.transforms.catalog import CatalogTransform
|
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
|
from fastmcp.utilities.versions import VersionSpec
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ from fastmcp.server.transforms.search.base import (
|
||||||
SearchResultSerializer,
|
SearchResultSerializer,
|
||||||
_extract_searchable_text,
|
_extract_searchable_text,
|
||||||
)
|
)
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
|
|
||||||
def _tokenize(text: str) -> list[str]:
|
def _tokenize(text: str) -> list[str]:
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ from fastmcp.server.transforms.search.base import (
|
||||||
BaseSearchTransform,
|
BaseSearchTransform,
|
||||||
_extract_searchable_text,
|
_extract_searchable_text,
|
||||||
)
|
)
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
|
|
||||||
class RegexSearchTransform(BaseSearchTransform):
|
class RegexSearchTransform(BaseSearchTransform):
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ from fastmcp.tools.tool_transform import ToolTransformConfig
|
||||||
from fastmcp.utilities.versions import VersionSpec
|
from fastmcp.utilities.versions import VersionSpec
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
|
|
||||||
class ToolTransform(Transform):
|
class ToolTransform(Transform):
|
||||||
|
|
|
||||||
|
|
@ -15,10 +15,10 @@ from fastmcp.server.transforms import (
|
||||||
from fastmcp.utilities.versions import VersionSpec
|
from fastmcp.utilities.versions import VersionSpec
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from fastmcp.prompts.prompt import Prompt
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.resources.resource import Resource
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
|
|
||||||
class VersionFilter(Transform):
|
class VersionFilter(Transform):
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ from typing import TYPE_CHECKING, Any, Literal, TypeVar
|
||||||
|
|
||||||
import mcp.types
|
import mcp.types
|
||||||
|
|
||||||
from fastmcp.resources.resource import Resource
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.resources.template import ResourceTemplate
|
from fastmcp.resources.template import ResourceTemplate
|
||||||
from fastmcp.server.transforms import (
|
from fastmcp.server.transforms import (
|
||||||
GetPromptNext,
|
GetPromptNext,
|
||||||
|
|
@ -24,9 +24,9 @@ from fastmcp.server.transforms import (
|
||||||
from fastmcp.utilities.versions import VersionSpec
|
from fastmcp.utilities.versions import VersionSpec
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from fastmcp.prompts.prompt import Prompt
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.server.context import Context
|
from fastmcp.server.context import Context
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
from fastmcp.utilities.components import FastMCPComponent
|
from fastmcp.utilities.components import FastMCPComponent
|
||||||
|
|
||||||
T = TypeVar("T", bound="FastMCPComponent")
|
T = TypeVar("T", bound="FastMCPComponent")
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,15 @@
|
||||||
|
import sys
|
||||||
|
|
||||||
from .function_tool import FunctionTool, tool
|
from .function_tool import FunctionTool, tool
|
||||||
from .tool import Tool, ToolResult
|
from .base import Tool, ToolResult
|
||||||
from .tool_transform import forward, forward_raw
|
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__ = [
|
__all__ = [
|
||||||
"FunctionTool",
|
"FunctionTool",
|
||||||
"Tool",
|
"Tool",
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ from fastmcp.server.dependencies import (
|
||||||
transform_context_annotations,
|
transform_context_annotations,
|
||||||
without_injected_parameters,
|
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.json_schema import compress_schema
|
||||||
from fastmcp.utilities.logging import get_logger
|
from fastmcp.utilities.logging import get_logger
|
||||||
from fastmcp.utilities.types import (
|
from fastmcp.utilities.types import (
|
||||||
|
|
|
||||||
|
|
@ -29,12 +29,12 @@ from fastmcp.decorators import resolve_task_config
|
||||||
from fastmcp.server.auth.authorization import AuthCheck
|
from fastmcp.server.auth.authorization import AuthCheck
|
||||||
from fastmcp.server.dependencies import without_injected_parameters
|
from fastmcp.server.dependencies import without_injected_parameters
|
||||||
from fastmcp.server.tasks.config import TaskConfig
|
from fastmcp.server.tasks.config import TaskConfig
|
||||||
from fastmcp.tools.function_parsing import ParsedFunction, _is_object_schema
|
from fastmcp.tools.base import (
|
||||||
from fastmcp.tools.tool import (
|
|
||||||
Tool,
|
Tool,
|
||||||
ToolResult,
|
ToolResult,
|
||||||
ToolResultSerializerType,
|
ToolResultSerializerType,
|
||||||
)
|
)
|
||||||
|
from fastmcp.tools.function_parsing import ParsedFunction, _is_object_schema
|
||||||
from fastmcp.utilities.async_utils import (
|
from fastmcp.utilities.async_utils import (
|
||||||
call_sync_fn_in_threadpool,
|
call_sync_fn_in_threadpool,
|
||||||
is_coroutine_function,
|
is_coroutine_function,
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,8 @@ from pydantic.functional_validators import BeforeValidator
|
||||||
from pydantic.json_schema import SkipJsonSchema
|
from pydantic.json_schema import SkipJsonSchema
|
||||||
|
|
||||||
import fastmcp
|
import fastmcp
|
||||||
|
from fastmcp.tools.base import Tool, ToolResult, _convert_to_content
|
||||||
from fastmcp.tools.function_parsing import ParsedFunction
|
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.components import _convert_set_default_none
|
||||||
from fastmcp.utilities.json_schema import compress_schema
|
from fastmcp.utilities.json_schema import compress_schema
|
||||||
from fastmcp.utilities.logging import get_logger
|
from fastmcp.utilities.logging import get_logger
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ from fastmcp.contrib.bulk_tool_caller.bulk_tool_caller import (
|
||||||
CallToolRequest,
|
CallToolRequest,
|
||||||
CallToolRequestResult,
|
CallToolRequestResult,
|
||||||
)
|
)
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
|
|
||||||
class ToolException(Exception):
|
class ToolException(Exception):
|
||||||
|
|
|
||||||
|
|
@ -348,7 +348,7 @@ class TestMCPMixinKwargsSync:
|
||||||
"""Verify that the valid-kwarg sets stay in sync with from_function signatures."""
|
"""Verify that the valid-kwarg sets stay in sync with from_function signatures."""
|
||||||
|
|
||||||
def test_tool_valid_kwargs_match_from_function(self):
|
def test_tool_valid_kwargs_match_from_function(self):
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
expected = frozenset(
|
expected = frozenset(
|
||||||
p for p in inspect.signature(Tool.from_function).parameters if p != "fn"
|
p for p in inspect.signature(Tool.from_function).parameters if p != "fn"
|
||||||
|
|
@ -356,7 +356,7 @@ class TestMCPMixinKwargsSync:
|
||||||
assert _TOOL_VALID_KWARGS == expected
|
assert _TOOL_VALID_KWARGS == expected
|
||||||
|
|
||||||
def test_resource_valid_kwargs_match_from_function(self):
|
def test_resource_valid_kwargs_match_from_function(self):
|
||||||
from fastmcp.resources.resource import Resource
|
from fastmcp.resources.base import Resource
|
||||||
|
|
||||||
expected = frozenset(
|
expected = frozenset(
|
||||||
p
|
p
|
||||||
|
|
@ -366,7 +366,7 @@ class TestMCPMixinKwargsSync:
|
||||||
assert _RESOURCE_VALID_KWARGS == expected
|
assert _RESOURCE_VALID_KWARGS == expected
|
||||||
|
|
||||||
def test_prompt_valid_kwargs_match_from_function(self):
|
def test_prompt_valid_kwargs_match_from_function(self):
|
||||||
from fastmcp.prompts.prompt import Prompt
|
from fastmcp.prompts.base import Prompt
|
||||||
|
|
||||||
expected = frozenset(
|
expected = frozenset(
|
||||||
p for p in inspect.signature(Prompt.from_function).parameters if p != "fn"
|
p for p in inspect.signature(Prompt.from_function).parameters if p != "fn"
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import pytest
|
||||||
from mcp.server.session import ServerSession
|
from mcp.server.session import ServerSession
|
||||||
|
|
||||||
from fastmcp import Client, FastMCP
|
from fastmcp import Client, FastMCP
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
|
|
||||||
async def test_tool_exclude_args():
|
async def test_tool_exclude_args():
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ class TestDeprecatedFunctionToolImports:
|
||||||
with pytest.warns(
|
with pytest.warns(
|
||||||
DeprecationWarning, match="Import from fastmcp.tools.function_tool"
|
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
|
# Verify it's the real class
|
||||||
from fastmcp.tools.function_tool import (
|
from fastmcp.tools.function_tool import (
|
||||||
|
|
@ -27,7 +27,7 @@ class TestDeprecatedFunctionToolImports:
|
||||||
with pytest.warns(
|
with pytest.warns(
|
||||||
DeprecationWarning, match="Import from fastmcp.tools.function_tool"
|
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 (
|
from fastmcp.tools.function_tool import (
|
||||||
ParsedFunction as CanonicalParsedFunction,
|
ParsedFunction as CanonicalParsedFunction,
|
||||||
|
|
@ -40,7 +40,7 @@ class TestDeprecatedFunctionToolImports:
|
||||||
with pytest.warns(
|
with pytest.warns(
|
||||||
DeprecationWarning, match="Import from fastmcp.tools.function_tool"
|
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
|
from fastmcp.tools.function_tool import tool as canonical_tool
|
||||||
|
|
||||||
|
|
@ -50,7 +50,7 @@ class TestDeprecatedFunctionToolImports:
|
||||||
with temporary_settings(deprecation_warnings=False):
|
with temporary_settings(deprecation_warnings=False):
|
||||||
with warnings.catch_warnings():
|
with warnings.catch_warnings():
|
||||||
warnings.simplefilter("error")
|
warnings.simplefilter("error")
|
||||||
from fastmcp.tools.tool import FunctionTool # noqa: F401
|
from fastmcp.tools.base import FunctionTool # noqa: F401
|
||||||
|
|
||||||
|
|
||||||
class TestDeprecatedFunctionResourceImports:
|
class TestDeprecatedFunctionResourceImports:
|
||||||
|
|
@ -60,7 +60,7 @@ class TestDeprecatedFunctionResourceImports:
|
||||||
DeprecationWarning,
|
DeprecationWarning,
|
||||||
match="Import from fastmcp.resources.function_resource",
|
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 (
|
from fastmcp.resources.function_resource import (
|
||||||
FunctionResource as CanonicalFunctionResource,
|
FunctionResource as CanonicalFunctionResource,
|
||||||
|
|
@ -74,7 +74,7 @@ class TestDeprecatedFunctionResourceImports:
|
||||||
DeprecationWarning,
|
DeprecationWarning,
|
||||||
match="Import from fastmcp.resources.function_resource",
|
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 (
|
from fastmcp.resources.function_resource import (
|
||||||
resource as canonical_resource,
|
resource as canonical_resource,
|
||||||
|
|
@ -86,7 +86,7 @@ class TestDeprecatedFunctionResourceImports:
|
||||||
with temporary_settings(deprecation_warnings=False):
|
with temporary_settings(deprecation_warnings=False):
|
||||||
with warnings.catch_warnings():
|
with warnings.catch_warnings():
|
||||||
warnings.simplefilter("error")
|
warnings.simplefilter("error")
|
||||||
from fastmcp.resources.resource import FunctionResource # noqa: F401
|
from fastmcp.resources.base import FunctionResource # noqa: F401
|
||||||
|
|
||||||
|
|
||||||
class TestDeprecatedFunctionPromptImports:
|
class TestDeprecatedFunctionPromptImports:
|
||||||
|
|
@ -95,7 +95,7 @@ class TestDeprecatedFunctionPromptImports:
|
||||||
with pytest.warns(
|
with pytest.warns(
|
||||||
DeprecationWarning, match="Import from fastmcp.prompts.function_prompt"
|
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 (
|
from fastmcp.prompts.function_prompt import (
|
||||||
FunctionPrompt as CanonicalFunctionPrompt,
|
FunctionPrompt as CanonicalFunctionPrompt,
|
||||||
|
|
@ -108,7 +108,7 @@ class TestDeprecatedFunctionPromptImports:
|
||||||
with pytest.warns(
|
with pytest.warns(
|
||||||
DeprecationWarning, match="Import from fastmcp.prompts.function_prompt"
|
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
|
from fastmcp.prompts.function_prompt import prompt as canonical_prompt
|
||||||
|
|
||||||
|
|
@ -118,4 +118,4 @@ class TestDeprecatedFunctionPromptImports:
|
||||||
with temporary_settings(deprecation_warnings=False):
|
with temporary_settings(deprecation_warnings=False):
|
||||||
with warnings.catch_warnings():
|
with warnings.catch_warnings():
|
||||||
warnings.simplefilter("error")
|
warnings.simplefilter("error")
|
||||||
from fastmcp.prompts.prompt import FunctionPrompt # noqa: F401
|
from fastmcp.prompts.base import FunctionPrompt # noqa: F401
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ from mcp.types import TextContent, TextResourceContents
|
||||||
|
|
||||||
from fastmcp.client.client import Client
|
from fastmcp.client.client import Client
|
||||||
from fastmcp.server.server import FastMCP
|
from fastmcp.server.server import FastMCP
|
||||||
|
from fastmcp.tools.base import Tool
|
||||||
from fastmcp.tools.function_tool import FunctionTool
|
from fastmcp.tools.function_tool import FunctionTool
|
||||||
from fastmcp.tools.tool import Tool
|
|
||||||
from tests.conftest import get_fn_name
|
from tests.conftest import get_fn_name
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ from mcp.types import TextContent
|
||||||
from fastmcp import FastMCP
|
from fastmcp import FastMCP
|
||||||
from fastmcp.contrib.mcp_mixin import mcp_tool
|
from fastmcp.contrib.mcp_mixin import mcp_tool
|
||||||
from fastmcp.server.providers import LocalProvider
|
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.tools.tool_transform import TransformedTool
|
||||||
from fastmcp.utilities.tests import temporary_settings
|
from fastmcp.utilities.tests import temporary_settings
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ from fastmcp.experimental.transforms.code_mode import (
|
||||||
_ensure_async,
|
_ensure_async,
|
||||||
)
|
)
|
||||||
from fastmcp.server.context import Context
|
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:
|
def _unwrap_result(result: ToolResult) -> Any:
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ from fastmcp.experimental.transforms.code_mode import (
|
||||||
Search,
|
Search,
|
||||||
_ensure_async,
|
_ensure_async,
|
||||||
)
|
)
|
||||||
from fastmcp.tools.tool import ToolResult
|
from fastmcp.tools.base import ToolResult
|
||||||
|
|
||||||
|
|
||||||
def _unwrap_result(result: ToolResult) -> Any:
|
def _unwrap_result(result: ToolResult) -> Any:
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from fastmcp.prompts.prompt import Prompt
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.resources.resource import Resource
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.resources.template import FunctionResourceTemplate, ResourceTemplate
|
from fastmcp.resources.template import FunctionResourceTemplate, ResourceTemplate
|
||||||
from fastmcp.server.providers.filesystem_discovery import (
|
from fastmcp.server.providers.filesystem_discovery import (
|
||||||
discover_and_import,
|
discover_and_import,
|
||||||
|
|
@ -12,7 +12,7 @@ from fastmcp.server.providers.filesystem_discovery import (
|
||||||
import_module_from_file,
|
import_module_from_file,
|
||||||
)
|
)
|
||||||
from fastmcp.tools import FunctionTool
|
from fastmcp.tools import FunctionTool
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
|
|
||||||
class TestDiscoverFiles:
|
class TestDiscoverFiles:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import pytest
|
||||||
from mcp.types import EmbeddedResource, TextResourceContents
|
from mcp.types import EmbeddedResource, TextResourceContents
|
||||||
from pydantic import FileUrl
|
from pydantic import FileUrl
|
||||||
|
|
||||||
from fastmcp.prompts.prompt import (
|
from fastmcp.prompts.base import (
|
||||||
Message,
|
Message,
|
||||||
Prompt,
|
Prompt,
|
||||||
PromptResult,
|
PromptResult,
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ from pydantic import FileUrl
|
||||||
|
|
||||||
from fastmcp.exceptions import ResourceError
|
from fastmcp.exceptions import ResourceError
|
||||||
from fastmcp.resources import FileResource
|
from fastmcp.resources import FileResource
|
||||||
from fastmcp.resources.resource import ResourceResult
|
from fastmcp.resources.base import ResourceResult
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import pytest
|
import pytest
|
||||||
from pydantic import AnyUrl, BaseModel
|
from pydantic import AnyUrl, BaseModel
|
||||||
|
|
||||||
|
from fastmcp.resources.base import ResourceContent
|
||||||
from fastmcp.resources.function_resource import FunctionResource
|
from fastmcp.resources.function_resource import FunctionResource
|
||||||
from fastmcp.resources.resource import ResourceContent
|
|
||||||
|
|
||||||
|
|
||||||
class TestFunctionResource:
|
class TestFunctionResource:
|
||||||
|
|
|
||||||
|
|
@ -27,9 +27,9 @@ from pydantic import AnyUrl, BaseModel
|
||||||
from fastmcp import Context, FastMCP
|
from fastmcp import Context, FastMCP
|
||||||
from fastmcp.client.client import CallToolResult, Client
|
from fastmcp.client.client import CallToolResult, Client
|
||||||
from fastmcp.client.transports import FastMCPTransport
|
from fastmcp.client.transports import FastMCPTransport
|
||||||
|
from fastmcp.prompts.base import Message, Prompt
|
||||||
from fastmcp.prompts.function_prompt import FunctionPrompt
|
from fastmcp.prompts.function_prompt import FunctionPrompt
|
||||||
from fastmcp.prompts.prompt import Message, Prompt
|
from fastmcp.resources.base import Resource
|
||||||
from fastmcp.resources.resource import Resource
|
|
||||||
from fastmcp.server.middleware.caching import (
|
from fastmcp.server.middleware.caching import (
|
||||||
CachableToolResult,
|
CachableToolResult,
|
||||||
CallToolSettings,
|
CallToolSettings,
|
||||||
|
|
@ -40,7 +40,7 @@ from fastmcp.server.middleware.caching import (
|
||||||
_make_read_resource_cache_key,
|
_make_read_resource_cache_key,
|
||||||
)
|
)
|
||||||
from fastmcp.server.middleware.middleware import CallNext, MiddlewareContext
|
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")
|
TEST_URI = AnyUrl("https://test_uri")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ from mcp.types import ErrorData, TextContent
|
||||||
|
|
||||||
from fastmcp import Client, FastMCP
|
from fastmcp import Client, FastMCP
|
||||||
from fastmcp.server.middleware import CallNext, Middleware, MiddlewareContext
|
from fastmcp.server.middleware import CallNext, Middleware, MiddlewareContext
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
|
|
||||||
class InitializationMiddleware(Middleware):
|
class InitializationMiddleware(Middleware):
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import pytest
|
||||||
from fastmcp import Client, FastMCP
|
from fastmcp import Client, FastMCP
|
||||||
from fastmcp.server.context import Context
|
from fastmcp.server.context import Context
|
||||||
from fastmcp.server.middleware import CallNext, Middleware, MiddlewareContext
|
from fastmcp.server.middleware import CallNext, Middleware, MiddlewareContext
|
||||||
from fastmcp.tools.tool import ToolResult
|
from fastmcp.tools.base import ToolResult
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ from fastmcp import Client, FastMCP
|
||||||
from fastmcp.exceptions import ToolError
|
from fastmcp.exceptions import ToolError
|
||||||
from fastmcp.server.context import Context
|
from fastmcp.server.context import Context
|
||||||
from fastmcp.server.middleware import CallNext, Middleware, MiddlewareContext
|
from fastmcp.server.middleware import CallNext, Middleware, MiddlewareContext
|
||||||
from fastmcp.tools.tool import ToolResult
|
from fastmcp.tools.base import ToolResult
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ from mcp.types import ImageContent, TextContent
|
||||||
|
|
||||||
from fastmcp import Client, FastMCP
|
from fastmcp import Client, FastMCP
|
||||||
from fastmcp.server.middleware.response_limiting import ResponseLimitingMiddleware
|
from fastmcp.server.middleware.response_limiting import ResponseLimitingMiddleware
|
||||||
from fastmcp.tools.tool import ToolResult
|
from fastmcp.tools.base import ToolResult
|
||||||
|
|
||||||
|
|
||||||
class TestResponseLimitingMiddleware:
|
class TestResponseLimitingMiddleware:
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,8 @@ from fastmcp.client.transports import FastMCPTransport
|
||||||
from fastmcp.server.middleware.tool_injection import (
|
from fastmcp.server.middleware.tool_injection import (
|
||||||
ToolInjectionMiddleware,
|
ToolInjectionMiddleware,
|
||||||
)
|
)
|
||||||
|
from fastmcp.tools.base import Tool
|
||||||
from fastmcp.tools.function_tool import FunctionTool
|
from fastmcp.tools.function_tool import FunctionTool
|
||||||
from fastmcp.tools.tool import Tool
|
|
||||||
|
|
||||||
|
|
||||||
def multiply_fn(a: int, b: int) -> int:
|
def multiply_fn(a: int, b: int) -> int:
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ from mcp.types import TextContent
|
||||||
from fastmcp import FastMCP
|
from fastmcp import FastMCP
|
||||||
from fastmcp.client import Client
|
from fastmcp.client import Client
|
||||||
from fastmcp.client.transports import SSETransport
|
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
|
from fastmcp.tools.tool_transform import TransformedTool
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ from pydantic import BaseModel
|
||||||
from typing_extensions import TypedDict
|
from typing_extensions import TypedDict
|
||||||
|
|
||||||
from fastmcp import Context, FastMCP
|
from fastmcp import Context, FastMCP
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
|
|
||||||
def _normalize_anyof_order(schema):
|
def _normalize_anyof_order(schema):
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ from typing_extensions import TypedDict
|
||||||
|
|
||||||
from fastmcp import FastMCP
|
from fastmcp import FastMCP
|
||||||
from fastmcp.exceptions import NotFoundError
|
from fastmcp.exceptions import NotFoundError
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
|
|
||||||
def _normalize_anyof_order(schema):
|
def _normalize_anyof_order(schema):
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,8 @@ from pydantic import AnyUrl, BaseModel, TypeAdapter
|
||||||
from typing_extensions import TypeAliasType, TypedDict
|
from typing_extensions import TypeAliasType, TypedDict
|
||||||
|
|
||||||
from fastmcp import FastMCP
|
from fastmcp import FastMCP
|
||||||
|
from fastmcp.tools.base import ToolResult
|
||||||
from fastmcp.tools.function_parsing import _is_object_schema
|
from fastmcp.tools.function_parsing import _is_object_schema
|
||||||
from fastmcp.tools.tool import ToolResult
|
|
||||||
from fastmcp.utilities.json_schema import compress_schema
|
from fastmcp.utilities.json_schema import compress_schema
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ from fastmcp.server.providers.proxy import (
|
||||||
ProxyClient,
|
ProxyClient,
|
||||||
ProxyProvider,
|
ProxyProvider,
|
||||||
)
|
)
|
||||||
from fastmcp.tools.tool import ToolResult
|
from fastmcp.tools.base import ToolResult
|
||||||
from fastmcp.tools.tool_transform import (
|
from fastmcp.tools.tool_transform import (
|
||||||
ToolTransformConfig,
|
ToolTransformConfig,
|
||||||
)
|
)
|
||||||
|
|
@ -136,7 +136,7 @@ def fastmcp_server():
|
||||||
@server.prompt
|
@server.prompt
|
||||||
def image_prompt():
|
def image_prompt():
|
||||||
"""A prompt that returns an image."""
|
"""A prompt that returns an image."""
|
||||||
from fastmcp.prompts.prompt import Message, PromptResult
|
from fastmcp.prompts.base import Message, PromptResult
|
||||||
|
|
||||||
return PromptResult(
|
return PromptResult(
|
||||||
messages=[
|
messages=[
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ from typing import Any
|
||||||
from fastmcp.server.providers.base import Provider
|
from fastmcp.server.providers.base import Provider
|
||||||
from fastmcp.server.tasks.config import TaskConfig
|
from fastmcp.server.tasks.config import TaskConfig
|
||||||
from fastmcp.server.transforms import Namespace
|
from fastmcp.server.transforms import Namespace
|
||||||
from fastmcp.tools.tool import Tool, ToolResult
|
from fastmcp.tools.base import Tool, ToolResult
|
||||||
|
|
||||||
|
|
||||||
class CustomTool(Tool):
|
class CustomTool(Tool):
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,11 @@ import mcp.types as mt
|
||||||
|
|
||||||
from fastmcp import FastMCP
|
from fastmcp import FastMCP
|
||||||
from fastmcp.client import Client
|
from fastmcp.client import Client
|
||||||
from fastmcp.prompts.prompt import PromptResult
|
from fastmcp.prompts.base import PromptResult
|
||||||
from fastmcp.resources.resource import ResourceResult
|
from fastmcp.resources.base import ResourceResult
|
||||||
from fastmcp.server.middleware import CallNext, Middleware, MiddlewareContext
|
from fastmcp.server.middleware import CallNext, Middleware, MiddlewareContext
|
||||||
from fastmcp.server.providers import FastMCPProvider
|
from fastmcp.server.providers import FastMCPProvider
|
||||||
from fastmcp.tools.tool import ToolResult
|
from fastmcp.tools.base import ToolResult
|
||||||
|
|
||||||
|
|
||||||
class ToolTracingMiddleware(Middleware):
|
class ToolTracingMiddleware(Middleware):
|
||||||
|
|
|
||||||
|
|
@ -15,10 +15,10 @@ import pytest
|
||||||
|
|
||||||
from fastmcp import FastMCP
|
from fastmcp import FastMCP
|
||||||
from fastmcp.client import Client
|
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.providers.local_provider import LocalProvider
|
||||||
from fastmcp.server.tasks import TaskConfig
|
from fastmcp.server.tasks import TaskConfig
|
||||||
from fastmcp.tools.tool import Tool, ToolResult
|
from fastmcp.tools.base import Tool, ToolResult
|
||||||
|
|
||||||
|
|
||||||
class TestLocalProviderStorage:
|
class TestLocalProviderStorage:
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import pytest
|
||||||
from mcp.types import TextContent
|
from mcp.types import TextContent
|
||||||
|
|
||||||
from fastmcp import Client, Context, FastMCP
|
from fastmcp import Client, Context, FastMCP
|
||||||
from fastmcp.prompts.prompt import Prompt, PromptResult
|
from fastmcp.prompts.base import Prompt, PromptResult
|
||||||
|
|
||||||
|
|
||||||
class TestPromptContext:
|
class TestPromptContext:
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import pytest
|
||||||
from fastmcp import FastMCP
|
from fastmcp import FastMCP
|
||||||
from fastmcp.client import Client
|
from fastmcp.client import Client
|
||||||
from fastmcp.server.tasks import TaskConfig
|
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
|
from fastmcp.utilities.components import FastMCPComponent
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ from mcp.shared.exceptions import McpError
|
||||||
|
|
||||||
from fastmcp import FastMCP
|
from fastmcp import FastMCP
|
||||||
from fastmcp.client import Client
|
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.resources.template import ResourceTemplate
|
||||||
from fastmcp.server.tasks.config import TaskMeta
|
from fastmcp.server.tasks.config import TaskMeta
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ from fastmcp import FastMCP
|
||||||
from fastmcp.client import Client
|
from fastmcp.client import Client
|
||||||
from fastmcp.exceptions import ToolError
|
from fastmcp.exceptions import ToolError
|
||||||
from fastmcp.server.tasks import TaskConfig
|
from fastmcp.server.tasks import TaskConfig
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
|
|
||||||
class TestTaskConfigNormalization:
|
class TestTaskConfigNormalization:
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ from fastmcp.client import Client
|
||||||
from fastmcp.exceptions import ToolError
|
from fastmcp.exceptions import ToolError
|
||||||
from fastmcp.server.middleware import CallNext, Middleware, MiddlewareContext
|
from fastmcp.server.middleware import CallNext, Middleware, MiddlewareContext
|
||||||
from fastmcp.server.tasks.config import TaskMeta
|
from fastmcp.server.tasks.config import TaskMeta
|
||||||
from fastmcp.tools.tool import Tool, ToolResult
|
from fastmcp.tools.base import Tool, ToolResult
|
||||||
|
|
||||||
|
|
||||||
class TestTaskMetaParameter:
|
class TestTaskMetaParameter:
|
||||||
|
|
|
||||||
|
|
@ -13,12 +13,12 @@ from docket import Docket
|
||||||
|
|
||||||
from fastmcp import FastMCP
|
from fastmcp import FastMCP
|
||||||
from fastmcp.client import Client
|
from fastmcp.client import Client
|
||||||
from fastmcp.prompts.prompt import PromptResult
|
from fastmcp.prompts.base import PromptResult
|
||||||
from fastmcp.resources.resource import ResourceResult
|
from fastmcp.resources.base import ResourceResult
|
||||||
from fastmcp.server.dependencies import CurrentDocket, CurrentFastMCP
|
from fastmcp.server.dependencies import CurrentDocket, CurrentFastMCP
|
||||||
from fastmcp.server.middleware import CallNext, Middleware, MiddlewareContext
|
from fastmcp.server.middleware import CallNext, Middleware, MiddlewareContext
|
||||||
from fastmcp.server.tasks import TaskConfig
|
from fastmcp.server.tasks import TaskConfig
|
||||||
from fastmcp.tools.tool import ToolResult
|
from fastmcp.tools.base import ToolResult
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(autouse=True)
|
@pytest.fixture(autouse=True)
|
||||||
|
|
|
||||||
|
|
@ -7,13 +7,13 @@ import pytest
|
||||||
from mcp.types import AnyUrl, TextContent
|
from mcp.types import AnyUrl, TextContent
|
||||||
|
|
||||||
from fastmcp import FastMCP
|
from fastmcp import FastMCP
|
||||||
|
from fastmcp.prompts.base import Prompt
|
||||||
from fastmcp.prompts.function_prompt import FunctionPrompt
|
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.function_resource import FunctionResource
|
||||||
from fastmcp.resources.resource import Resource
|
|
||||||
from fastmcp.resources.template import FunctionResourceTemplate, ResourceTemplate
|
from fastmcp.resources.template import FunctionResourceTemplate, ResourceTemplate
|
||||||
from fastmcp.server.providers import Provider
|
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
|
from fastmcp.utilities.versions import VersionSpec
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ from mcp.types import TextContent, TextResourceContents
|
||||||
from fastmcp import Client, FastMCP
|
from fastmcp import Client, FastMCP
|
||||||
from fastmcp.server.providers import LocalProvider
|
from fastmcp.server.providers import LocalProvider
|
||||||
from fastmcp.tools import FunctionTool
|
from fastmcp.tools import FunctionTool
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
from fastmcp.utilities.tests import temporary_settings
|
from fastmcp.utilities.tests import temporary_settings
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ from mcp.types import Tool as MCPTool
|
||||||
from mcp.types import ToolAnnotations, ToolExecution
|
from mcp.types import ToolAnnotations, ToolExecution
|
||||||
|
|
||||||
from fastmcp import Client, FastMCP
|
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():
|
async def test_tool_annotations_in_tool_manager():
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ from fastmcp.server.context import Context
|
||||||
from fastmcp.server.transforms import GetToolNext
|
from fastmcp.server.transforms import GetToolNext
|
||||||
from fastmcp.server.transforms.catalog import CatalogTransform
|
from fastmcp.server.transforms.catalog import CatalogTransform
|
||||||
from fastmcp.server.transforms.version_filter import VersionFilter
|
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
|
from fastmcp.utilities.versions import VersionSpec
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ from fastmcp.server.transforms.search.bm25 import (
|
||||||
_catalog_hash,
|
_catalog_hash,
|
||||||
)
|
)
|
||||||
from fastmcp.server.transforms.search.regex import RegexSearchTransform
|
from fastmcp.server.transforms.search.regex import RegexSearchTransform
|
||||||
from fastmcp.tools.tool import Tool, ToolResult
|
from fastmcp.tools.base import Tool, ToolResult
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Helpers
|
# Helpers
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from fastmcp.server.transforms.visibility import Visibility, is_enabled
|
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
|
from fastmcp.utilities.versions import VersionSpec
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ from fastmcp.server.apps import UI_MIME_TYPE, AppConfig
|
||||||
from fastmcp.server.providers.local_provider.decorators.tools import (
|
from fastmcp.server.providers.local_provider.decorators.tools import (
|
||||||
PREFAB_RENDERER_URI,
|
PREFAB_RENDERER_URI,
|
||||||
)
|
)
|
||||||
from fastmcp.tools.tool import Tool, ToolResult
|
from fastmcp.tools.base import Tool, ToolResult
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# convert_result
|
# convert_result
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ from fastmcp.server.app import (
|
||||||
_make_global_key,
|
_make_global_key,
|
||||||
_resolve_tool_ref,
|
_resolve_tool_ref,
|
||||||
)
|
)
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Fixtures / helpers
|
# Fixtures / helpers
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@ using SkipJsonSchema annotations.
|
||||||
from fastmcp.prompts.function_prompt import FunctionPrompt
|
from fastmcp.prompts.function_prompt import FunctionPrompt
|
||||||
from fastmcp.resources.function_resource import FunctionResource
|
from fastmcp.resources.function_resource import FunctionResource
|
||||||
from fastmcp.resources.template import FunctionResourceTemplate
|
from fastmcp.resources.template import FunctionResourceTemplate
|
||||||
|
from fastmcp.tools.base import Tool
|
||||||
from fastmcp.tools.function_tool import FunctionTool
|
from fastmcp.tools.function_tool import FunctionTool
|
||||||
from fastmcp.tools.tool import Tool
|
|
||||||
from fastmcp.tools.tool_transform import TransformedTool
|
from fastmcp.tools.tool_transform import TransformedTool
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ from fastmcp.mcp_config import (
|
||||||
StdioMCPServer,
|
StdioMCPServer,
|
||||||
TransformingStdioMCPServer,
|
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
|
# 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
|
# parallel CI load. Give them more headroom than the 5s default, and skip
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ from pydantic import Field
|
||||||
|
|
||||||
from fastmcp import Context, FastMCP
|
from fastmcp import Context, FastMCP
|
||||||
from fastmcp.client import Client
|
from fastmcp.client import Client
|
||||||
from fastmcp.tools.tool import ToolResult
|
from fastmcp.tools.base import ToolResult
|
||||||
from fastmcp.utilities.types import Image
|
from fastmcp.utilities.types import Image
|
||||||
|
|
||||||
fastmcp_server = FastMCP()
|
fastmcp_server = FastMCP()
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import threading
|
||||||
from mcp.types import TextContent
|
from mcp.types import TextContent
|
||||||
|
|
||||||
from fastmcp import Context, FastMCP
|
from fastmcp import Context, FastMCP
|
||||||
from fastmcp.tools.tool import Tool
|
from fastmcp.tools.base import Tool
|
||||||
|
|
||||||
|
|
||||||
class TestToolCallable:
|
class TestToolCallable:
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ from mcp.types import (
|
||||||
)
|
)
|
||||||
from pydantic import AnyUrl, BaseModel
|
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
|
from fastmcp.utilities.types import Audio, File, Image
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue