mcpField
F
fp-conv

fp-conv

ローカル
github.com開発ツール82 日前に更新

fp-conv について

fp-convは、数値表現や精度を扱う開発者向けに、浮動小数点形式と整数形式の変換ツールをAIエージェントに提供するMCPサーバーです。プリセット形式とカスタム形式に対応し、エンコードの詳細や精度損失を示します。

主な機能

  1. 01数値形式のエンコード、デコード、変換
  2. 02浮動小数点、整数、カスタム形式に対応
  3. 03丸めとオーバーフロー動作の指定
  4. 04形式のパラメーターと特殊値の確認
  5. 05精度損失の計算と表示

活用シーン

  1. 01ビットパターンが表す値の確認
  2. 02形式変換による精度損失の比較
  3. 03カスタム数値形式でのエンコード検証

MCP 対応

MCPサーバーは、形式の検索、数値のエンコードとデコード、形式変換のツールをクライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"sw23-fp-conv": {
"command": "npx",
"args": [
"-y",
"fp-conv-mcp"
]
}
}
}
起動コマンドnpx -y fp-conv-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmfp-conv-mcp1.5.1

ツール

5

掲載時のツール一覧 · 1 日前に更新

このツールにパラメーターはありません。

詳細

fp-conv-mcp

npm

AI エージェントに浮動小数点変換用のローカルツールを直接提供する、Model Context Protocol(MCP)サーバーです。fp-conv ウェブアプリのサーバー側コンパニオンであり、同じ変換ライブラリを再利用しています。

FP32、FP64、FP16、BF16、TF32、FP8、FP6、FP4、MX スケール/要素型、符号付き/符号なし整数、カスタム形式間で数値をエンコード、デコード、変換できます。丸めモード、オーバーフロー(飽和)動作に対応し、精度損失を計算します。

ツール

ツール説明
list_formats利用可能なすべての形式プリセット(キー、名前、カテゴリ、パラメーター)を一覧表示します。
get_format_info形式の詳細情報(バイアス、範囲、特殊値への対応)を取得します。
encode_number10 進数値(または 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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。