Commit 758ef1f7 authored by Kostas Chartsias's avatar Kostas Chartsias
Browse files

QoD queries using user full name

parent d4213d2a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ async def create_groq_agent():
        max_tokens=None,
        reasoning_format="parsed",
        timeout=None,
        max_retries=2,
        max_retries=3,
        api_key=GROQ_API_KEY,
    )

+10 −2
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ from fastapi import FastAPI
from fastapi.responses import PlainTextResponse
from mcp_module.tools.qod import create_qod_session, get_qod_session, delete_qod_session, list_qod_sessions
from mcp_module.tools.edge_application import get_app_definitions
from mcp_module.tools.user_phone import get_user_phone
from dotenv import load_dotenv
import os

@@ -16,7 +17,14 @@ load_dotenv()
mcp = FastMCP("MCP Server")

# Register tools - only audited functions are exposed
SAFE_TOOLS = [create_qod_session, get_qod_session, delete_qod_session, list_qod_sessions, get_app_definitions]
SAFE_TOOLS = [
    create_qod_session,
    get_qod_session,
    delete_qod_session,
    list_qod_sessions,
    get_app_definitions,
    get_user_phone,
]

for tool in SAFE_TOOLS:
    mcp.tool()(tool)
+9 −0
Original line number Diff line number Diff line
from pydantic import BaseModel, Field


class UserPhoneInput(BaseModel):
    user: str = Field(..., min_length=1, description="User identifier to lookup")


class UserPhoneResponse(BaseModel):
    phoneNumber: str
+24 −0
Original line number Diff line number Diff line
import logging
from mcp_module.models.user_models import UserPhoneInput, UserPhoneResponse

# Configure logging
logging.basicConfig(level=logging.DEBUG, format="%(asctime)s [%(levelname)s] %(message)s")
logger = logging.getLogger("MCP server")

# Dummy data for user -> phone lookup
USER_PHONE_BOOK = {
    "Carmen Canalez": "+34551234567",
    "George Papadopoulos": "+30698654321",
}


async def get_user_phone(inp: UserPhoneInput) -> UserPhoneResponse:
    """
    Return a phone number for a specific user from a lookup table.
    """
    key = inp.user
    phone = USER_PHONE_BOOK.get(key)
    if not phone:
        logger.warning("User '%s' not found in phone book", inp.user)
        raise ValueError(f"Unknown user: {inp.user}")
    return UserPhoneResponse(phoneNumber=phone)