from fastmcp import FastMCP
import uuid
import datetime
import socket
import platform
import os

mcp = FastMCP()

@mcp.tool(description="Genera un UUID versión 4.")
def generate_uuid() -> str:
    return str(uuid.uuid4())

@mcp.tool(description="Devuelve la fecha y hora actuales en formato ISO 8601.")
def current_datetime() -> str:
    return datetime.datetime.now().isoformat()

@mcp.tool(description="Devuelve solo la fecha actual.")
def current_date() -> str:
    return datetime.date.today().isoformat()

@mcp.tool(description="Devuelve el nombre del host actual.")
def get_hostname() -> str:
    return socket.gethostname()

@mcp.tool(description="Devuelve el sistema operativo actual.")
def get_os() -> str:
    return platform.system()

@mcp.tool(description="Devuelve el nombre del usuario actual del sistema.")
def get_current_user() -> str:
    return os.getlogin()

@mcp.tool(description="Invierte un valor booleano.")
def invert_boolean(flag: bool) -> bool:
    return not flag

# @mcp.tool(description="Devuelve los archivos y carpetas del directorio actual.")
# def list_current_directory() -> list[str]:
#     return os.listdir()

# @mcp.tool(description="Crea un archivo con un nombre dado.")
# def create_file(filename: str) -> str:
#     with open(filename, "w") as f:
#         f.write("")
#     return f"Archivo '{filename}' creado."

# @mcp.tool(description="Lee el contenido de un archivo de texto dado.")
# def read_file(filename: str) -> str:
#     with open(filename, "r") as f:
#         return f.read()

# @mcp.tool(description="Escribe contenido a un archivo, sobrescribiéndolo.")
# def write_file(filename: str, content: str) -> str:
#     with open(filename, "w") as f:
#         f.write(content)
#     return f"Contenido escrito en '{filename}'."

@mcp.tool(description="Devuelve el número de CPUs disponibles en el sistema.")
def get_cpu_count() -> int:
    return os.cpu_count()

@mcp.tool(description="Devuelve el timestamp actual (UNIX).")
def current_timestamp() -> float:
    return datetime.datetime.now().timestamp()

if __name__ == "__main__":
    mcp.run(transport="streamable-http", host="127.0.0.1", port=4300, path="/tools")

