fix(mcp): tolerate legacy tool DTO fields
This commit is contained in:
@@ -30,7 +30,9 @@ class MCPTool:
|
||||
name: str
|
||||
description: str
|
||||
input_schema: dict[str, Any]
|
||||
server_name: str
|
||||
# 2026-05-06 Codex: 部分舊 provider 的 list_tools() 尚未傳 server_name。
|
||||
# 先給 DTO 預設值,registry 會以 provider.name 補正,避免啟動登記直接 crash。
|
||||
server_name: str = ""
|
||||
|
||||
|
||||
@dataclass
|
||||
|
||||
@@ -21,8 +21,8 @@ MASTER §3.1.3 (B) AI 自主工具選擇
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass, field
|
||||
from enum import Enum
|
||||
from dataclasses import dataclass, field, replace
|
||||
from enum import StrEnum
|
||||
from typing import Any
|
||||
|
||||
import structlog
|
||||
@@ -33,7 +33,7 @@ from src.plugins.mcp.registry import AuditedMCPToolProvider
|
||||
logger = structlog.get_logger(__name__)
|
||||
|
||||
|
||||
class SensorDimension(str, Enum):
|
||||
class SensorDimension(StrEnum):
|
||||
"""8D 感官維度分類"""
|
||||
D1_K8S_STATE = "d1_k8s_state"
|
||||
D2_LOGS = "d2_logs"
|
||||
@@ -111,6 +111,8 @@ class MCPToolRegistry:
|
||||
|
||||
count = 0
|
||||
for tool in tools:
|
||||
if not tool.server_name:
|
||||
tool = replace(tool, server_name=provider.name)
|
||||
audited_provider = AuditedMCPToolProvider(provider)
|
||||
reg = _classify_tool(tool, audited_provider)
|
||||
self._tools.append(reg)
|
||||
|
||||
Reference in New Issue
Block a user