"""
MCP Tool Providers - ADR-015 模組化架構
======================================

每個 Provider 負責一個領域的 MCP 工具：
- K8sProvider: Kubernetes 操作 (kubectl)
- SignOzProvider: 監控指標查詢
- DatabaseProvider: 資料庫查詢 (Approval/Incident)
- FilesystemProvider: 安全受限的文件讀取 (#82)
- GrafanaProvider: Grafana Dashboard 查詢 (#83)
- RAGProvider: 維運手冊語義搜尋 (#84)

@see docs/adr/ADR-015-mcp-modular-architecture.md

變更紀錄:
- 2026-03-27 v1.3: 新增 RAGProvider (#84) - Claude Code (台北時區)
- 2026-03-26 v1.2: 新增 GrafanaProvider (#83) - Claude Code
- 2026-03-26 v1.1: 新增 FilesystemProvider (#82) - Claude Code
"""

from src.plugins.mcp.providers.database_provider import DatabaseProvider
from src.plugins.mcp.providers.filesystem_provider import FilesystemProvider
from src.plugins.mcp.providers.grafana_provider import GrafanaProvider
from src.plugins.mcp.providers.k8s_provider import K8sProvider
from src.plugins.mcp.providers.rag_provider import RAGProvider
from src.plugins.mcp.providers.signoz_provider import SignOzProvider

__all__ = [
    "K8sProvider",
    "SignOzProvider",
    "DatabaseProvider",
    "FilesystemProvider",
    "GrafanaProvider",
    "RAGProvider",
]


def register_all_providers() -> None:
    """
    註冊所有 Provider 到全域 Registry

    應在 FastAPI lifespan 中呼叫
    """
    from src.plugins.mcp.registry import register_provider

    register_provider(K8sProvider())
    register_provider(SignOzProvider())
    register_provider(DatabaseProvider())
    register_provider(FilesystemProvider())
    register_provider(GrafanaProvider())
    register_provider(RAGProvider())
