|
|
import gradio as gr |
|
|
from typing import List, Dict, Any, Tuple |
|
|
|
|
|
from toolset_semantics import search_suitable_tools, search_suitable_spaces, initialize_and_upload_to_vector_db |
|
|
from hfspaces_tracking import update_database |
|
|
|
|
|
def suitable_MCP_servers(task: str) -> List[Dict[str, Any]]: |
|
|
""" |
|
|
Looking for suitable MCP server for the given task. |
|
|
|
|
|
Args: |
|
|
task (str): The text description of the task |
|
|
|
|
|
Returns: |
|
|
List: A list of items that contains the info about the suitable MCP servers |
|
|
""" |
|
|
|
|
|
spaces = search_suitable_spaces(task) |
|
|
return spaces |
|
|
|
|
|
def suitable_MCP_tools(task: str, server: List[Dict[str, Any]]=None) -> List[Tuple[str, Dict[str, Any]]]: |
|
|
""" |
|
|
Looking for suitable tools for the given task |
|
|
|
|
|
Args: |
|
|
task (str): The text description of the task |
|
|
|
|
|
Returns: |
|
|
List: A list of items that contains the tool name and the info of its MCP server |
|
|
""" |
|
|
tools = search_suitable_tools(task) |
|
|
return tools |
|
|
|
|
|
|
|
|
mcps_interface = gr.TabbedInterface( |
|
|
[ |
|
|
gr.Interface( |
|
|
fn=suitable_MCP_servers, |
|
|
inputs=gr.Textbox(placeholder="Enter task for MCP server"), |
|
|
outputs=gr.JSON(), |
|
|
title="MCP servers", |
|
|
description="List of suitable MCP servers", |
|
|
api_name="mcp_servers" |
|
|
), |
|
|
gr.Interface( |
|
|
fn=suitable_MCP_tools, |
|
|
inputs=gr.Textbox(placeholder="Enter task for MCP tool"), |
|
|
outputs=gr.JSON(), |
|
|
title="MCP tools", |
|
|
description="List of suitable MCP tools", |
|
|
api_name="mcp_tools" |
|
|
) |
|
|
], |
|
|
[ |
|
|
"MCP Servers", |
|
|
"MCP Tools" |
|
|
] |
|
|
) |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
if update_database(): |
|
|
initialize_and_upload_to_vector_db() |
|
|
mcps_interface.launch(mcp_server=True) |