import gradio as gr import os from mcp import StdioServerParameters from smolagents import InferenceClientModel, CodeAgent, MCPClient import pandas as pd DEFAULT_MCP_URL = "https://alihmaou-mcp-tools.hf.space/gradio_api/mcp/sse" HF_TOKEN = os.getenv("HUGGINGFACE_API_TOKEN") def reload_tools_from_url(mcp_url_input): global tools, agent, mcp_client, mcp_url mcp_url=mcp_url_input mcp_client = MCPClient({"url": mcp_url,"transport": "sse"}) # Might be deprecated soon but didnt find out the clean way tools = mcp_client.get_tools() model = InferenceClientModel(token=os.getenv("HUGGINGFACE_API_TOKEN")) agent = CodeAgent(tools=tools, model=model) # Tableau structuré : nom, description, inputs attendus rows = [] for tool in tools: input_fields = ", ".join(param for param in tool.inputs) rows.append({ "Tool name": tool.name, "Description": tool.description, "Params": input_fields }) df = pd.DataFrame(rows) return gr.DataFrame(value=df) with gr.Blocks() as demo: gr.Markdown("""

🚀 MCP Tools Explorer – Agents-MCP-Hackathon (June 2025)

🔍 Query any MCP-compatible endpoint, 🛠️ browse available tools in a clean table view, and 🤖 test real-time interactions using a `smolagent` powered by `HuggingFace`. Perfect for 🧪 exploring fellow participants’ tools or 🧰 debugging your own MCP server during the event!

""",) with gr.Row(): with gr.Column(scale=1): gr.Markdown("""

🛠️ Set an MCP server and discover the tools

""") mcp_url_input = gr.Textbox(label="🧩 MCP Tools server endpoint", value=DEFAULT_MCP_URL) tool_table = gr.DataFrame(headers=["Tool name", "Description", "Params"], interactive=False, label="🔧 MCP Tools availables", wrap=True) reload_btn = gr.Button("🔄 Refresh and set MCP tools list") reload_btn.click(fn=reload_tools_from_url, inputs=[mcp_url_input], outputs=tool_table) mcp_url_input.change(fn=reload_tools_from_url, inputs=[mcp_url_input], outputs=tool_table) mcp_url_input.submit(fn=reload_tools_from_url, inputs=[mcp_url_input], outputs=tool_table) with gr.Column(scale=2): gr.Markdown("""

🔎 Test them with smolagents

""") chatbot = gr.ChatInterface( fn=lambda message, history: str(agent.run(message)), type="messages", ) demo.launch() try: if mcp_client: mcp_client.disconnect() except Exception as e: print(f"[Warning] Failed to disconnect MCP client: {e}")