Ffl Mcp – Give Ai A "send File" Capability Via P2p (local First)
ローカルFfl Mcp – Give Ai A "send File" Capability Via P2p (local First) について
ffl-mcp は ffl を利用するローカル MCP サーバーで、P2P または HTTP のリンクを通じて AI にファイルの共有とダウンロードを行わせます。ファイル内容は LLM に送信されず、共同デバッグやマシン間の転送に使えます。
主な機能
- 01テキスト、単一ファイル、フォルダー、複数ファイルの共有
- 02P2P または HTTP によるダウンロード
- 03受信者認証とダウンロード回数によるリンク保護
- 04受信者認証用 RSA キーの生成
- 05共有セッションの一覧、確認、停止
活用シーン
- 01ローカルのログやデータベースファイルを共同作業者と共有
- 02デバッグ用ファイルをマシン間で転送
- 03認証付き共有リンクからダウンロード
MCP 対応
ローカルの ffl-python バインディングを使い、共有、ダウンロード、キー生成、セッション管理のツールを MCP クライアントに提供します。ファイル内容は LLM に送信されません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ffl-mcp(ローカルのみ)
ffl 用の MCP サーバーです。AI があなたに代わってあらゆるものを共有できます。
ffl を基盤としており、あらゆるファイルやフォルダーを HTTPS リンクに変換します。
この MCP サーバーは、ローカルで ffl-python バインディングを使用します。
ファイルの内容は LLM に送信されません。モデルはローカルの ffl を呼び出すだけです。
このデモでは、共同デバッグの様子を紹介します。左側の Claude が DB とログを含むローカル環境を P2P リンクで共有し、右側の Claude がダウンロードしてエラーを診断します。このシナリオでは、2 つの Claude は別々のマシンで作業する異なる人を表しています。
目次
インストール
⚡ 便利な短縮 URL
- Linux/macOS:
curl -fsSL https://fastfilelink.com/mcp/install.sh | bash- Windows(スクリプト):
iwr -useb https://fastfilelink.com/mcp/install.ps1 | iex🔒
fastfilelink.com/mcp/*は GitHub へのリダイレクトです。直接アクセスしたい場合は、以下の GitHub URL を使用してください。
Windows — GUI インストーラー
最新リリースから ffl-mcp-setup.exe をダウンロードして実行します。
Claude Desktop、Claude Code、Codex、Grok Build にサーバーを登録します。
コマンドラインは不要です。インストーラーが ffl-mcp を Claude Desktop と Claude Code に自動的に登録します。
Linux / macOS — 1 行コマンド
curl -fsSL https://raw.githubusercontent.com/nuwainfo/ffl-mcp/refs/heads/main/scripts/Install.sh | bash
最新の GitHub リリースからプラットフォーム用バイナリをダウンロードし、ffl-mcp install を実行して Claude、Codex、Grok Build に登録します。お使いのプラットフォーム用のバイナリがない場合は、自動的に uvx にフォールバックします。
Windows — 1 行コマンド(PowerShell)
iwr -useb https://raw.githubusercontent.com/nuwainfo/ffl-mcp/refs/heads/main/scripts/Install.ps1 | iex
最新の GitHub リリースから ffl-mcp.exe をダウンロードし、Claude、Codex、Grok Build に登録します。
uvx(バイナリなし、uv が必要)
uvx --from git+https://github.com/nuwainfo/ffl-mcp install
対象は --target で指定できます(デフォルト:すべて):
uvx --from git+https://github.com/nuwainfo/ffl-mcp install --target claude-desktop,claude-code,codex,grok-build
uvx --from git+https://github.com/nuwainfo/ffl-mcp install --print
claude-code は Claude Code CLI を使用します。codex は Codex クライアントが使用するネイティブの ~/.codex/config.toml 設定ファイルに書き込みます。grok-build は ~/.grok/config.toml に書き込みます。この設定は Grok Build が /mcps から再読み込みできます。
従来のターゲット名(claude-cli、codex-cli、codex-desktop、grok)もエイリアスとして引き続き使用できます。インストーラーは、変更する設定ファイルのタイムスタンプ付きバックアップを最初に作成します。
カスタム設定パスを指定するには、ファイルを渡します:
uvx --from git+https://github.com/nuwainfo/ffl-mcp install --config /path/to/claude_desktop_config.json
uvx --from git+https://github.com/nuwainfo/ffl-mcp install --codex-config /path/to/codex/config.toml
uvx --from git+https://github.com/nuwainfo/ffl-mcp install --grok-config /path/to/grok/config.toml
Claude Code クラウドセッション
クラウドでホストされる Claude Code セッションは、新しいコンテナーで開始します。新しいセッションごとに ffl-mcp
を使用できるようにするには、セッションのタイトルバーにあるクラウド環境メニューを開き、
Edit を選択して、以下を環境の Setup script として追加します:
claude mcp add ffl -s user -e FFL_USE_STDIN=1 -- uvx --from git+https://github.com/nuwainfo/ffl-mcp ffl-mcp
セットアップスクリプトは、新しいセッションが開始するたびに実行されます。最初の新しいセッションで、
claude mcp list を実行し、ffl サーバーが登録されたことを確認します。
直接実行(開発用)
前提条件:uv がインストールされていること。
# optional safety: restrict file sharing to a directory
export ALLOWED_BASE_DIR="$HOME/Downloads"
# optional: use stdin for text/base64 instead of temp files
export FFL_USE_STDIN=1
uvx --from git+https://github.com/nuwainfo/ffl-mcp ffl-mcp
MCP 設定(手動 JSON)
{
"mcpServers": {
"ffl": {
"command": "uvx",
"args": ["--from", "git+https://github.com/nuwainfo/ffl-mcp", "ffl-mcp"],
"env": {
"ALLOWED_BASE_DIR": "/Users/you/Downloads",
"FFL_USE_STDIN": "1"
}
}
}
}
ツール
共有
| ツール | 入力 |
|---|---|
fflShareText(text, name?, ...) | プレーンテキスト |
fflShareBase64(dataB64, name?, ...) | バイナリデータ(Base64 エンコード) |
fflShareFile(path, name?, ...) | ローカルの単一ファイルまたはフォルダー |
fflShareFiles(paths, name?, ...) | 複数のファイル(ffl が自動的に ZIP 化して 1 つのダウンロードにまとめます) |
| すべての共有ツールに共通するオプション: |
| オプション | デフォルト | 説明 |
|---|---|---|
e2ee | False | エンドツーエンド暗号化 |
qrInTerminal | False | ASCII QR アートを返します(応答の qrCode) |
authUser / authPassword | — | リンクを保護する HTTP Basic 認証 |
maxDownloads | 1 | N 回ダウンロードされた後、配信を停止します(P2P のみ) |
timeoutSeconds | 1800 | 非アクティブ状態のタイムアウト(秒)(P2P のみ) |
recipientAuth | — | pickup(6 桁のコード)、pubkey(RSA)、pubkey+pickup、または email(OTP) |
pickupCode | auto | pickup モードで使用する特定の受け取りコード |
recipientPublicKey | — | pubkey モードで使用する .fflpub ファイルのパス |
recipientEmail | — | email OTP モードで使用するメールアドレス。複数指定する場合はカンマ区切り |
alias | — | カスタムリンクエイリアス(例:my-release)。Standard 以上のアカウントが必要です |
receipt | — | 受信者がダウンロードしたときにメールで通知します |
receiptConfirm | — | ダウンロード前に受信者の確認を必須にします。メッセージまたは "" を渡します |
forceRelay | False | WebRTC を無効にし、すべてのトラフィックをトンネル経由でルーティングします |
transport | — | p2p または relay を明示的に選択します。p2p は、自動検出されたマネージドサンドボックスのリレープロファイルより優先されます。 |
preferredTunnel | — | 優先する ffl トンネル(例:default、default:web、cloudflare、ngrok、bore)。呼び出し元が指定した値は、自動プロファイル選択より優先されます。 |
port | — | ローカル HTTP サーバーのポート(デフォルトでは自動検出)。固定トンネルで役立ちます。 |
invite | False | 生成された共有リンクを含む ffl の招待ページをローカルブラウザーで開きます。 |
enableReporting | False | ffl の診断エラー報告を有効にします。デフォルトでは無効です。 |
upload | — | P2P の代わりに FFL サーバーへアップロードします(例:"1 day"、"6 hours")。Standard 以上のアカウントが必要です |
resumeUpload | False | 中断したアップロードを再開します |
proxy | — | プロキシ URL(例:socks5://127.0.0.1:9050) |
fflShareFile / fflShareFiles の追加オプション:
| オプション | デフォルト | 説明 |
|---|---|---|
preview | False | 返されるリンクに ?preview=true を追加し、通常のフローティングカードではなく、ffl のダウンロードページを全画面プレビュー表示で直接開きます。 |
exclude | — | 除外する glob または正規表現パターン。カンマ区切りで指定します(例:*.pyc,__pycache__ または re:\.env$) |
pause | — | サーバーへのアップロードを 1~99 の割合で一時停止します。upload が必要です。 |
vfs | False | VFS サーバーとして公開します(vfs:// URI)。fflShareFile のみ |
preferredTunnel | — | 今回以降の実行で優先するトンネルを設定します(cloudflare、ngrok、bore など)。 |
preview が影響するのは、返されるリンクのクエリ文字列のみです。単一ファイル、フォルダー、複数ファイルのいずれの共有でも機能します。プレビューを支えるプレビュー用のサイドカールート(/manifest、/file、/thumb。マニフェスト/サムネイルデータ)は、これとは別の常時稼働する仕組みです。MCP はフォルダー共有と複数ファイル共有では preview の設定にかかわらず自動的に起動し、単一ファイル共有では起動しません。
マネージドサンドボックスポリシー: ChatGPT Work、Grok Bot、クラウドホスト型 Codex サンドボックス、または Claude Code のクラウドセッション(Claude Code on the web / claude.ai/code、または Claude アプリから開始したリモートセッション)では、直ちに forceRelay=True と preferredTunnel="default:web" を使用してください。これらの環境では、プロキシ経由のアウトバウンド HTTPS しか許可されず、使用可能な UDP/ICE や生の TCP トンネルがない場合があります。このルールは、ローカルの Claude Code CLI、ローカルの Codex CLI、ローカルの Grok Build、または一般的なユーザーマシンには適用しないでください。
応答フィールド: sessionId、link、pid、transportDecision、qrCode?(qrInTerminal=True の場合は ASCII アート)、debugLogPath?。transportDecision には、選択されたモード、理由、自動選択かどうか、有効な preferredTunnel が報告されます。
リモートエージェントからの共有
fflHowToShareFromRemoteAgent() は、ユーザーが自分のコンピューター上にあるファイルやフォルダーの共有を依頼したときに、Grok Bot のようなクラウドでホストされたアシスタントに手順を案内します。アシスタントに、そのコンピューター上で操作を行い、既存の ffl/ffl.com があればそれを使うか、固定された内部パッケージパスに頼らず、インストール済みの ffl-mcp または ffl-python パッケージにバンドルされたランタイムを探すよう指示します。Claude Code、Codex、Cursor などのローカルエージェントは fflShareFile を直接使うため、このツールは必要ありません。
ダウンロード
fflDownload(url, outputPath?, resume?, authUser?, authPassword?,
recipientAuth?, pickupCode?, recipientPrivateKey?, proxy?,
enableReporting?)
-> {ok, returncode, outputPath?, transferMode?, transferInfo?, message?, ...}
FastFileLink URL からダウンロードします(可能な場合は WebRTC P2P、失敗した場合は HTTP にフォールバック)。また、任意の HTTP(S) URL からもダウンロードできます(wget のように動作します)。
transferMode | 意味 |
|---|---|
webrtc_p2p | WebRTC による直接のピアツーピア接続(最速) |
p2p_tcp / p2p_quic | 生の TCP/QUIC による直接のピアツーピア接続 |
http_fallback | P2P が失敗した場合の HTTP リレー |
http_direct | 通常の HTTP ダウンロード(FastFileLink 以外の URL) |
認証が必要なリンクの場合は、recipientAuth と pickupCode(ピックアップモード)、または recipientPrivateKey(公開鍵モード)を渡します。
トラブルシューティングのために ffl の診断エラー報告を有効にする場合に限り、enableReporting=True を設定してください。
鍵の生成
fflKeygen(name?) -> {ok, returncode, output}
パスワード不要の pubkey 受信者認証に使用する RSA 鍵ペアを生成します。
<name>.fflpub— 送信者と共有します(recipientPublicKeyとして渡します)<name>.fflkey— 秘密に保管します(ダウンロード時にrecipientPrivateKeyとして渡します)
セッション管理
fflListSessions()— アクティブな共有セッションを一覧表示しますfflStopSession(sessionId)— セッションを終了しますfflGetSession(sessionId)— セッションの詳細を取得しますfflGetSessionEvents(sessionId, limit=50)— Webhook イベントを取得します
注意事項
FFL_USE_STDIN=1を設定すると、テキスト/base64 ペイロードをディスクに書き込まずに済みます。- フォルダーと複数ファイルのプレビューでは、FFL がプレビュー用ルートを登録できるよう、ローカルの webhook サーバーを起動します。
FFL_DEBUG=1を設定すると、ffl の出力が一時ログファイルに保存されます。パスはdebugLogPathとして返されます。固定パスを使うには、FFL_DEBUG=/path/to/log.txtを設定します。ALLOWED_BASE_DIRを設定すると、fflShareFile/fflShareFilesが特定のディレクトリ内だけを対象にするよう制限できます。- インストール中、ffl-mcp は
example.comとstun.cloudflare.comを並行してプローブし、最大 0.5 秒待ちます。すべての応答が合成アドレスの198.18.0.0/15の範囲内であれば、FFL_NETWORK_PROFILE=synthetic-dns-198-18を登録します。その後の共有では、P2P を待たずにdefault:web経由のリレーがすぐに使われます。タイムアウト、失敗、応答の混在、または通常のネットワークの場合、プロファイルは書き込まれません。 - インストール時の結果を上書きするには、
installに--env FFL_NETWORK_PROFILE=p2pを渡します。または、1 回の直接 P2P 接続を試すには、共有ツールのtransport値にp2pを指定します。
テスト
# Unit + binary tests (no network needed)
python -m unittest discover -s tests -p "*Test.py" -v
# All tests including share/download round-trips (requires network)
FFL_INTEGRATION_TESTS=1 python -m unittest discover -s tests -p "*Test.py" -v
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。