factory/mcp_server/tools/common.py

19 lines
554 B
Python

import json
from typing import Any
from django.conf import settings
from apps.utils.tools import MyJSONEncoder
def json_safe_result(value: Any) -> Any:
return json.loads(json.dumps(value, cls=MyJSONEncoder, ensure_ascii=False))
def validate_result_size(value: Any) -> None:
encoded = json.dumps(value, ensure_ascii=False, separators=(",", ":")).encode()
if len(encoded) > settings.MCP_MAX_RESULT_BYTES:
raise RuntimeError(
"工具结果超过 MCP 响应上限,请缩小查询范围或增加筛选参数"
)