Coverage for src/qdrant_loader_mcp_server/fastmcp_tools/_common.py: 45%
11 statements
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-20 10:15 +0000
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-20 10:15 +0000
1"""Shared helpers for FastMCP tool modules that delegate to legacy handlers."""
3from __future__ import annotations
5from typing import Any
7from fastmcp.exceptions import ToolError
9# Sentinel id for delegated legacy-handler calls. The handler uses it only to
10# build a JSON-RPC envelope we immediately unwrap; any non-None value works.
11REQUEST_ID = "fastmcp"
14def unwrap(response: dict[str, Any]) -> dict[str, Any]:
15 """Return structuredContent from a legacy handler response, or raise."""
16 if "error" in response:
17 err = response.get("error") or {}
18 msg = err.get("message", "Tool error")
19 data = err.get("data")
20 raise ToolError(f"{msg}: {data}" if data else msg)
21 return response.get("result", {}).get("structuredContent", {})