"""Ejemplo de uso de un cliente FastMCP asíncrono.
Este script muestra cómo:
1. Ejecutar el cliente con `asyncio.run`.
2. Entrar en un contexto `async with client:`.
3. Realizar varias llamadas de herramienta dentro del mismo contexto.
Requisitos:
- El servidor FastMCP debe estar corriendo (por ejemplo, con `fastmcp run example_server.py:mcp --transport http --port 8000`).
- Instalar la dependencia `fastmcp` en el entorno virtual.
"""
import asyncio
from fastmcp import Client
# URL del servidor HTTP que está escuchando en el puerto 8000
SERVER_URL = "http://localhost:8000/mcp"
async def main():
# Crear el cliente y abrir el contexto
async with Client(SERVER_URL) as client:
# 1️⃣ Llamada a la herramienta `greet`
greet_result = await client.call_tool("greet", {"name": "Ana"})
print("Resultado greet:", greet_result)
# 2️⃣ Llamada a otra herramienta del servidor universal_mcp (ejemplo: list_registered_databases)
# Si la herramienta no existe en el servidor de ejemplo, simplemente ignora el error.
try:
db_result = await client.call_tool("list_registered_databases", {})
print("Bases de datos registradas:", db_result)
except Exception as e:
print("Error al obtener bases de datos (puede que la herramienta no exista en este servidor):", e)
# 3️⃣ Puedes seguir llamando a más herramientas dentro del mismo contexto
# Por ejemplo, una consulta SQL ficticia (requiere que la herramienta exista en el servidor).
# await client.call_tool("query_registered_database", {"connection_id": 1, "sql_query": "SELECT 1"})
# Ejecutar el bucle de eventos
if __name__ == "__main__":
asyncio.run(main())