Source code for tavily_fastmcp.tools.health
"""Health tool registration.
Purpose:
Register the simple server health endpoint for MCP clients.
Design:
- Keep the tool small and deterministic.
- Return only package/server metadata so the tool is safe for smoke
tests and client bootstrapping.
"""
from __future__ import annotations
from typing import Any, cast
from tavily_fastmcp._typing import ToolRegistrar
from tavily_fastmcp.models import HealthResponse
[docs]
def register_health_tool(mcp: Any, *, server_name: str, package_version: str) -> None:
"""Register the ``tavily.health`` MCP tool.
Args:
mcp: FastMCP server instance.
server_name: Human-readable server name.
package_version: Package version string.
Returns:
``None``.
Examples:
>>> callable(register_health_tool)
True
"""
tool_server = cast(ToolRegistrar, mcp)
@tool_server.tool(
name="tavily.health",
title="Tavily Health",
description="Return package and server health metadata.",
tags={"health", "server", "readonly"},
annotations={
"title": "Tavily Health",
"readOnlyHint": True,
"openWorldHint": False,
"idempotentHint": True,
},
meta={"component": "server", "version": package_version},
)
async def tavily_health(ctx: Any | None = None) -> HealthResponse:
"""Return a simple server health payload.
Args:
ctx: Optional FastMCP context.
Returns:
A health response model.
"""
if ctx is not None:
await ctx.info("Health check requested.")
return HealthResponse(status="ok", server_name=server_name, version=package_version)