task-manager-1 / app.py
Vignesh19's picture
Fix import error and update Gradio interface with all MCP tools
89a8f80
Raw
History Blame Contribute Delete
3.34 kB
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()