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