FastMCP
FastMCPは、クライアントセッション管理が可能なMCPサーバーを構築するためのTypeScriptフレームワークです。
Note
Python実装版はFastMCP Pythonをご覧ください。
主な機能
FastMCPは以下の機能を提供します:
- シンプルなツール、リソース、プロンプト定義
- 認証機能
- セッション管理
- 画像コンテンツ対応
- ロギング
- エラーハンドリング
- SSE(Server-Sent Events)
- CORS(デフォルトで有効)
- 進捗通知
- 型付きサーバーイベント
- プロンプト引数の自動補完
- サンプリングリクエスト
- 自動SSEピング
- ルート管理
- テストやデバッグのためのCLI
インストール方法
クイックスタート
Note
FastMCPの実際の使用例は多数あります。事例紹介をご覧ください。
これだけで動作するMCPサーバーができました!
ターミナルで以下のようにテストできます:
SSE
Server-Sent Events(SSE)は、サーバーがHTTPS接続を介してクライアントにリアルタイム更新を送信するメカニズムです。MCPにおいて、SSEは主にリモートMCP通信を可能にするために使用され、リモートマシンでホストされたMCPにアクセスしてネットワーク経由で更新を中継できるようにします。
SSEサポート付きでサーバーを実行することもできます:
これにより、サーバーが起動し、http://localhost:8080/sse
でSSE接続をリッスンします。
その後、SSEClientTransport
を使用してサーバーに接続できます:
基本概念
ツール
MCPのツールでは、サーバーが実行可能な関数を公開し、クライアントやLLMがアクションを実行するために呼び出すことができます。
FastMCPはツールパラメーターの定義にStandard Schema仕様を使用しています。これにより、Zod、ArkType、Valibotなど、仕様を実装している好みのスキーマ検証ライブラリを使用できます。
Zodの例:
ArkTypeの例:
Valibotの例:
Valibotにはピア依存関係@valibot/to-json-schemaが必要です。
文字列を返す
execute
は文字列を返すことができます:
これは以下と同等です:
リストを返す
メッセージのリストを返したい場合は、content
プロパティを持つオブジェクトを返せます:
画像の返却
画像のコンテンツオブジェクトを作成するには、imageContent
を使用します:
imageContent
関数は以下のオプションを受け取ります:
url
: 画像のURLpath
: 画像ファイルへのパスbuffer
: バッファとしての画像データ
url
、path
、buffer
のいずれか1つのみを指定する必要があります。
上の例は以下と同等です:
ロギング
ツールはコンテキストオブジェクトのlog
を使用してクライアントにメッセージをログ出力できます:
log
オブジェクトには以下のメソッドがあります:
debug(message: string, data?: SerializableValue)
error(message: string, data?: SerializableValue)
info(message: string, data?: SerializableValue)
warn(message: string, data?: SerializableValue)
エラー
ユーザーに表示されるべきエラーは、UserError
インスタンスとしてスローする必要があります:
進捗通知
ツールはコンテキストオブジェクトのreportProgress
を呼び出すことで進捗を報告できます:
リソース
リソースは、MCPサーバーがクライアントに提供したいあらゆる種類のデータを表します。これには以下が含まれます:
- ファイルの内容
- スクリーンショットや画像
- ログファイル
- その他多数
各リソースは一意のURIで識別され、テキストまたはバイナリデータを含むことができます。
Note
load
は複数のリソースを返すことができます。これは例えば、ディレクトリが読み込まれたときにディレクトリ内のファイルのリストを返すために使用できます。
load
でバイナリコンテンツを返すこともできます:
リソーステンプレート
リソーステンプレートを定義することもできます:
リソーステンプレート引数の自動補完
リソーステンプレート引数の自動補完を有効にするために、complete
関数を提供します:
プロンプト
プロンプトは、サーバーが再利用可能なプロンプトテンプレートとワークフローを定義し、クライアントがユーザーやLLMに簡単に提示できるようにします。これにより、一般的なLLMインタラクションを標準化して共有するための強力な方法を提供します。
プロンプト引数の自動補完
プロンプトは引数の自動補完を提供できます:
enum
を使用したプロンプト引数の自動補完
引数にenum
配列を提供すると、サーバーは自動的に引数の補完を提供します。
認証
FastMCPではカスタム関数を使用してクライアントをauthenticate
できます:
これで、ツール内で認証されたセッションデータにアクセスできます:
セッション
session
オブジェクトはFastMCPSession
のインスタンスであり、アクティブなクライアントセッションを記述します。
クライアントとサーバー間の1対1通信を可能にするために、各クライアント接続に対して新しいサーバーインスタンスを割り当てます。
型付きサーバーイベント
on
メソッドを使用してサーバーから発行されるイベントをリッスンできます:
FastMCPSession
FastMCPSession
はクライアントセッションを表し、クライアントとやり取りするためのメソッドを提供します。
FastMCPSession
インスタンスの取得方法については、セッションの例を参照してください。
requestSampling
requestSampling
はサンプリングリクエストを作成し、レスポンスを返します。
clientCapabilities
clientCapabilities
プロパティにはクライアント機能が含まれています。
loggingLevel
loggingLevel
プロパティは、クライアントによって設定されたロギングレベルを記述します。
roots
roots
プロパティには、クライアントによって設定されたルートが含まれています。
server
server
プロパティには、セッションに関連付けられたMCPサーバーのインスタンスが含まれています。
型付きセッションイベント
on
メソッドを使用してセッションから発行されるイベントをリッスンできます:
サーバーの実行
MCP-CLIでテスト
サーバーをテストしてデバッグする最速の方法は、fastmcp dev
を使用することです:
これにより、mcp-cli
を使用してターミナルでMCPサーバーをテストおよびデバッグするためのサーバーが実行されます。
MCP Inspectorで検査
もう一つの方法は、公式のMCP Inspector
を使用してWebUIでサーバーを検査することです:
よくある質問
Claude Desktopで使用するには?
ガイド https://modelcontextprotocol.io/quickstart/user に従って、次の設定を追加してください:
事例紹介
Note
FastMCPを使用したサーバーを開発した場合は、ぜひPR提出して事例として紹介してください!
- apinetwork/piapi-mcp-server - Midjourney/Flux/Kling/LumaLabs/Udio/Chrip/Trellisを使用してメディアを生成
- domdomegg/computer-use-mcp - コンピュータを制御
- LiterallyBlah/Dradis-MCP – Dradisでプロジェクトと脆弱性を管理
- Meeting-Baas/meeting-mcp - 会議ボットの作成、議事録の検索、録画データの管理
- drumnation/unsplash-smart-mcp-server – AIエージェントがUnsplashからプロの写真をシームレスに検索、推奨、配信できるようにする
- ssmanji89/halopsa-workflows-mcp - HaloPSAワークフローとAIアシスタントの統合
- aiamblichus/mcp-chat-adapter – LLMがチャット完了を使用するためのクリーンなインターフェースを提供
謝辞
- FastMCPはJonathan LowinによるPython実装に着想を得ています。
- コードベースの一部はLiteMCPから採用されました。
- コードベースの一部はModel Context protocolでSSEをやってみるから採用されました。
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
A TypeScript framework for building MCP servers with client session management capabilities, supporting tools definition, authentication, image content, logging, and error handling.
Related MCP Servers
- AsecurityAlicenseAqualityA TypeScript-based server that allows calling other MCP clients from your own MCP client, facilitating task delegation and context window offloading for enhanced multi-agent interactions.Last updated -314JavaScriptMIT License
- AsecurityFlicenseAqualityA TypeScript-based MCP server designed for experimentation and integration with Calude Desktop and Cursor IDE, offering a modular playground for extending server capabilities.Last updated -21,1334JavaScript
- -securityFlicense-qualityA TypeScript framework for building Model Context Protocol (MCP) servers with automatic discovery and loading of tools, resources, and prompts.Last updated -67TypeScript
- -securityFlicense-qualityA simple TypeScript library for creating Model Context Protocol (MCP) servers with features like type safety, parameter validation, and a minimal code API.Last updated -1TypeScriptMIT License