FastMCP - TypeScript MCPサーバーフレームワーク
プロジェクト概要
FastMCPは、Model Context Protocol (MCP) サーバーを構築するために設計されたTypeScriptフレームワークです。クライアントセッションを処理できる高性能なMCPサーバーを迅速に作成するための完全なツールと機能を提供します。
プロジェクトアドレス: https://github.com/punkpeye/fastmcp
主要な特徴
基本機能
- シンプルなツール、リソース、プロンプト定義: サーバー機能を定義するための直感的なAPIを提供
- 認証サポート: 安全なアクセスを確保するための組み込み認証メカニズム
- セッション管理: クライアントセッションの処理と状態管理をサポート
- マルチメディアコンテンツサポート: 画像および音声コンテンツの返却をサポート
- ログ記録: デバッグと監視のための完全なログシステム
- エラー処理: 統一されたエラー処理メカニズム
- Server-Sent Events (SSE): リアルタイムデータプッシュをサポート
- CORSサポート: デフォルトでクロスオリジンリソース共有を有効化
高度な特徴
- 進捗通知: ツール実行中のリアルタイムな進捗フィードバック
- 型付きサーバーイベント: TypeScript型安全なイベントシステム
- プロンプトパラメータの自動補完: スマートなパラメータ補完機能
- サンプリングリクエスト: AIモデルのサンプリングリクエストをサポート
- 自動化されたSSEハートビート: 接続の安定性を維持
- ルートディレクトリ管理: ファイルシステムのルートディレクトリ設定
- CLIツール: テストとデバッグのためのコマンドラインツールを提供
インストールと使用方法
インストール
npm install fastmcp
基本的な例
import { FastMCP } from "fastmcp";
import { z } from "zod";
const server = new FastMCP({
name: "My Server",
version: "1.0.0",
});
server.addTool({
name: "add",
description: "Add two numbers",
parameters: z.object({
a: z.number(),
b: z.number(),
}),
execute: async (args) => {
return String(args.a + args.b);
},
});
server.start({
transportType: "stdio",
});
主要な機能モジュール
1. ツール定義 (Tools)
ツールを使用すると、サーバーはクライアントが実行可能な関数を公開できます。これらの関数はクライアントから呼び出すことができ、LLMが操作を実行するために使用できます。
サポートされているスキーマ検証ライブラリ
- Zod: 最も人気のあるTypeScriptスキーマ検証ライブラリ
- ArkType: 最新の型検証ライブラリ
- Valibot: 軽量なスキーマ検証ライブラリ
Zodの例
import { z } from "zod";
server.addTool({
name: "fetch-zod",
description: "Fetch the content of a url (using Zod)",
parameters: z.object({
url: z.string(),
}),
execute: async (args) => {
return await fetchWebpageContent(args.url);
},
});
ツールアノテーション
ツールにはアノテーションを含めることができ、より豊富なコンテキストと制御情報を提供します。
server.addTool({
name: "fetch-content",
description: "Fetch content from a URL",
parameters: z.object({
url: z.string(),
}),
annotations: {
title: "Web Content Fetcher",
readOnlyHint: true,
openWorldHint: true,
},
execute: async (args) => {
return await fetchWebpageContent(args.url);
},
});
2. リソース管理 (Resources)
リソースは、MCPサーバーがクライアントに提供したいあらゆる種類のデータを表します。以下を含みます。
- ファイルの内容
- スクリーンショットと画像
- ログファイル
- その他のデータ
server.addResource({
uri: "file:///logs/app.log",
name: "Application Logs",
mimeType: "text/plain",
async load() {
return {
text: await readLogFile(),
};
},
});
リソーステンプレート
server.addResourceTemplate({
uriTemplate: "file:///logs/{name}.log",
name: "Application Logs",
mimeType: "text/plain",
arguments: [
{
name: "name",
description: "Name of the log",
required: true,
},
],
async load({ name }) {
return {
text: `Example log content for ${name}`,
};
},
});
3. プロンプト管理 (Prompts)
プロンプトを使用すると、サーバーは再利用可能なプロンプトテンプレートとワークフローを定義できます。
server.addPrompt({
name: "git-commit",
description: "Generate a Git commit message",
arguments: [
{
name: "changes",
description: "Git diff or description of changes",
required: true,
},
],
load: async (args) => {
return `Generate a concise but descriptive commit message for these changes:\n\n${args.changes}`;
},
});
4. 認証
FastMCPはカスタム認証機能をサポートしています。
import { AuthError } from "fastmcp";
const server = new FastMCP({
name: "My Server",
version: "1.0.0",
authenticate: ({ request }) => {
const apiKey = request.headers["x-api-key"];
if (apiKey !== "123") {
throw new Response(null, {
status: 401,
statusText: "Unauthorized",
});
}
return {
id: 1,
};
},
});
5. Server-Sent Events (SSE)
リアルタイム通信をサポートするSSE機能。
server.start({
transportType: "sse",
sse: {
endpoint: "/sse",
port: 8080,
},
});
6. セッション管理
FastMCPは、各クライアント接続に新しいサーバーインスタンスを割り当て、1:1通信を実現します。
server.on("connect", (event) => {
console.log("Client connected:", event.session);
});
server.on("disconnect", (event) => {
console.log("Client disconnected:", event.session);
});
開発ツール
テストとデバッグ
npx fastmcp dev src/examples/addition.ts
npx fastmcp inspect src/examples/addition.ts
Claude Desktop統合
Claude Desktopに設定を追加します。
{
"mcpServers": {
"my-mcp-server": {
"command": "npx",
"args": ["tsx", "/PATH/TO/YOUR_PROJECT/src/index.ts"],
"env": {
"YOUR_ENV_VAR": "value"
}
}
}
}
実際のアプリケーション事例
FastMCPは、以下の複数のプロジェクトで採用されています。
- apinetwork/piapi-mcp-server: Midjourney/Flux/Klingなどを使用してメディアコンテンツを生成
- domdomegg/computer-use-mcp: コンピューター制御ツール
- Meeting-Baas/meeting-mcp: 会議ロボットとトランスクリプト管理
- drumnation/unsplash-smart-mcp-server: Unsplash画像検索統合
- aiamblichus/mcp-chat-adapter: LLMチャット完了インターフェース
技術的な利点
- 型安全: 完全なTypeScriptサポートにより、コード品質を確保
- 柔軟なスキーマ: さまざまな検証ライブラリをサポートし、さまざまなニーズに対応
- 最新のアーキテクチャ: 最新のWeb標準とベストプラクティスに基づく
- 豊富な機能: 基本機能から高度な機能までを包括的にサポート
- 拡張性: モジュール設計により、機能拡張が容易
- 開発者フレンドリー: 充実したCLIツールとデバッグサポート
まとめ
FastMCPは、強力で使いやすいTypeScriptフレームワークであり、MCPサーバーを構築するための完全なソリューションを提供します。単純なツール統合から複雑なAIサービス構築まで、FastMCPは必要な機能と柔軟性を提供できます。豊富な機能セットと優れた開発者エクスペリエンスにより、MCPエコシステムにおける重要なツールとなっています。