Spaces:
Runtime error
Runtime error
| 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() |