ChatBot / app.py
Eddyhzd
test
e477df9
raw
history blame
1.53 kB
import asyncio
import gradio as gr
from mcp.client.session import ClientSession
from mcp.client.sse import sse_client
from mcp.client.stdio import stdio_client
MCP_SERVER_URL = "https://hackathoncra-gradio-mcp.hf.space/gradio_api/mcp/"
async def call_mcp(tool_name: str, input_data: str):
"""
Appelle un outil MCP depuis le serveur spécifié.
"""
async with sse_client(MCP_SERVER_URL) as (read, write):
session = ClientSession(read, write)
await session.initialize()
# Découvrir les outils disponibles
tools = await session.list_tools()
tool_names = [t.name for t in tools]
print("Outils MCP disponibles :", tool_names)
if tool_name not in tool_names:
return f"Outil {tool_name} non trouvé. Outils disponibles : {tool_names}"
# Appel du tool MCP
result = await session.call_tool(tool_name, {"input": input_data})
return result.content[0].text if result.content else "Pas de résultat"
# Fonction wrapper Gradio (synchrone)
def run_mcp(tool_name, text):
return asyncio.run(call_mcp(tool_name, text))
# Interface Gradio
with gr.Blocks() as demo:
gr.Markdown("### Client MCP branché sur Hugging Face + Gradio")
tool_input = gr.Textbox(label="Nom de l’outil MCP")
text_input = gr.Textbox(label="Texte à envoyer")
output = gr.Textbox(label="Résultat MCP")
run_button = gr.Button("Exécuter")
run_button.click(call_mcp, inputs=[tool_input, text_input], outputs=output)
demo.launch()