メインコンテンツへスキップ
見出し画像

Gradioでmcpサーバーが簡単に作れるようになったようです。

    こんにちは、makokonです。
    Gradioでは、mcpサーバーを簡単に実装する機能が実装されたようです。
    本質的には、通常のGradioアプリの最後に
    mcp_server=True を設定する
    だけでできるので、LLMチャットアプリに自作のツールを加えて、パワーアップできそうです。
    この記事では、サーバーの登録を簡単に紹介します。
    (後日、自作アプリ内でのmcpサーバー呼び出し報告をしてみたいと思います)


    How to Build an MCP Server in 5 Lines of Python


    何を実現したか


    Gradioは「Model Context Protocol(MCP)サーバー機能」を実現しました。
    これにより、Gradioで作成したアプリケーション(画像生成器や計算ツールなど)をLLM(大規模言語モデル)が「ツール」として呼び出せるようになりました。
    つまり、LLMがPythonで作られた様々な機能(画像編集、音声合成、特殊計算など)を利用できるようになり、LLMの能力を大幅に拡張できるようになりました。

    具体的なサンプルコード

    まずは実際にどんなコードで実現するのかを見てみましょう。

    「単語内の特定の文字の出現回数をカウントする」機能を実装

    このシンプルな例は、LLMが苦手とする「文字数カウント」のような計算をLLMが外部ツールとして利用できるようにするデモンストレーションです。
    3番目の設定以外特に変わったことはしていませんね。

    1. 単語内の特定の文字の出現回数をカウントする関数を定義

    2. Gradioインターフェースを作成し、その関数をウェブUIとして公開

    3. mcp_server=True を設定することで、同じ機能をLLMが使えるMCPサーバーとしても公開

    import gradio as gr
    
    def letter_counter(word, letter):
        """Count the occurrences of a specific letter in a word.
        
        Args:
            word: The word or phrase to analyze
            letter: The letter to count occurrences of
            
        Returns:
            The number of times the letter appears in the word
        """
        return word.lower().count(letter.lower())
    
    demo = gr.Interface(
        fn=letter_counter,
        inputs=["text", "text"],
        outputs="number",
        title="Letter Counter",
        description="Count how many times a letter appears in a word"
    )
    
    demo.launch(mcp_server=True)

    一応タイトルが5行のパイソンなので

    上記コードをタイトルに合わせて5行のコードとして示しておきます。
    これがサンプルコードの本質です。

    1. Gradioをインポート

    2. ツールとなる関数を定義(letter_counter)

    3. 関数の処理内容を実装

    4. Gradioインターフェースを作成

    import gradio as gr
    
    def letter_counter(word, letter):
        return word.lower().count(letter.lower())
    
    demo = gr.Interface(fn=letter_counter, inputs=["text", "text"], outputs="number")
    demo.launch(mcp_server=True)

    mcpサーバーの呼び出し設定サンプル

    直接MCPサーバーを呼び出すクライアント側のコードは示されていませんが、MCPクライアント(Claude Desktop、Cursor、Clineなど)での設定方法が説明されています。

    クライアント側での設定は以下のようなJSON形式のコンフィグを使用します:

    {
      "mcpServers": {
        "gradio": {
          "url": "http://your-server:port/gradio_api/mcp/sse"
        }
      }
    }
    

    これはMCPクライアントの設定ファイルに追加するもので、「your-server:port」の部分は実際のサーバーのURLとポート番号に置き換えます。

    例えば、Hugging Face Spacesでホストされているサンプル用のコンフィグは:

    {
      "mcpServers": {
        "gradio": {
          "url": "https://abidlabs-mcp-tools.hf.space/gradio_api/mcp/sse"
        }
      }
    }

    このコンフィグを追加すると、LLM(ClaudeやGPTなど)は会話の中でこのツールを使用できるようになります。例えば、「strawberryという単語の中に'r'は何回出てくる?」という質問に対して、LLMはこのツールを呼び出して正確に回答できるようになります。



    あなたへのおすすめ