Skip to content

Latest commit

 

History

History
102 lines (79 loc) · 4.77 KB

File metadata and controls

102 lines (79 loc) · 4.77 KB

📘 課題解答:電卓MCPサーバーに平方根ツールを追加する

概要

この課題では、電卓MCPサーバーに数値の平方根を計算する新しいツールを追加しました。この追加により、AIエージェントは「16の平方根は?」や「√49を計算して」といった自然言語の質問に対応できるようになります。

🛠️ 平方根ツールの実装

この機能を追加するために、server.pyファイルに新しいツール関数を定義しました。実装は以下の通りです。

"""
Sample MCP Calculator Server implementation in Python.

This module demonstrates how to create a simple MCP server with calculator tools
that can perform basic arithmetic operations (add, subtract, multiply, divide).
"""

from mcp.server.fastmcp import FastMCP
import math

server = FastMCP("calculator")

@server.tool()
def add(a: float, b: float) -> float:
    """Add two numbers together and return the result."""
    return a + b

@server.tool()
def subtract(a: float, b: float) -> float:
    """Subtract b from a and return the result."""
    return a - b

@server.tool()
def multiply(a: float, b: float) -> float:
    """Multiply two numbers together and return the result."""
    return a * b

@server.tool()
def divide(a: float, b: float) -> float:
    """
    Divide a by b and return the result.
    
    Raises:
        ValueError: If b is zero
    """
    if b == 0:
        raise ValueError("Cannot divide by zero")
    return a / b

@server.tool()
def sqrt(a: float) -> float:
    """
    Return the square root of a.

    Raises:
        ValueError: If a is negative.
    """
    if a < 0:
        raise ValueError("Cannot compute the square root of a negative number.")
    return math.sqrt(a)

🔍 動作の仕組み

  • mathモジュールのインポート:基本的な算術演算を超えた数学的操作を行うために、Pythonには組み込みのmathモジュールがあります。このモジュールには様々な数学関数や定数が含まれており、import mathでインポートすることで、平方根を計算するmath.sqrt()などの関数が使えるようになります。
  • 関数定義@server.tool()デコレーターによって、sqrt関数がAIエージェントから利用可能なツールとして登録されます。
  • 入力パラメータ:関数はfloat型の引数aを1つ受け取ります。
  • エラーハンドリングaが負の値の場合、math.sqrt()では平方根を計算できないため、ValueErrorを発生させて処理を中断します。
  • 戻り値:非負の入力に対しては、Pythonの組み込み関数math.sqrt()を使って平方根を計算し、その結果を返します。

🔄 サーバーの再起動

新しいsqrtツールを追加した後は、MCPサーバーを再起動して、エージェントが新機能を認識し利用できるようにしてください。

💬 新ツールを試すための例文

平方根機能をテストするための自然言語の例文は以下の通りです。

  • 「25の平方根は何ですか?」
  • 「81の平方根を計算して。」
  • 「0の平方根を教えて。」
  • 「2.25の平方根は?」

これらのプロンプトにより、エージェントがsqrtツールを呼び出し、正しい結果を返します。

✅ まとめ

この課題を通じて、以下のことができるようになりました。

  • 電卓MCPサーバーに新しいsqrtツールを追加した。
  • AIエージェントが自然言語の指示で平方根計算を行えるようにした。
  • 新しいツールの追加とサーバー再起動による機能統合を実践した。

さらに、べき乗や対数関数など、他の数学ツールを追加してエージェントの機能を拡張することもぜひ試してみてください!

免責事項
本書類はAI翻訳サービス「Co-op Translator」を使用して翻訳されました。正確性には努めておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。原文の言語による文書が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用により生じた誤解や誤訳について、当方は一切の責任を負いかねます。