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にブラウザでアクセスします。
このような画面が開くので、「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を公開して、テキスト指示で最適化問題が解けるようにしたいですね!

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