feat: add tool metadata in FastMCP.tool decorator (#1463)

Co-authored-by: Max Isbey <224885523+maxisbey@users.noreply.github.com>
This commit is contained in:
Mat Leonard 2025-10-17 04:18:34 -07:00 • committed by GitHub
commit 98f82485bd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 213 additions and 8 deletions

View file

@ -34,6 +34,7 @@ class Tool(BaseModel):
context_kwarg: str | None = Field(None, description="Name of the kwarg that should receive context")
annotations: ToolAnnotations | None = Field(None, description="Optional annotations for the tool")
icons: list[Icon] | None = Field(default=None, description="Optional list of icons for this tool")
meta: dict[str, Any] | None = Field(default=None, description="Optional metadata for this tool")
@cached_property
def output_schema(self) -> dict[str, Any] | None:
@ -49,6 +50,7 @@ class Tool(BaseModel):
context_kwarg: str | None = None,
annotations: ToolAnnotations | None = None,
icons: list[Icon] | None = None,
meta: dict[str, Any] | None = None,
structured_output: bool | None = None,
) -> Tool:
"""Create a Tool from a function."""
@ -81,6 +83,7 @@ class Tool(BaseModel):
context_kwarg=context_kwarg,
annotations=annotations,
icons=icons,
meta=meta,
)
async def run(

View file

@ -50,6 +50,7 @@ class ToolManager:
description: str | None = None,
annotations: ToolAnnotations | None = None,
icons: list[Icon] | None = None,
meta: dict[str, Any] | None = None,
structured_output: bool | None = None,
) -> Tool:
"""Add a tool to the server."""
@ -60,6 +61,7 @@ class ToolManager:
description=description,
annotations=annotations,
icons=icons,
meta=meta,
structured_output=structured_output,
)
existing = self._tools.get(tool.name)