mcp-server-test / app.py
sitsope's picture
Update app.py
38b75f1 verified
import gradio as gr
import textblob, json
import os
from supabase import create_client, Client
from dotenv import load_dotenv
load_dotenv()
# Meilleure pratique : utiliser les variables d'environnement quand possible
url: str = os.getenv("NEXT_PUBLIC_SUPABASE_URL")
key: str = os.getenv("NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY")
# Création du client
supabase: Client = create_client(url, key)
print("✅ Connexion à Supabase réussie !")
def get_from_db(query:str)->str:
"""
This function takes a sql query as input and returns result after excecute it in the database.
Args:
query (str): SQL Query.
Returns:
str: A JSON string containing the result
"""
# === Configuration ===
response = supabase.rpc(
"run_sql",
{"query": query}
).execute()
return json.dumps(response.data, indent=2)
def sentiment_analysis(text:str)-> str:
"""
This function takes a string input and returns the sentiment polarity of the text.
Args:
text (str): The input text for which the sentiment analysis is to be performed.
Returns:
str: A JSON string containing polarity, subjectivity, and assessment
"""
out = textblob.TextBlob(text)
result = out.sentiment
result = {
"polarity": result.polarity,
"subjectivity": result.subjectivity,
"assessment": "positive" if result.polarity > 0 else "negative" if result.polarity < 0 else "neutral"
}
return json.dumps(result, indent=4)
sentiment_interface = gr.Interface(
fn=sentiment_analysis,
inputs=gr.Textbox(placeholder="Enter the text to analyse"),
outputs=gr.Textbox(),
title="Sentiment Analysis",
description="Analyse le sentiment d'un texte (positive / negative / neutral)."
)
sql_excec_interface = gr.Interface(
fn=get_from_db,
inputs=gr.Textbox(placeholder="Enter Sql Query"),
outputs=gr.Textbox(),
title="Sql Runner in DB",
description="Return the result from DB."
)
# ==================== Combinaison en onglets (TabbedInterface) ====================
demo = gr.TabbedInterface(
[sentiment_interface, sql_excec_interface],
["Sentiment Analysis", "SQL RUNNER"],
title="MCP Agent - Multi Tools"
)
if __name__ == "__main__":
demo.launch(mcp_server=True, share=True)