1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

シンプルな四則演算MCPサーバーを作ってClaude for Desktopから使ってみる

Posted at

はじめに

最近MCPという言葉をよく見かけるため、キャッチアップ目的で四則演算を行う簡単なMCPサーバーを作成してみました。
本記事では、Claude for DesktopとMCPサーバを連携させて、プロンプト入力~レスポンスを取得できるところまで確認してみます。

ゴール

Claude for Desktopで入力したプロンプト対し、MCPサーバで四則演算を実行してレスポンスが返ってくることまで確認します。
以下画像のようなイメージです。

image.png

環境

  • mcp:1.6.0
  • python:3.12

環境構築

uvパッケージマネージャのインストール

まず、RustベースのPythonパッケージ管理ツールであるuvをインストールします。

PowerShell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

mac、Linuxのインストールコマンドについては以下のドキュメントに記載されてます。

プロジェクト作成と仮想環境のセットアップ

pythonプロジェクトの作成と仮想環境の有効化を行います。

  • uv init: Python プロジェクトを作成
  • uv venv:仮想環境の作成
  • .venv\Scripts\activate:仮想環境をアクティブにする

https://docs.astral.sh/uv/getting-started/features/#projects
https://docs.astral.sh/uv/getting-started/features/#the-pip-interface
https://docs.astral.sh/uv/pip/environments/#using-a-virtual-environment

PowerShell
uv init .
uv venv
.venv\Scripts\activate

必要なパッケージのインストール

MCPサーバーの実装に必要なパッケージをインストールします。

PowerShell
uv add "mcp[cli]"

四則演算MCPサーバーの実装

四則演算を行うスクリプトを作成します。
calculator.pyファイルを作成し、以下のコードを記述します。

以下のスクリプトでは次の4つの計算機能を実装しています。

  1. add:2つの数値を足し算する
  2. subtract:第一引数から第二引数を引く
  3. multiply:2つの数値を掛け算する
  4. divide:第一引数を第二引数で割る
calculator.py
from typing import Union
from mcp.server.fastmcp import FastMCP

# MCPサーバー初期化
mcp = FastMCP("calculator")

@mcp.tool()
async def add(a: Union[int, float], b: Union[int, float]) -> str:
    """足し算"""
    result = float(a + b)
    return f"[MCP計算] {a} + {b} = {result}"

@mcp.tool()
async def subtract(a: Union[int, float], b: Union[int, float]) -> str:
    """引き算"""
    result = float(a - b)
    return f"[MCP計算] {a} - {b} = {result}"

@mcp.tool()
async def multiply(a: Union[int, float], b: Union[int, float]) -> str:
    """掛け算"""
    result = float(a * b)
    return f"[MCP計算] {a} × {b} = {result}"

@mcp.tool()
async def divide(a: Union[int, float], b: Union[int, float]) -> str:
    """割り算"""
    if b == 0:
        raise ZeroDivisionError("0で割ることはできません")
    result = float(a / b)
    return f"[MCP計算] {a} ÷ {b} = {result}"

if __name__ == "__main__":
    # サーバー起動
    mcp.run(transport='stdio')

各関数に@mcp.tool()デコレータを付けることで、これらの関数がMCPツールとして登録されます。
また、Claude for Desktopで表示される計算結果がMCP経由であることを視覚的に確認したいので、返り値のプレフィックスに[MCP計算]の文字列と記載しました。

Claude for Desktopとの連携方法

設定ファイルの編集

Claude for Desktopをインストール後、設定ファイルを編集してMCPサーバーと連携させます。

編集したい設定ファイルは、claude_desktop_config.jsonです。
Claude for Desktopを起動して、Ctrl+,で設定ページを開きます。
開発者タブ > 構成を編集 を押下するとclaude_desktop_config.jsonが存在する階層をエクスプローラーで開けました。

image.png

設定ファイルに以下の内容を追記します。

claude_desktop_config.json
{
    "mcpServers": {
        "calculator": {
            "command": "uv",
            "args": [
                "--directory",
                "calculator.pyが存在する階層の絶対パス",
                "run",
                "calculator.py"
            ]
        }
    }
}

ディレクトリ階層の絶対パスについてpowershellでpwdで取得すると、

~~\hoge1\hoge2\hoge3

のような形式ですがこのまま記載するとJSONのフォーマットエラーになりました。

Invalid escape character in string.

パスを指定する際にはバックスラッシュを二重にする(\\)形で記載しました。

修正後
~~\\hoge1\\hoge2\\hoge3

実際に動かしてみる

設定が完了したら、Claude for Desktopを再起動します。

起動後、左下のツールアイコン(ハンマー)をクリックすると、登録したMCPツールが4つ表示されます。

image.png

このくらいの計算であればMCPを使わずともできそうですが、今回はMCP経由で計算を行いたいので明示的にMCPを使うことをプロンプトに記載してみます。

プロンプト
5 + 3は? MCPを使って計算して

ポップアップの表示について

“calculator”(ローカル)からのツールを許可しますか?

プロンプト入力後、上記文言のポップアップが出たので本記事ではこれを許可しています。

以下のレスポンスが返ってきました。

レスポンス
5 + 3の計算をツールを使って行います。

[MCP計算] 5 + 3 = 8.0

ツールを使って計算した結果、5 + 3 = 8です。

image.png

「addの結果を表示」という折りたたみセクションの表示から、MCPツールのaddが使われていることが分かります。

試しに掛け算、割り算も試してみました。

プロンプト
(23.45 × 67.89) ÷ 13.5 は? MCPを使って計算して

以下のようにMCPツールのmultiply(掛け算)、divide(割り算)を使えてそうです。

image.png

終わりに

本記事では、シンプルな四則演算を行うMCPサーバーを作成し、Claude for Desktopから呼び出してみました。
今回はMCPサーバから外部のAPIを叩くようなことはしませんでしたが、近々やってみようと思います。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?