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がインストールされ、動作するようになったので、今すぐ以下のことができます。
- ツールの構築: 強力なMCPツールの作成方法を学ぶ
- リソースの追加: LLMクライアントにデータソースを公開する
- Claude Codeへの接続: 開発環境と統合する
- 本番環境へのデプロイ: 実際の利用に備えてサーバーをスケールさせる
次のセクションでは、複雑な操作やデータ処理を扱える、洗練されたツールを作成する方法について詳しく掘り下げていきます。