import gradio as gr import json import task_manager def call_mcp_tool(tool_name, arguments_json): """Call MCP tools via web interface""" try: args = json.loads(arguments_json) if arguments_json else {} if tool_name == "create_task": result = task_manager.create_task( title=args.get("title", ""), description=args.get("description", ""), priority=args.get("priority", "medium"), tags=args.get("tags", ""), due_date=args.get("due_date", "") ) elif tool_name == "list_tasks": result = task_manager.list_tasks( status=args.get("status", "all"), priority=args.get("priority", "all"), tag=args.get("tag", ""), limit=args.get("limit", 10) ) elif tool_name == "get_task": result = task_manager.get_task(args.get("task_id", 0)) elif tool_name == "update_task": result = task_manager.update_task( task_id=args.get("task_id", 0), title=args.get("title", ""), description=args.get("description", ""), status=args.get("status", ""), priority=args.get("priority", ""), tags=args.get("tags", ""), due_date=args.get("due_date", "") ) elif tool_name == "delete_task": result = task_manager.delete_task(args.get("task_id", 0)) elif tool_name == "search_tasks": result = task_manager.search_tasks( query=args.get("query", ""), limit=args.get("limit", 10) ) elif tool_name == "get_stats": result = task_manager.get_stats() else: return "Unknown tool" return result except Exception as e: return f"Error: {str(e)}" # Create Gradio interface with gr.Blocks(title="Task Manager MCP Server") as demo: gr.Markdown("# Task Manager MCP Server") gr.Markdown("Test your MCP server tools through this web interface") with gr.Row(): tool_dropdown = gr.Dropdown( choices=["create_task", "list_tasks", "get_task", "update_task", "delete_task", "search_tasks", "get_stats"], label="Select Tool", value="list_tasks" ) arguments_input = gr.Textbox( label="Arguments (JSON)", placeholder='{"title": "My Task", "description": "Task description"}', lines=3 ) submit_btn = gr.Button("Call Tool") output = gr.Textbox(label="Result", lines=10) # Add example buttons for common operations with gr.Row(): gr.Examples( examples=[ ["create_task", '{"title": "Learn MCP", "description": "Study Model Context Protocol", "priority": "high"}'], ["list_tasks", '{}'], ["get_stats", '{}'], ["search_tasks", '{"query": "learn"}'] ], inputs=[tool_dropdown, arguments_input], label="Quick Examples" ) submit_btn.click( call_mcp_tool, inputs=[tool_dropdown, arguments_input], outputs=output ) if __name__ == "__main__": demo.launch()