We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/pgallar/iol-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
from typing import Dict, Any, Optional, List
from fastmcp import FastMCP
from pydantic import BaseModel, Field, field_validator, ConfigDict
from ..base_routes import BaseRoutes
from .client import AsesoresClient
class MovementBindingModel(BaseModel):
"""Modelo para la consulta de movimientos históricos según el swagger de IOL"""
clientes: Optional[List[int]] = Field(default=None, description="Lista de IDs de clientes asesorados")
from_: str = Field(alias="from", description="Fecha desde en formato ISO")
to: str = Field(description="Fecha hasta en formato ISO")
dateType: str = Field(description="Tipo de fecha para filtrar")
status: str = Field(description="Estado de los movimientos")
type: Optional[str] = Field(default=None, description="Tipo de movimiento")
country: str = Field(description="País de los movimientos")
currency: Optional[str] = Field(default=None, description="Moneda de los movimientos")
cuentaComitente: Optional[str] = Field(default=None, description="Cuenta comitente")
model_config = ConfigDict(extra="ignore", validate_assignment=True, populate_by_name=True)
@field_validator('*', mode='before')
@classmethod
def empty_str_to_none(cls, v):
if v == "":
return None
return v
class AsesoresRoutes(BaseRoutes):
def __init__(self):
super().__init__()
self.client = AsesoresClient()
def register_tools(self, mcp: FastMCP):
@mcp.tool(
name="guardar_movimientos_historicos_asesor",
description="Consultar o guardar movimientos históricos de clientes asesorados",
tags=["asesores", "movimientos", "historicos"]
)
async def guardar_movimientos_historicos(
request: MovementBindingModel = Field(
description="Datos para consultar o guardar los movimientos históricos",
example={
"clientes": [12345, 67890],
"from": "2023-01-01T00:00:00",
"to": "2023-12-31T23:59:59",
"dateType": "Operacion",
"status": "Todos",
"type": "Compra",
"country": "argentina",
"currency": "ARS",
"cuentaComitente": "123456"
}
)
) -> Dict[str, Any]:
"""
Consulta o guarda los movimientos históricos de clientes asesorados
Args:
request: Datos para consultar o guardar los movimientos históricos
"""
try:
# Convertir el modelo a diccionario y manejar el campo 'from_'
request_dict = request.model_dump(exclude_none=True, by_alias=True)
result = await self.client.guardar_movimientos_historicos(
clientes=request.clientes,
fecha_desde=getattr(request, 'from_'),
fecha_hasta=request.to,
tipo_fecha=request.dateType,
estado=request.status,
tipo=request.type,
pais=request.country,
moneda=request.currency,
cuenta_comitente=request.cuentaComitente
)
return {
"success": True,
"result": result
}
except Exception as e:
return {"error": f"Error procesando movimientos históricos: {str(e)}"}