FastMCP: MCPサーバーとクライアント構築の完全ガイド

FastMCP: MCPサーバーとクライアント構築の完全ガイド

FastMCP 2.0の全容を解説するチュートリアルです。このライブラリを使えば、Model Context Protocol (MCP) のサーバーとクライアントをPythonらしく、かつ迅速に構築できます。LLMアプリケーション向けのツール、リソース、プロンプトの作成方法を習得しましょう。

レッスン 2 2025-07-03 06:57

FastMCPのインストールとセットアップ

FastMCPのインストールとセットアップ

前提条件

FastMCPをインストールする前に、以下のものがあることを確認してください。

  • Python 3.10以降: FastMCPはPython 3.10以降が必要です。
  • パッケージマネージャー: 最高の体験のためにuvの使用を推奨しますが、pipでも問題ありません。

インストール方法

uvを使う(推奨)

FastMCPをインストールする最も速く、信頼性の高い方法です。

uv pip install fastmcp

pipを使う

pipを好む場合:

pip install fastmcp

開発用インストール

開発作業を行う場合や、最新の機能を使いたい場合:

# リポジトリをクローンする
git clone https://github.com/jlowin/fastmcp.git
cd fastmcp

# uvで環境を作成および同期する
uv sync

# または、仮想環境内でpipを使用する
python -m venv venv
source venv/bin/activate  # Windowsの場合: venv\Scripts\activate
pip install -e .

インストールの確認

簡単なサーバーを作成して、インストールをテストします。

# test_install.py
from fastmcp import FastMCP

mcp = FastMCP("Test Server")

@mcp.tool
def hello() -> str:
    """Say hello."""
    return "Hello from FastMCP!"

if __name__ == "__main__":
    print("FastMCP installed successfully!")
    print(f"Server name: {mcp.name}")
    # サーバーを実行するにはコメント解除
    # mcp.run()

テストを実行します。

python test_install.py

以下のように表示されるはずです。

FastMCP installed successfully!
Server name: Test Server

プロジェクト構成

FastMCPプロジェクトの一般的な構造として、以下をお勧めします。

my-mcp-project/
├── server.py          # メインのサーバーファイル
├── tools/             # ツール実装
│   ├── __init__.py
│   ├── math_tools.py
│   └── data_tools.py
├── resources/         # リソース実装
│   ├── __init__.py
│   └── config.py
├── tests/            # テストファイル
│   └── test_server.py
├── requirements.txt   # 依存関係
└── README.md         # プロジェクトのドキュメント

環境設定

FastMCPは環境変数による設定をサポートしています。

# .env ファイル
FASTMCP_LOG_LEVEL=DEBUG
FASTMCP_MASK_ERROR_DETAILS=False
FASTMCP_RESOURCE_PREFIX_FORMAT=path

よく使われる環境変数:

  • FASTMCP_LOG_LEVEL: ロギングレベルを設定します (DEBUG, INFO, WARNING, ERROR, CRITICAL)
  • FASTMCP_MASK_ERROR_DETAILS: クライアントに詳細なエラー情報を表示しないようにします
  • FASTMCP_RESOURCE_PREFIX_FORMAT: リソースプレフィックスのフォーマット方法 ("path" または "protocol")

はじめてのFastMCPサーバー

完全なサーバーの例を作成してみましょう。

# server.py
import random
from datetime import datetime
from fastmcp import FastMCP

# サーバーを構成して作成
mcp = FastMCP(
    name="My First MCP Server",
    instructions="""
    このサーバーは、以下の基本的なユーティリティを提供します:
    - 数学演算
    - 乱数生成
    - 現在時刻情報
    """
)

@mcp.tool
def add_numbers(a: float, b: float) -> float:
    """2つの数値を加算します。"""
    return a + b

@mcp.tool
def roll_dice(sides: int = 6, count: int = 1) -> list[int]:
    """指定された数の面を持つサイコロを振ります。"""
    if count > 10:
        raise ValueError("サイコロは最大10個までです")
    return [random.randint(1, sides) for _ in range(count)]

@mcp.resource("time://current")
def get_current_time() -> str:
    """現在の日付と時刻を取得します。"""
    return datetime.now().isoformat()

@mcp.resource("config://server")
def get_server_config() -> dict:
    """サーバーの設定情報を取得します。"""
    return {
        "name": mcp.name,
        "version": "1.0.0",
        "features": ["tools", "resources"],
        "uptime": "Just started"
    }

if __name__ == "__main__":
    print(f"{mcp.name}を起動中...")
    mcp.run()

サーバーの実行

STDIOモード(デフォルト)

ローカル開発やコマンドラインツールに最適です。

python server.py

HTTPモード

Webベースのクライアントや開発テストに適しています。

# server.py の中で
if __name__ == "__main__":
    mcp.run(transport="http", host="127.0.0.1", port=8000)

そして実行します。

python server.py

サーバーは http://127.0.0.1:8000/mcp/ で利用可能になります。

インストール状況のテスト

すべてが機能していることを確認するために、簡単なテストクライアントを作成します。

# test_client.py
import asyncio
from fastmcp import Client

async def test_server():
    # HTTP経由でテスト (HTTPモードで実行している場合)
    async with Client("http://localhost:8000/mcp/") as client:
        # 利用可能なツールを一覧表示
        tools = await client.list_tools()
        print("利用可能なツール:", [tool.name for tool in tools])

        # ツールを呼び出す
        result = await client.call_tool("add_numbers", {"a": 5, "b": 3})
        print("5 + 3 =", result.text)

        # リソースを読み取る
        time_resource = await client.read_resource("time://current")
        print("現在の時刻:", time_resource.content)

if __name__ == "__main__":
    asyncio.run(test_server())

よくあるインストール問題

ImportError: No module named 'fastmcp'

FastMCPが正しいPython環境にインストールされていることを確認してください。

# 使用しているPythonを確認
which python
python --version

# 正しい環境にインストール
python -m pip install fastmcp

バージョンの競合

FastMCP 1.0または公式のMCP SDKからアップグレードする場合:

# まず古いバージョンをアンインストール
pip uninstall mcp fastmcp

# 最新バージョンをインストール
pip install fastmcp

パーミッションエラー

一部のシステムでは、以下が必要になる場合があります。

# --user フラグを使用
pip install --user fastmcp

# または、これをより適切に処理するuvを使用
uv pip install fastmcp

次のステップ

FastMCPがインストールされ、動作するようになったので、今すぐ以下のことができます。

  1. ツールの構築: 強力なMCPツールの作成方法を学ぶ
  2. リソースの追加: LLMクライアントにデータソースを公開する
  3. Claude Codeへの接続: 開発環境と統合する
  4. 本番環境へのデプロイ: 実際の利用に備えてサーバーをスケールさせる

次のセクションでは、複雑な操作やデータ処理を扱える、洗練されたツールを作成する方法について詳しく掘り下げていきます。