from fastmcp import FastMCP
from fastapi import FastAPI
from dotenv import load_dotenv
import smtplib
from email.mime.text import MIMEText
import os
import sys
load_dotenv()
print("=" * 50, file=sys.stderr)
print("SERVIDOR SIN AUTENTICACION (PARA FASTMCP CLOUD)", file=sys.stderr)
print("=" * 50, file=sys.stderr)
EMAIL_USER = os.getenv("EMAIL_USER")
EMAIL_PASS = os.getenv("EMAIL_PASS")
SMTP_SERVER = "smtp.gmail.com"
# Crear servidor SIN autenticacion - FastMCP Cloud maneja su propia auth
mcp = FastMCP("FGJ MCP Server")
mcp_app = mcp.http_app()
api = FastAPI(lifespan=mcp_app.lifespan)
@mcp.tool(
name="send_email",
description="Envia un correo institucional FGJ Multimedios"
)
def send_email(to: str, subject: str, body: str):
msg = MIMEText(body, "html")
msg["From"] = EMAIL_USER
msg["To"] = to
msg["Subject"] = subject
with smtplib.SMTP(SMTP_SERVER, 587) as server:
server.starttls()
server.login(EMAIL_USER, EMAIL_PASS)
server.sendmail(EMAIL_USER, [to], msg.as_string())
return {"status": "sent"}
@mcp.prompt(
name="email_context",
description="Contexto institucional FGJ Multimedios"
)
def email_context():
return """
Eres FGJ Multimedios, SRL, una agencia dominicana de comunicacion,
marketing digital y tecnologia con experiencia en el sector publico
y privado, cumpliendo la Ley 340-06.
Redacta correos profesionales, institucionales y claros.
No uses emojis ni lenguaje informal.
IMPORTANTE:
- El correo DEBE iniciar con un saludo personalizado usando el nombre del cliente que se te proporcionara.
- El correo DEBE terminar con la siguiente firma:
Atentamente,
Belgica Jimenez
Gerente General
FGJ Multimedios, SRL
Tel: 849-634-9634
Email: info@fgjmedios.com
"""
api.mount("/api", mcp_app)
api.mount("/mcp", mcp_app)
app = api
if __name__ == "__main__":
import uvicorn
uvicorn.run(api, host="0.0.0.0", port=8000)