mcpField
C
clef-mcp

clef-mcp

ローカル
github.com/HighlyLoadedEgoAI・エージェント73 週間前に更新

clef-mcp について

clef-mcpは、CloudflareのClef-Flash決定モデルをコーディングエージェントに提供するローカルMCPサーバーです。オフラインで動作し、型付きの質問を1回の推論でまとめて処理します。

主な機能

  1. 01選択・スコア・二択の型付き判定
  2. 02確率分布と信頼度の返却
  3. 031回あたり最大64問を処理
  4. 044種類のプロンプトと3つのリソース
  5. 05スクリプト・フック・デーモン向けCLI

活用シーン

  1. 01エージェントの次の行動を選択
  2. 02チケットの分類と振り分け
  3. 03インシデントの深刻度と影響を評価
  4. 04実行前に危険なコマンドを判定

MCP 対応

stdio経由でMCPクライアントに`clef_decide`ツール、4種類のプロンプト、3つの読み取り専用リソースを提供します。モデルはローカルで動作します。

設定

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

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

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

パッケージ
npmclef-mcp0.3.0

ツール

1

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
modelstringいいえ使用するモデル ID(既定値:CLEF_MODEL の clef-flash)。
stateanyはいデータとしてのタスク状態:判断に必要な事実(タスク、エラー、ログ、差分)を含む簡潔な文字列または JSON オブジェクトです。指示として扱われることはありません。シリアライズ後のサイズ上限:1 MB。モデルコンテキストは 16k トークンです。
optionsobjectいいえ追加オプション。現在は temperature のみで、仕様上効果はありません。
options.temperaturenumberいいえ将来の互換性のために受け付けますが、効果はありません。Clef はサンプリングせず、1 回のフォワードパスでスコアを算出します。
questionsobjectはい質問 ID -> 型付き質問のマップです。1 回の呼び出しにつき最大 64 件の質問を指定できます。すべての質問は 1 回のフォワードパスでまとめてスコアリングされるため、関連する判断をここでまとめてください。

詳細

clef_decide — 本番環境のインシデントに対する確率分布

clef-mcp

npm version npm downloads CI Official MCP Registry License: Apache-2.0

AI コーディングエージェントの「反射神経」:文章ではなく、確率を伴う構造化された判断。

ローカルのMCPサーバーで、エージェント(Claude Code、Codex、Cursor、ZCode、…)が単一のツール clef_decide を通じてClef-Flashの意思決定モデル(9B、Cloudflare による Apache-2.0)を利用できます。state と型指定された質問を渡すと、1 回のフォワードパスで選択肢に対する確率分布が得られます。完全にローカルで、オフラインで動作し、トークンを消費しません。


クイックスタート

# 1. Detect hardware, download the model (~6 GB) + llama.cpp runtime, verify checksum + inference
npx clef-mcp install

# 2. Register the MCP server + agent skill in your clients (zcode, claude-code, codex, cursor)
npx clef-mcp setup

# 3. Run the MCP server (stdio)
npx clef-mcp

clef-mcp(ステップ 3)は何もダウンロードしません。モデルが見つからない場合、ツール呼び出しはヒント付きの構造化された MODEL_NOT_INSTALLED エラーを返します。ステップ 1 と 2 は npx clef-mcp install --setup でまとめて実行できます。

LLM にそのまま尋ねるのではだめですか?

チャット LLMclef_decide
出力文章。解析が必要です厳密な JSON:選択肢ごとの確率
決定性実行ごとに変わります1 回のフォワードパスで、サンプリングなし
レイテンシ(1 回の判断)生成に数秒ローカルで約 0.5 秒
コンテキストコスト判断のたびに増加します固定の小さなスキーマ
プライバシープロバイダーによります100%デバイス上で処理され、オフラインでも動作
キャリブレーション感覚頼み学習済み選択肢スコアに対する softmax

最適な用途は、エージェントのループ内の判断ポイントです。次のアクション、ルーティング、分類、重大度、はい/いいえの判断などを、タスクごとに何十回も尋ねる場面です。

clef_decide ツール

{
  "state": {
    "task": "Fix failing tests",
    "error": "TypeError: Cannot read properties of undefined"
  },
  "questions": {
    "next_action": {
      "type": "choice",
      "instructions": "What should the coding agent do next?",
      "criteria": {
        "inspect": "Inspect the code and gather more information",
        "modify": "Modify the code",
        "test": "Run additional tests",
        "ask_user": "Ask the user for clarification"
      }
    },
    "confidence": {
      "type": "score",
      "instructions": "How confident are you in this decision?",
      "criteria": ["very_low", "low", "medium", "high", "very_high"]
    },
    "is_outage": { "type": "noul", "instructions": "Is a service down?" }
  }
}
型条件回答
choiceoption id → description のマップ、または単純なリスト選択肢ごとの確率
score順序付きリスト(インデックス = スコア)レベルごとの確率
noul任意の {"true": "...", "false": "..."}{"true": p, "false": 1-p}

応答は厳密に構造化され、文章は含まれません。各判断には、モデルが報告する confidence(ランタイムから送られる場合)に加えて、呼び出しのトークン usage が含まれます。

{
  "model": "clef-flash",
  "decisions": {
    "next_action": { "answer": { "inspect": 0.72, "modify": 0.12, "test": 0.14, "ask_user": 0.02 }, "confidence": 0.83 },
    "confidence":  { "answer": { "very_low": 0.01, "low": 0.04, "medium": 0.18, "high": 0.61, "very_high": 0.16 }, "confidence": 0.61 },
    "is_outage":   { "answer": { "true": 0.9, "false": 0.1 } }
  },
  "usage": { "input_tokens": 228, "output_tokens": 0, "latency_ms": 512 }
}

破壊的な呼び出しやセキュリティに関わる呼び出しでは、分布が明確な場合に限り、argmax に基づいて実行してください。つまり、最上位の p が 0.8 以上で、confidence も高い場合です。

1 回の呼び出しで最大64 件の質問をまとめて処理できます。すべて 1 回のフォワードパスでスコア付けされます。state は厳密にデータとして扱われ、実行されることも、サーバーへの指示として解釈されることもありません。

プロンプトとリソース

サーバーには MCP のプロンプト(あらかじめ用意された、判断形式の質問)が 4 つ含まれています。クライアントは prompts/list を通じて一覧を取得します。

プロンプト目的
incident-triage本番環境のインシデントに関するアクション、重大度、ユーザー影響の質問
next-actionコーディングエージェントが次に行うべきことと、その確信度
ticket-routingメッセージをチームと緊急度に分類
security-review脆弱性の有無、リスク尺度、最初の緩和策

また、リソースが 3 つあります(読み取り専用で、モデルは不要です)。

URI内容
clef-mcp://capabilitiesライブ JSON:モデル、ランタイム、制限、エラーコード
clef-mcp://evals/schema評価ケースの記述方法
clef-mcp://evals/dataset同梱の 30 件のデータセット

宣伝文句ではなく、実測値

Apple M4 Pro、Clef-Flash Q4_K_M(6 GB)、完全な MCP stdio 経路を通した単一リクエスト:

シナリオレイテンシ
コールドスタート(モデルの読み込みを含む。セッションごとに 1 回)約 4.4 秒
1 件の質問約 0.5 秒
10 件の質問、1 回の呼び出し約 2.9 秒
64 件の質問、1 回の呼び出し約 18.6 秒

品質ゲート:30 ケースの評価データセット(コーディング/セキュリティ/分類/ルーティング/はい・いいえ)で、実モデルの**合格率は 86.7%**です。ご自身で実行できます:clef-mcp evals

MCP クライアントに登録する

Claude Code
claude mcp add clef-mcp -- clef-mcp
# or, without a global install:
claude mcp add clef-mcp -- npx -y clef-mcp
Codex — ~/.codex/config.toml
[mcp_servers.clef-mcp]
command = "clef-mcp"
args = []
Cursor — .cursor/mcp.json
{
  "mcpServers": {
    "clef-mcp": { "command": "clef-mcp", "args": [] }
  }
}
ZCode — ~/.zcode/cli/config.json(ユーザースコープ、自動接続)
{
  "mcp": {
    "servers": {
      "clef-mcp": { "command": "clef-mcp", "args": [], "type": "stdio" }
    }
  }
}

すぐに使えるスニペット:examples/。

スクリプトとフック

MCP クライアントは不要です。フック、CI ジョブ、シェルスクリプトから同じモデルをワンショットで呼び出せます:

# Full document on stdin
echo '{"state": "checkout 500s after deploy", "questions": {"is_outage": {"type": "noul", "instructions": "Is a service down?"}}}' \
  | clef-mcp decide

# Or split across files
clef-mcp decide --questions questions.json --state state.json

stdout には厳密な JSON 形式の結果が出力されます(confidence と usage を含み、MCP ツールと同じ形式です)。エラーは構造化 JSON と終了コードで stderr に出力されます:2 は入力が無効、3 はモデルが未インストール、4 はランタイムが見つからない場合です。decide が何かをダウンロードすることはありません。

decide を通常どおり呼び出すたびにコールドスタートになります(モデルの読み込みを含めて数秒)。ゲートやトリアージには十分です。繰り返し呼び出す場合は、clef-mcp daemon を一度起動してください。モデルを CLEF_HOME 内のアクセス権を制限した Unix ソケット上でウォーム状態に保ちます(TCP ポートは使用せず、CLEF_DAEMON_IDLE 秒後にアンロードします。既定値は 600 秒です)。clef-mcp decide --daemon は 1 秒未満で応答し、デーモンが起動していない場合はコールド実行にフォールバックします。PreToolUse ガードと GitHub Actions のレシピについては、examples/hooks/ をご覧ください。

PreToolUse ガードは、モデルがコマンドを破壊的と判断した場合(p ≥ 0.9)にブロックし、エージェントにユーザーへの確認を求めるよう伝えます。ブロックは一時停止とエスカレーションであり、行き止まりではありません。このゲートは設計上、助言を目的としており、その旨も明示します。初日に実際に発動した際は、履歴を書き換える force push(p=0.94)を検出し、独自のバイパス経路も明らかにしました。その経路は現在修正済みで、レシピにも記載されています。

エージェントに教える(スキル)

スキーマはクライアントに clef_decide が何を受け付けるかを伝えます。エージェントには、いつ利用し、意思決定をどのように組み立てるかも知る必要があります。同梱の clef-decisions スキルでは、意思決定のパターン、バッチ処理、基準の記述、分布の解釈、エラーからの回復を扱います:

clef-mcp setup                                                    # automatic
cp -r skills/clef-decisions ~/.agents/skills/                     # manual, from repo
cp -r "$(npm root -g)/clef-mcp/skills/clef-decisions" ~/.agents/skills/  # from npm package

アーキテクチャ

flowchart LR
    subgraph clients [MCP clients]
        CC[Claude Code]
        CX[Codex]
        CU[Cursor]
        ZC[ZCode]
    end
    clients -- MCP stdio --> S[clef-mcp<br/>validation · limits · structured errors]
    S -- SystemOne adapter --> R[ClefRuntime<br/>llama.cpp subprocess<br/>127.0.0.1]
    R -- single forward pass --> M[("Clef-Flash<br/>9B · GGUF · local")]
    M -. probabilities .-> S -. strict JSON .-> clients

ClefRuntime インターフェース(load / decide / unload / health)によってエンジンが分離されており、MCP API を変更せずに MLX やリモートランタイムを組み込めます。ワイヤ形式は POST /v1/systemone で、llama.cpp と他の Clef ランタイムで共通のコントラクトです。

CLI

clef-mcp              # run the MCP server on stdio (default command)
clef-mcp decide       # one-shot decision (no MCP session): JSON in, JSON out — for hooks, CI, scripts
clef-mcp daemon       # keep the model warm on a local unix socket; `decide --daemon` uses it
clef-mcp install      # detect hardware → download model + runtime → verify checksum → verify inference
clef-mcp setup        # register the MCP server + agent skill in zcode / claude-code / codex / cursor
clef-mcp models       # list models/quantizations and install status
clef-mcp status       # runtime, model, memory summary
clef-mcp doctor       # full diagnosis (platform, RAM, GPU, binary, model, checksum*, inference, MCP config)
clef-mcp uninstall    # remove the model (and optionally the managed runtime)
clef-mcp evals        # run the evaluation dataset against the installed model

フラグ:install --quant Q8_0 --yes --skip-probe、install --setup、setup --clients zcode,cursor --no-skill、doctor --deep(モデルファイルのハッシュを再計算)、uninstall --runtime --yes。

ランタイム:llama.cpp と MLX

同じ ClefRuntime インターフェースの背後で動作する 2 つのローカルランタイム:

llama-cpp(既定)mlx
プラットフォームmacOS、Linux、WindowsmacOS/Apple Silicon のみ
モデルggml-org/Clef-Flash-GGUF の GGUFmlx-community/clef-flash-4bit の MLX 4-bit
追加要件なしPATH 上の uv(管理対象の Python 環境)
インストールclef-mcp installclef-mcp install --runtime mlx

CLEF_RUNTIME=mlx で実行時に切り替えられます(MCP サーバーのプロセスに設定する必要があります。例:クライアントの env ブロック内)。どちらも同じ POST /v1/systemone コントラクトを使用します。MLX スナップショットは、固定されたリビジョンの uv 管理下の huggingface_hub を使って CLEF_HOME に取得されます(グローバルな Python の状態には影響しません)。

設定

変数デフォルト意味
CLEF_MODELclef-flashモデル ID(呼び出しごとの model も指定できます)
CLEF_HOME~/.cache/clef-mcpキャッシュ/モデルの保存先
CLEF_RUNTIMEllama-cppllama-cpp | mlx
CLEF_LOG_LEVELerrorerror | warn | info | debug(stderr のみ)
CLEF_LLAMA_BIN–llama-server バイナリの明示的なパス(llama-cpp ランタイム)
CLEF_LLAMA_RELEASE_TAG最新のナイトリービルド管理対象の llama.cpp ビルドを固定します
CLEF_LLAMA_BATCH8192llama.cpp の物理バッチサイズ(複数の質問を含むリクエスト)
CLEF_MLX_UVPATH 上の uvuv バイナリの明示的な指定(MLX ランタイム)
CLEF_DAEMON_IDLE600デーモンがモデルをアンロードするまでのアイドル秒数(0 = アンロードしない)
CLEF_MAX_QUESTIONS641 回の呼び出しあたりの質問の最大数
CLEF_MAX_STATE_BYTES1048576シリアライズされた state の最大サイズ
CLEF_MAX_INSTRUCTION_CHARS10000質問ごとの指示の最大文字数

ランタイムの解決順序:CLEF_LLAMA_BIN → CLEF_HOME/runtime 内の管理対象バイナリ → PATH 上の llama-server。

ストレージ:CLEF_HOME/models/<model>/<quant>/(モデルと、リポジトリ/リビジョン/sha256/ライセンスを含む manifest.json)および CLEF_HOME/runtime/llama.cpp/。

モデルは固定された公式 GGUF 変換版(ggml-org/Clef-Flash-GGUF)からダウンロードされ、Hugging Face のコンテンツハッシュと照合して sha256 検証されます。clef-mcp によって再パッケージされることはありません。また、公式の MCP Registry に io.github.HighlyLoadedEgo/clef-mcp として登録されています。

エラー処理

{
  "error": {
    "code": "MODEL_NOT_INSTALLED",
    "message": "Clef model \"clef-flash\" is not installed.",
    "hint": "Run `clef-mcp install`."
  }
}

コード:MODEL_NOT_INSTALLED、MODEL_LOAD_FAILED、RUNTIME_NOT_FOUND、RUNTIME_INIT_FAILED、RUNTIME_NOT_SUPPORTED、INVALID_INPUT、CLEF_INFERENCE_FAILED、UNSUPPORTED_PLATFORM、OUT_OF_MEMORY、CHECKSUM_MISMATCH、DOWNLOAD_FAILED。モデルのコンテキスト長である 16k トークンを超える入力は、state の削減を促すヒントとともに拒否されます。

セキュリティとデータの取り扱い

  • ネットワークサーバー、テレメトリ、アカウントは不要です。すべてローカルで実行されます。
  • モデルは、明示的な install 時にのみ HTTPS 経由でダウンロードされ、チェックサムが検証されます。
  • state の内容はデータとしてモデルに渡されます。サーバーがこれを実行したり、指示として解釈したりすることはありません。
  • ファイルシステムへのアクセスは CLEF_HOME に制限されます(doctor で標準的な MCP クライアント設定パスを読み取る場合を除く)。
  • 管理対象のランタイムは公式の llama.cpp ビルドです。CLEF_LLAMA_RELEASE_TAG でバージョンを固定できます。

ポリシーの全文については、SECURITY.md をご覧ください。

開発

npm install
npm run build
npm test          # unit + integration (fake llama-server, no model needed)
npm run evals     # needs an installed model; exit code reflects pass rate

CONTRIBUTING.md および tests/evals/dataset.jsonl をご覧ください。

ライセンス

  • コード:Apache-2.0。
  • Clef/Clef-Flash モデル:© Cloudflare、Apache-2.0 — NOTICE をご覧ください。
  • llama.cpp ランタイム:© 各著作者、MIT ライセンス。公式のビルド済みバイナリとしてダウンロードされます。

コメント

MCP は初めてですか?

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

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