SkinProAI / mcp_server /tool_registry.py
cgoodmaker's picture
Initial commit — SkinProAI dermoscopic analysis platform
86f402d
"""
Lazy singleton loader for all 4 ML models used by the MCP server.
Fixes sys.path so the subprocess can import from models/.
"""
import sys
import os
# Ensure project root is on path (this file lives at project_root/mcp_server/tool_registry.py)
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
_monet = None
_convnext = None
_gradcam = None
_rag = None
def get_monet():
global _monet
if _monet is None:
from models.monet_tool import MonetTool
_monet = MonetTool()
_monet.load()
return _monet
def get_convnext():
global _convnext
if _convnext is None:
from models.convnext_classifier import ConvNeXtClassifier
root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
_convnext = ConvNeXtClassifier(
checkpoint_path=os.path.join(root, "models", "seed42_fold0.pt")
)
_convnext.load()
return _convnext
def get_gradcam():
global _gradcam
if _gradcam is None:
from models.gradcam_tool import GradCAMTool
_gradcam = GradCAMTool(classifier=get_convnext())
_gradcam.load()
return _gradcam
def get_rag():
global _rag
if _rag is None:
from models.guidelines_rag import get_guidelines_rag
_rag = get_guidelines_rag()
if not _rag.loaded:
_rag.load_index()
return _rag