Vignesh19 commited on
Commit
89a8f80
·
1 Parent(s): 3b28b41

Fix import error and update Gradio interface with all MCP tools

Browse files
Files changed (2) hide show
  1. app.py +52 -19
  2. requirements.txt +2 -1
app.py CHANGED
@@ -1,35 +1,55 @@
1
  import gradio as gr
2
  import json
3
- from task_manager import TaskManagerServer
4
- import asyncio
5
 
6
- # Create MCP server instance
7
- server = TaskManagerServer()
8
-
9
- async def call_mcp_tool(tool_name, arguments_json):
10
  """Call MCP tools via web interface"""
11
  try:
12
  args = json.loads(arguments_json) if arguments_json else {}
13
 
14
- if tool_name == "add_task":
15
- result = await server.add_task(args.get("title", ""), args.get("description", ""))
 
 
 
 
 
 
16
  elif tool_name == "list_tasks":
17
- result = await server.list_tasks()
18
- elif tool_name == "complete_task":
19
- result = await server.complete_task(args.get("task_id", 0))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  elif tool_name == "delete_task":
21
- result = await server.delete_task(args.get("task_id", 0))
 
 
 
 
 
 
 
22
  else:
23
  return "Unknown tool"
24
 
25
- return json.dumps(result, indent=2)
26
  except Exception as e:
27
  return f"Error: {str(e)}"
28
 
29
- def sync_call_mcp_tool(tool_name, arguments_json):
30
- """Sync wrapper for async function"""
31
- return asyncio.run(call_mcp_tool(tool_name, arguments_json))
32
-
33
  # Create Gradio interface
34
  with gr.Blocks(title="Task Manager MCP Server") as demo:
35
  gr.Markdown("# Task Manager MCP Server")
@@ -37,7 +57,7 @@ with gr.Blocks(title="Task Manager MCP Server") as demo:
37
 
38
  with gr.Row():
39
  tool_dropdown = gr.Dropdown(
40
- choices=["add_task", "list_tasks", "complete_task", "delete_task"],
41
  label="Select Tool",
42
  value="list_tasks"
43
  )
@@ -51,8 +71,21 @@ with gr.Blocks(title="Task Manager MCP Server") as demo:
51
  submit_btn = gr.Button("Call Tool")
52
  output = gr.Textbox(label="Result", lines=10)
53
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  submit_btn.click(
55
- sync_call_mcp_tool,
56
  inputs=[tool_dropdown, arguments_input],
57
  outputs=output
58
  )
 
1
  import gradio as gr
2
  import json
3
+ import task_manager
 
4
 
5
+ def call_mcp_tool(tool_name, arguments_json):
 
 
 
6
  """Call MCP tools via web interface"""
7
  try:
8
  args = json.loads(arguments_json) if arguments_json else {}
9
 
10
+ if tool_name == "create_task":
11
+ result = task_manager.create_task(
12
+ title=args.get("title", ""),
13
+ description=args.get("description", ""),
14
+ priority=args.get("priority", "medium"),
15
+ tags=args.get("tags", ""),
16
+ due_date=args.get("due_date", "")
17
+ )
18
  elif tool_name == "list_tasks":
19
+ result = task_manager.list_tasks(
20
+ status=args.get("status", "all"),
21
+ priority=args.get("priority", "all"),
22
+ tag=args.get("tag", ""),
23
+ limit=args.get("limit", 10)
24
+ )
25
+ elif tool_name == "get_task":
26
+ result = task_manager.get_task(args.get("task_id", 0))
27
+ elif tool_name == "update_task":
28
+ result = task_manager.update_task(
29
+ task_id=args.get("task_id", 0),
30
+ title=args.get("title", ""),
31
+ description=args.get("description", ""),
32
+ status=args.get("status", ""),
33
+ priority=args.get("priority", ""),
34
+ tags=args.get("tags", ""),
35
+ due_date=args.get("due_date", "")
36
+ )
37
  elif tool_name == "delete_task":
38
+ result = task_manager.delete_task(args.get("task_id", 0))
39
+ elif tool_name == "search_tasks":
40
+ result = task_manager.search_tasks(
41
+ query=args.get("query", ""),
42
+ limit=args.get("limit", 10)
43
+ )
44
+ elif tool_name == "get_stats":
45
+ result = task_manager.get_stats()
46
  else:
47
  return "Unknown tool"
48
 
49
+ return result
50
  except Exception as e:
51
  return f"Error: {str(e)}"
52
 
 
 
 
 
53
  # Create Gradio interface
54
  with gr.Blocks(title="Task Manager MCP Server") as demo:
55
  gr.Markdown("# Task Manager MCP Server")
 
57
 
58
  with gr.Row():
59
  tool_dropdown = gr.Dropdown(
60
+ choices=["create_task", "list_tasks", "get_task", "update_task", "delete_task", "search_tasks", "get_stats"],
61
  label="Select Tool",
62
  value="list_tasks"
63
  )
 
71
  submit_btn = gr.Button("Call Tool")
72
  output = gr.Textbox(label="Result", lines=10)
73
 
74
+ # Add example buttons for common operations
75
+ with gr.Row():
76
+ gr.Examples(
77
+ examples=[
78
+ ["create_task", '{"title": "Learn MCP", "description": "Study Model Context Protocol", "priority": "high"}'],
79
+ ["list_tasks", '{}'],
80
+ ["get_stats", '{}'],
81
+ ["search_tasks", '{"query": "learn"}']
82
+ ],
83
+ inputs=[tool_dropdown, arguments_input],
84
+ label="Quick Examples"
85
+ )
86
+
87
  submit_btn.click(
88
+ call_mcp_tool,
89
  inputs=[tool_dropdown, arguments_input],
90
  outputs=output
91
  )
requirements.txt CHANGED
@@ -1,3 +1,4 @@
1
  gradio
2
  mcp
3
- pydantic
 
 
1
  gradio
2
  mcp
3
+ pydantic
4
+ fastmcp