import gradio as gr from services.mcp.mcp_letter_counting import letter_occurrence_mcp_client def letter_counter_component(): """ Count the occurrences of a specific letter in a given word using the MCP server. Args: word (str): The word in which to count the letter. letter (str): The letter to count in the word. Returns: str: The response from the MCP server containing the count of the letter. """ with gr.Column(elem_classes="gr-form") as mcp_letter_counter_ui: gr.HTML("

MCP Character Counter

") gr.HTML("

Enter text below and the MCP server will count the characters.

") # Text input for character counting input_text = gr.Textbox( label="Enter text to count characters", placeholder="Type or paste text here...", lines=5, ) letter_to_count = gr.Textbox( label="Letter to Count", placeholder="Enter the letter to count in the text", lines=1, ) # Count button count_button = gr.Button("Count Characters", variant="primary") # Result display result_text = gr.Textbox(label="Result", interactive=False) # Connect the button to different counting functions based on method count_button.click( fn=letter_occurrence_mcp_client, # Use the async function directly - Gradio handles the async inputs=[input_text, letter_to_count], outputs=[result_text], ) # MCP Tools Explorer Section gr.HTML("

MCP Tools Explorer

") gr.HTML("

Explore the available tools in the MCP server.

") return mcp_letter_counter_ui