Loading ai_agent/sub_agents/groq_agent.py +1 −1 Original line number Diff line number Diff line Loading @@ -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, ) Loading mcp_module/app.py +10 −2 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) Loading mcp_module/models/user_models.py 0 → 100644 +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 mcp_module/tools/user_phone.py 0 → 100644 +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) Loading
ai_agent/sub_agents/groq_agent.py +1 −1 Original line number Diff line number Diff line Loading @@ -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, ) Loading
mcp_module/app.py +10 −2 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) Loading
mcp_module/models/user_models.py 0 → 100644 +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
mcp_module/tools/user_phone.py 0 → 100644 +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)