FastMCP: LLMサーバー&クライアントをPythonらしく構築
FastMCP 2.0: LLM連携のためのPythonicな核
AIの急速な進化において、大規模言語モデル(LLM)が外部データと連携し、特定の機能を実行する能力は極めて重要です。そこで登場するのがFastMCP 2.0です。これは「AIにUSB-Cポートを」提供する画期的なオープンソースのPythonフレームワークであり、Model Context Protocol(MCP)サーバーとクライアントを構築するための標準化された、効率的でPythonらしい方法を提供します。
Model Context Protocol (MCP) とは?
Model Context Protocol (MCP) は、LLMアプリケーションが外部データや機能に安全かつ統一的にアクセスできるように設計された新しい標準です。LLM連携に特化したAPIと考えることができます。MCPサーバーは以下を行うことができます。
- リソースの公開: GETエンドポイントのように読み取り専用のデータソースを提供し、LLMのコンテキストに情報をロードします。
- ツールの提供: POSTエンドポイントのようにPython関数を実行することで、LLMがアクションを実行できるようにします。これは計算、API呼び出し、または副次的な効果に利用されます。
- プロンプトの定義: LLM連携を導く再利用可能なメッセージテンプレートを作成します。
なぜFastMCP 2.0なのか?
MCPプロトコルは強力ですが、ゼロから実装するにはかなりの定型コードが必要です。FastMCP 2.0は、サーバー設定、プロトコルハンドラー、コンテンツタイプ、エラー管理といった複雑さを排除し、開発者が価値あるツールやリソースの構築のみに集中できるようにします。これは高レベルでPythonらしい設計がされており、多くの場合、シンプルな関数デコレーターだけでLLMに機能を公開できます。
FastMCP 2.0は単なるアップグレードではありません。FastMCP 1.0(現在は公式のMCP Python SDKに統合されています)を基盤とした包括的なエコシステムです。この最新版は、プロダクション対応のAIアプリケーションのための完全なツールキットを提供します。
- クライアントライブラリ: 任意のMCPサーバーとプログラムでシームレスに連携できます。
- 認証システム: 組み込みの認証サポートにより、サーバーとクライアントの両方を保護します。
- デプロイメントツール: サーバーをローカルで実行したり、ウェブサービスとしてデプロイしたりするための合理化されたオプションを提供します。
- 統合: 既存のOpenAPI仕様やFastAPIアプリケーションからFastMCPサーバーを生成し、ウェブAPIを瞬時にMCPエコシステムに取り込みます。
- テストフレームワーク: プロセス管理やネットワーク呼び出しなしに、インメモリでサーバーを効率的にテストできます。
- 高度な機能: プロキシサーバー、サーバー構成、動的ツール書き換え、LLMに優しいドキュメント形式をサポートします。
FastMCPのコアコンセプト
FastMCPは直感的なコアコンセプトを通じてMCPアプリケーションの作成を簡素化します。
- FastMCP Server: ツール、リソース、プロンプトを保持し、接続と設定を管理する中心オブジェクトです。
- Tools: LLMがアクションを実行するために呼び出すことができる
@mcp.tool
で装飾されたPython関数です。FastMCPは型ヒントとdocstringから自動的にスキーマを生成します。 - Resources & Templates:
@mcp.resource
を介して公開されるデータソースで、静的データやパラメーターのプレースホルダーを持つ動的テンプレートを可能にします。 - Prompts: LLM連携を導くために
@mcp.prompt
で定義された再利用可能なメッセージテンプレートです。 - Context: ツール、リソース、またはプロンプト内でMCPセッション機能にアクセスでき、ロギング、LLMサンプリング(
ctx.sample()
)、HTTPリクエスト、および進捗報告を可能にします。 - MCP Clients:
fastmcp.Client
は、ローカルスクリプト、SSEエンドポイント、さらにはインメモリサーバーインスタンスに接続して効率的なテストを行うことができます。
FastMCPを始めるにあたって
FastMCPはPrefect社が心を込めて開発しています。インストールはuv pip install fastmcp
で簡単に行えます。
基本的なサーバーを実行するには、FastMCP
インスタンス内にツールとリソースを定義し、mcp.run()
を呼び出します。
# server.py
from fastmcp import FastMCP
mcp = FastMCP("Demo 🚀")
@mcp.tool
def add(a: int, b: int) -> int:
"""Add two numbers (2つの数値を加算する)"""
return a + b
if __name__ == "__main__":
mcp.run()
fastmcp run server.py
を実行するだけで、サーバーをローカルで実行できます。
FastMCPは、STDIO(デフォルト)、Streamable HTTP、SSEを含む様々なトランスポートプロトコルをサポートしており、開発環境とプロダクション環境の両方で柔軟性を確保します。
GitHubで13.6k以上のスターと830のフォークを持つFastMCPは、活発なコミュニティに支えられた急速に成長しているプロジェクトです。高速でシンプル、Pythonらしく、かつ完全であることへのコミットメントは、堅牢でスケーラブルなLLM駆動アプリケーションを構築したいすべての人にとって不可欠なツールとなっています。