AIエージェント活用実践編 / Tool Use と MCP — 外部システム連携
自作 MCP サーバの最小構成
無料公開レッスン / 読了目安 5 分
学習のねらい
前レッスンで MCP の概念と、クライアント・サーバモデルについて学びました。
このレッスンでは、実際に Python の公式 MCP SDK を使って独自の MCP サーバー を実装する方法を学びます。
特に、FastMCP を使ってツールを公開する最小構成を、電卓ツールを例にハンズオン形式で理解します。
Python での MCP サーバー実装 (公式 SDK)
MCP サーバーは、公式パッケージ mcp (CLI 拡張込みでインストールする場合は mcp[cli]) の FastMCP クラスを使うと数行で実装できます。
必要なライブラリのインストール
pip install "mcp[cli]"
最小構成の MCP サーバー
以下は、add という1つのツールだけを持つ最小構成の MCP サーバーの例です。
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Calculator")
@mcp.tool()
def add(a: int, b: int) -> int:
"""2つの数値を足し算します。"""
return a + b
if __name__ == "__main__":
mcp.run()
FastMCP("Calculator") でサーバーインスタンスを作り、@mcp.tool() デコレータを関数に付けるだけでツールとして公開されます。関数の型ヒントと docstring がそのままツールのスキーマ (引数の型・説明) になります。
tools/list と tools/call の基本フロー
MCP クライアント (AI エージェント) と MCP サーバーは、内部的に主に以下の2種類のメッセージをやり取りします。
tools/list: クライアントがサーバーに対し、利用可能なツールの一覧を問い合わせます。FastMCPは登録済みの@mcp.tool()関数から自動でこの応答を生成します。tools/call: クライアントが特定のツールを、引数付きで呼び出すことを要求します。サーバーは対応する関数を実行し、戻り値を返します。
自分でこのプロトコルメッセージを組み立てる必要はなく、FastMCP がすべて処理します。
stdio トランスポートの使い方
mcp.run() は、デフォルトで stdio トランスポート を使って通信します。標準入力 (stdin) でクライアントからのリクエストを受け取り、標準出力 (stdout) で応答を返します。
この方式は、Claude Agent SDK や Claude Code のような MCP クライアントから見ると「起動コマンドを1つ指定するだけで使えるツール」になります。例えば、Claude Agent SDK 側は次のように接続します (次々レッスンで詳しく扱います)。
options = ClaudeAgentOptions(
mcp_servers={
"calculator": {
"command": "python",
"args": ["calculator_server.py"],
}
},
allowed_tools=["mcp__calculator__add"],
)
まとめ
このレッスンでは、公式 mcp SDK の FastMCP を使って、1つのツールを持つ最小限の MCP サーバーを実装する方法を学びました。@mcp.tool() デコレータでツールを公開し、mcp.run() で stdio トランスポートでの待受を開始する、という基本パターンを理解しました。
次の演習では、この電卓サーバーに機能を追加し、実際に Claude エージェントから呼び出せるようにしてみましょう。
(最終検証日: 2026-07。公式リポジトリ: https://github.com/modelcontextprotocol/python-sdk )
関連動画
無料で使える!Claude Codeの代替ツール登場 #shorts #AI
【coze工作流】2026最新Coze工作流一键生成心理叨叨兽!AI工作流全流程一键生成无人工干预!零基础小白保姆级教程,AI变现项目,咨询微信:Gd6255996 #人工智能 #变现项目