fp-conv について
fp-convは、数値表現や精度を扱う開発者向けに、浮動小数点形式と整数形式の変換ツールをAIエージェントに提供するMCPサーバーです。プリセット形式とカスタム形式に対応し、エンコードの詳細や精度損失を示します。
主な機能
- 01数値形式のエンコード、デコード、変換
- 02浮動小数点、整数、カスタム形式に対応
- 03丸めとオーバーフロー動作の指定
- 04形式のパラメーターと特殊値の確認
- 05精度損失の計算と表示
活用シーン
- 01ビットパターンが表す値の確認
- 02形式変換による精度損失の比較
- 03カスタム数値形式でのエンコード検証
MCP 対応
MCPサーバーは、形式の検索、数値のエンコードとデコード、形式変換のツールをクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
5掲載時のツール一覧 · 1 日前に更新
このツールにパラメーターはありません。
詳細
fp-conv-mcp
AI エージェントに浮動小数点変換用のローカルツールを直接提供する、Model Context Protocol(MCP)サーバーです。fp-conv ウェブアプリのサーバー側コンパニオンであり、同じ変換ライブラリを再利用しています。
FP32、FP64、FP16、BF16、TF32、FP8、FP6、FP4、MX スケール/要素型、符号付き/符号なし整数、カスタム形式間で数値をエンコード、デコード、変換できます。丸めモード、オーバーフロー(飽和)動作に対応し、精度損失を計算します。
ツール
| ツール | 説明 |
|---|---|
list_formats | 利用可能なすべての形式プリセット(キー、名前、カテゴリ、パラメーター)を一覧表示します。 |
get_format_info | 形式の詳細情報(バイアス、範囲、特殊値への対応)を取得します。 |
encode_number | 10 進数値(または Infinity/NaN)を形式にエンコードします。バイナリ、16 進数、構成要素を返します。 |
decode_bits | バイナリまたは 16 進数のビットパターンを形式にデコードします。10 進数値と構成要素を返します。 |
convert_format | 値をある形式から別の形式に変換します。 |
convert_format では、入力形式の標準のデフォルト値を使用して構成する value、または入力形式のビットパターンを指定どおりに使用するバイナリ/16 進数の bits のいずれかを指定します。どちらか一方のみが必須です。roundingMode と overflowMode パラメーターは、出力形式のエンコード時にのみ適用されます。encode_number では、これらのパラメーターは単一の形式に適用されます。
convert_format は、NaN の入力値をどう扱うかを決める nanMode も受け取ります。canonical(デフォルト)では出力形式の正規の quiet NaN が返され、preserve では符号と、収まるだけの上位ペイロードビットを保持して quiet 化します(IEEE 754-2019 §6.2.3)。NaN の符号とペイロードはビットパターンにのみ存在するため、bits として指定してください。
{ "bits": "0xFFC00000", "inputFormat": "fp32", "outputFormat": "fp16", "nanMode": "preserve" }
では 0xFE00 が返されますが、canonical では 0x7E00 が返されます。NaN の動作を参照してください。
形式
すべてのツールでは、プリセットキー(文字列)またはカスタム形式オブジェクトを受け付けます。
プリセットキー
| カテゴリ | キー |
|---|---|
| IEEE 754 | "fp64"、"fp32"、"fp16" |
| ML | "bf16"、"tf32" |
| OCP | "fp8_e5m2"、"fp8_e4m3"、"fp6_e3m2"、"fp6_e2m3"、"fp4_e2m1"、"e8m0"、"mxint8" |
| 整数 | "int32"、"uint32"、"int16"、"uint16"、"int8"、"uint8"、"int4"、"uint4" |
カスタム形式
浮動小数点数の場合:
{ "signBits": 1, "exponentBits": 5, "mantissaBits": 10, "bias": 15, "hasInfinity": true, "hasNaN": true }
| フィールド | 必須 | 説明 |
|---|---|---|
signBits | いいえ | 符号ビット数。0 または 1(デフォルトは 1) |
exponentBits | はい | 指数ビット数 |
mantissaBits | はい | 仮数(小数部)ビット数 |
bias | いいえ | 指数バイアス。デフォルトは 2^(exponentBits-1) - 1 |
hasInfinity | いいえ | この形式で ±Infinity を表現できるかどうか(デフォルトは true) |
hasNaN | いいえ | この形式で NaN を表現できるかどうか(デフォルトは true)。hasInfinity を設定した場合はレイアウトによって決まります。仮数フィールドがある場合は true(ここに false を渡すとエラー)、ない場合は false です |
hasSubnormals | いいえ | 指数フィールドが 0 のとき、非正規化数/ゼロの領域になるかどうか(デフォルトは true)。E8M0 のようなスケール型では false に設定してください。 |
整数の場合:
{ "bits": 16, "signed": true }
| フィールド | 必須 | 説明 |
|---|---|---|
bits | はい | ビット幅の合計(1~64) |
signed | いいえ | 符号付き2の補数の場合は true、符号なしの場合は false(デフォルトは true) |
fractionBits | いいえ | 暗黙の 2^-fractionBits スケール(デフォルトは 0。MXINT8 では 6) |
symmetric | いいえ | 最小の負数のエンコーディングを使わず、対称な範囲にするかどうか(デフォルトは false) |
精度に関する注意: エンコード、デコード、変換は、どのビット幅でも正確です。JSON の数値では正確に表せない値(64ビット整数の最大値、53ビットを超える仮数、fp64 の範囲外の大きさ)は、丸められた数値ではなく、10進数の数字列として返されます。カスタム形式のフラグを指定する場合は、すべて JSON のブール値でなければなりません。
クライアントの設定
MCP サーバーの設定方法について、以下の例を参照してください。
VS Code(.vscode/mcp.json)
{
"servers": {
"fp-conv": {
"type": "stdio",
"command": "npx",
"args": ["-y", "fp-conv-mcp"]
}
}
}
Claude Code
claude mcp add fp-conv -- npx -y fp-conv-mcp
GitHub Copilot CLI
copilot mcp add fp-conv -- npx -y fp-conv-mcp
Cursor(.cursor/mcp.json)/Windsurf/Claude Desktop
{
"mcpServers": {
"fp-conv": {
"command": "npx",
"args": ["-y", "fp-conv-mcp"]
}
}
}
Antigravity(~/.gemini/config/mcp_config.json)
{
"mcpServers": {
"fp-conv": {
"command": "npx",
"args": ["-y", "fp-conv-mcp"]
}
}
}
Streamable HTTP(ローカルのみ)
代わりに、サーバーはローカルの Streamable HTTP エンドポイントを実行できます。
npm install -g fp-conv-mcp
fp-conv-mcp --http --host 127.0.0.1 --port 3001
# endpoint: http://127.0.0.1:3001/mcp
セキュリティ: HTTP トランスポートには認証がなく、デフォルトでは
127.0.0.1にバインドされます。独自の認証を追加し、その影響を理解している場合を除き、ループバック以外のインターフェースにバインドしないでください。DNS リバインディングやウェブページからのクロスサイトリクエストを防ぐため、
Hostがループバック名または--hostのアドレスでないリクエスト、およびOriginが別のホストを指定するリクエストは、サーバーによって拒否(403)されます。ワイルドカードバインド(--host 0.0.0.0)ではサーバー自身の名前を特定できないため、Hostのチェックは省略され、ループバックまたはHostと一致するOriginのみが受け付けられます。リクエスト本文は 1 MiB までに制限され、30 分間アイドル状態のセッションは終了します。
使い方
接続したら、エージェントに次のような質問をできます。
- 「3.14159 を bf16 としてエンコードして、バイナリを表示してください。」
- 「fp16 のビットパターン
0x3E00をデコードすると、何になりますか?」 - 「0.1 を fp32 から fp8 e4m3 に変換して、精度の損失を教えてください。」
- 「サポートされている形式をすべて一覧表示してください。」
デバッグ
MCP Inspectorを使用してください。
npx @modelcontextprotocol/inspector npx fp-conv-mcp
次に、Tools タブを開いて List Tools をクリックし、任意のツールを試してください。
開発
このパッケージは、npm ワークスペースとしてfp-convリポジトリに含まれています。公開バンドル(dist/index.js)は、リポジトリのルートにある共有変換エンジン(lib/floating-point.js)とツール定義(src/webmcp.js)を esbuild でインライン化し、信頼できる唯一の情報源を維持します。
npm install # from the repo root
npm run build --workspace fp-conv-mcp
npm test --workspace fp-conv-mcp
ライセンス
MIT © Spencer Williams
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。