4/15(火)~17(木) 第5回量子コンピューティングEXPO春(東京ビッグサイト)に共同出展します☆彡
テキストAI / RAG

New!! MCP(Model Context Protocol)でカスタムサーバーを作成する方法

AI要約

この記事ではMCP(Model Context Protocol)を使用してカスタムサーバーを構築し、Claudeデスクトップから利用する手順をを詳しく解説します。numpyライブラリを使ったデータ処理関数をツール化し、Claude上で実行できることを確認しました。

やること

前回、MCP(Model Context Protocol)を通じてテキスト指示でBlenderを操作しました。

今回は、自分で作成したMCPサーバーをClaudeデスクトップで使用してみます。PythonとClaudeデスクトップの環境構築は前回の記事のとおりなので、あらかじめ行ってください。

カスタムサーバーの作成

事前に、Claudeデスクトップが起動している場合は終了しておいてください。

コマンドプロンプトを開き、MCPのPython SDKをインストールします。

pip install mcp[cli]

今回のデモで使うnumpyライブラリをインストールします。

pip install numpy

適当なフォルダ内に「server.py」というファイルを作成し、以下のコードを貼り付けます。

from mcp.server.fastmcp import FastMCP
import numpy as np

# Create an MCP server
mcp = FastMCP("Numpy_Calc")

@mcp.tool()
def standardize_data(data: list[float])-> float:
    arr = np.array(data)
    mean = np.mean(arr)
    std = np.std(arr)

    if std == 0:
        standardized = np.zeros_like(arr)  # 標準偏差0のときは全部0
    else:
        standardized = (arr - mean) / std
    return standardized

# シグモイド関数
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

@mcp.tool()
def apply_sigmoid(data: list[float])-> float:
    input_array = np.array(data)
    return sigmoid(input_array)

ここで FastMCP() の引数の文字列がサーバーの名前になります。@mcp.tool() はデコレーターで、他にも様々な種類があります。今回は .tool() のみ扱いますが、気なる方は参考サイトをご覧ください。

データを標準化する関数「standardize_data()」とデータをシグモイド変換する関数「apply_sigmoid()」と用意しました。

カスタムサーバーのテスト

コマンドプロンプトでserver.pyが置かれているフォルダに入り、以下のコマンドを実行します。

mcp dev server.py

ここで、MCP Inspectorをインストールしていない場合はインストールするか聞かれるので、「y」でインストールします(次回からは聞かれません)。MCP Inspectorは、単独でMCPサーバーを呼び出しテストするためのツールです。

Need to install the following packages:
@modelcontextprotocol/inspector@0.6.0
Ok to proceed? (y)

すると以下のようにサーバーが起動します。

Starting MCP inspector...

🔍 MCP Inspector is up and running at http://localhost:5173 🚀
Proxy server listening on port 3000

表示されたURLにブラウザでアクセスします。

http://localhost:5173

このような画面が開くので、「Connect」をクリック。

「Tools」をクリック。

①をクリックすると、先ほどコードに記述した2つの関数が表示されます。まず、②の「standardize_data」をクリックしてテストしてみます。

左側に「standardize_data」の枠が表示されるので、「Add Item」をクリックして適当な数値を追加していきます。

このとき、上下矢印では整数しか入力できないので、小数は直接入力してください。

「Run Tool」で実行すると、入力値を標準化した結果(返り値)が表示されます。

同様に「apply_sigmoid」もテストしてみてください。こちらもエラーなく結果が表示されれば成功です。

関数のテストが終了したら、コマンドプロンプトに戻って「Ctrl + C」でサーバーを止めます。以下のように聞かれるので「y」で停止します。

バッチ ジョブを終了しますか (Y/N)? y

Claudeデスクトップにインストールする

最後に、Claudeデスクトップで作成したサーバーを利用できるようにします。

コマンドプロンプトでserver.pyが置かれているフォルダに入り、以下のコマンドを実行します。

mcp install server.py

Claudeデスクトップを起動します。「ファイル」>「設定」> 「開発者」をクリック。先ほど作成したサーバー名が表示されています。

早速、標準化を試してみましょう。「numpyで1.0, 4.5, 6.7, 3.9の4つの小数を標準化して」と入力します。注意が表示されたら「このチャットで許可」をクリックします。

結果が表示されました。

シグモイド変換もやってみます。「numpyで1.0, 4.5, 6.7, 3.9の4つの小数をシグモイド変換して」と入力します。

こちらも正しく処理できました。

おわりに

Python関数を簡単にツール化し、LLMから呼び出すことが可能になりました。今回はnumpyを使用しましたが、他のライブラリや独自の処理も自在に組み込めます。様々なカスタムサーバーを作成してLLMとの連携を試してみてください。

vcoptのMCPを公開して、テキスト指示で最適化問題が解けるようにしたいですね!

まさに、そういうことができます!

参考資料

GitHub - modelcontextprotocol/python-sdk: The official Python SDK for Model Context Protocol servers and clients
The official Python SDK for Model Context Protocol servers and clients - modelcontextprotocol/python...

リアクションのお願い

「参考になった!」「刺激された!」と思ったらぜひリアクションをしましょう。エンジニアの世界はGive and Takeによって成り立っています。これからも無料で良質な情報にアクセスできるよう、Giveする人への感謝をリアクションで示しましょう!

この記事をシェアする

自身のブログ等で使用する場合は引用を忘れずに!

また、寄付も受け付けています。コーヒー1杯でとても喜びます(*˘︶˘*)

 Amazonでギフト券(アマギフ)を贈る

こちらのリンク から金額を指定してお贈りください。(デフォルトで10000円になっているのでご変更ください)

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 Amazonで食事券(すかいらーく優待券)を贈る

500円 1000円 2000円 5000円 からお贈りください。

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 その他、ギフト券やクーポン券をメールで贈る

デジタルのギフト券/クーポン券はメールアドレス(staffあっとvigne-cla.com)までお送りください。受領の返信をいたします。
紙のギフト券/クーポン券は 「郵便物はこちらへ」の住所 まで送付してください。名刺やメールアドレスを同封していただければ受領の連絡をいたします。
余った株主優待券等の処理におすすめです。
いずれも見返りはありませんのでご了承ください。

不明点はSNSでお気軽にご連絡ください

ビネクラのTwitter・Youtubeでコメントをください!


Slack・Discordの場合はこちらの公開グループに参加してShoya YasudaまでDMをください!


※当ブログに関することは何でもご相談・ご依頼可能です。

この記事を書いた人
Mizukami

専門は分子生物学とタンパク質工学。Webアプリや画像系・テキスト系の深層学習に強みがある。食べ物は床に落ちても30秒ルール。

タイトルとURLをコピーしました