fix(mcp): tolerate legacy tool DTO fields
All checks were successful
Code Review / ai-code-review (push) Successful in 10s
CD Pipeline / tests (push) Successful in 1m9s
CD Pipeline / build-and-deploy (push) Successful in 3m18s
CD Pipeline / post-deploy-checks (push) Successful in 1m27s

This commit is contained in:
Your Name
2026-05-06 16:11:26 +08:00
parent 72811b967e
commit 60c00d7a5d
4 changed files with 42 additions and 6 deletions

View File

@@ -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

View File

@@ -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)