File size: 1,657 Bytes
ca2480e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import os
import gradio as gr

def letter_counter(text: str, letter: str) -> int:
    """
    Count the number of occurrences of a letter in a given text.

    Args:
        text (str): Text to search through.
        letter (str): Letter to count.

    Returns:
        int: How many times `letter` appears in `text`.
    """
    return text.lower().count(letter.lower())

# --- Components -----------------------------------------------------------
# 明示的に label を指定して API 名を関数引数と一致させることで、
# MCP 経由の JSON キー不一致("text_1" 問題)を解消するよ ✨
text_input = gr.Textbox(
    label="text",
    placeholder="Enter text here"
)
letter_input = gr.Textbox(
    label="letter",
    placeholder="Enter a single letter",
    max_lines=1
)
count_output = gr.Number(label="count")

# --- Interface ------------------------------------------------------------
demo = gr.Interface(
    fn=letter_counter,
    inputs=[text_input, letter_input],
    outputs=count_output,
    title="Letter Counter (MCP demo)",
    description="Enter text & a letter – count occurrences. Launches with MCP automatically.",
    api_name="letter_counter"
)

if __name__ == "__main__":
    # mcp_server=True starts the SSE endpoint at /gradio_api/mcp/sse
    # server_name="0.0.0.0" で全ネットワークインターフェースにバインドし、別PCからアクセス可能にするよ!
    # PORT 環境変数があればそれを使い、無ければデフォルト 7860✨
    demo.launch(
        mcp_server=True,
        server_name="0.0.0.0",
        server_port=int(os.getenv("PORT", 7860)),
    )