mcpField
C
clef-mcp

clef-mcp

本地服务
github.com/HighlyLoadedEgoAI 与智能体73 周前更新

关于 clef-mcp

clef-mcp 是供编码 Agent 使用的本地 MCP 服务,通过 Cloudflare 的 Clef-Flash 决策模型返回结构化概率分布。它可离线运行,并在一次推理中批量处理类型化决策问题。

主要功能

  1. 01支持选择、评分和是非决策
  2. 02返回概率分布与置信度
  3. 03每次调用最多处理 64 个问题
  4. 04提供四种提示词和三项资源
  5. 05支持脚本、钩子和守护进程的 CLI

适用场景

  1. 01选择 Agent 的下一步操作
  2. 02分类并路由工单
  3. 03评估事件严重程度和影响
  4. 04执行前检查高风险命令

MCP 相关

通过 stdio 向 MCP 客户端提供 `clef_decide` 工具、四种提示词和三项只读资源。模型在本地运行。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 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 在单次前向传播中评分,不进行采样。
questionsobject是问题 ID -> 带类型的问题的映射。每次调用最多 64 个问题;所有问题会在一次前向传播中一起评分,因此请在此处批量处理相关决策。

详细介绍

clef_decide — 生产事故的概率分布

clef-mcp

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

AI 编码 Agent 的“反射”:基于概率的结构化决策,而非散文。

本地 MCP 服务,让 Agent(Claude Code、Codex、Cursor、ZCode,……)通过单个工具 clef_decide 使用 Clef-Flash 决策模型(9B,Cloudflare 以 Apache-2.0 协议开源)。传入 state 和类型化问题,一次前向计算即可获得各选项的概率分布。完全本地运行、离线可用,不消耗令牌。


快速开始

# 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。

为什么不直接询问大模型?

聊天大模型clef_decide
输出散文,需要自行解析严格 JSON:每个选项对应一个概率
确定性每次运行结果不同单次前向计算,不采样
延迟(1 次决策)生成耗时数秒本地约 0.5 s
上下文成本随每次决策递增固定的小型架构
隐私取决于提供商100% 在设备端运行,支持离线
校准凭感觉对训练得到的选项分数应用 softmax

最佳适用场景:Agent 工作循环中的决策点——下一步操作、路由、分类、严重程度、是非判断——每项任务会询问数十次。

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?" }
  }
}
类型条件答案
choice映射 option 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 }
}

仅当概率分布明确时才根据最大概率选项采取行动——对于破坏性操作或与安全相关的调用,最高概率 p ≥ 0.8 且 confidence 较高。

每次调用最多批量处理 64 个问题——所有问题都会在一次前向计算中评分。state 严格视为数据:绝不执行,也绝不解释为服务端指令。

提示词与资源

服务提供四种 MCP 提示词(预设的决策型请求,客户端通过 prompts/list 列出):

提示词用途
incident-triage针对生产事故询问操作、严重程度和用户影响
next-action编码 Agent 接下来该做什么,以及置信度
ticket-routing将消息分类到团队并确定紧急程度
security-review漏洞是非判断、风险等级和首项缓解措施

以及三种资源(只读,无需模型):

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 路径发送单个请求:

场景延迟
冷启动(包括模型加载,每个会话一次)~4.4 s
1 个问题~0.5 s
1 次调用处理 10 个问题~2.9 s
1 次调用处理 64 个问题~18.6 s

质量门槛: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 任务和 Shell 脚本都可以直接调用同一个模型:

# 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 结果(格式与 MCP 工具相同,包括 confidence 和 usage);错误以结构化 JSON 写入 stderr,并使用以下退出代码:2 输入无效,3 模型未安装,4 缺少运行时。decide 不会下载任何内容。

每次直接调用 decide 都会冷启动(包括模型加载,耗时数秒),适用于门禁检查和分流。若要重复调用,可启动一次 clef-mcp daemon:它会在 CLEF_HOME 中权限受限的 unix 套接字上保持模型热运行(不使用 TCP 端口,在 CLEF_DAEMON_IDLE 秒后卸载,默认值为 600),clef-mcp decide --daemon 可在不到一秒内响应;如果没有正在运行的守护进程,则回退到冷启动。有关 PreToolUse 防护和 GitHub Action 示例,请参阅 examples/hooks/。

当模型判定某条命令具有破坏性(p ≥ 0.9)时,PreToolUse 防护会阻止该命令,并告知 Agent 询问用户——阻止意味着暂停并升级处理,而不是彻底封锁;该门禁按设计仅提供建议,并会明确说明这一点。上线首日首次实际触发:它拦截了一次改写历史记录的强制推送(p=0.94),并发现了自身的绕过路径;该问题现已修复,并在示例中记录。

教会你的 Agent(技能)

架构定义了客户端可以向 clef_decide 传入什么;Agent 还需要知道何时使用它,以及如何组织决策。随附的 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)将引擎隔离开来:MLX 或远程运行时都可以接入,而无需更改 MCP API。线路格式为 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 接口:

llama-cpp(默认)mlx
平台macOS、Linux、Windows仅 macOS / Apple Silicon
模型来自 ggml-org/Clef-Flash-GGUF 的 GGUF来自 mlx-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_TAGlatest nightly固定使用托管的 llama.cpp 构建版本
CLEF_LLAMA_BATCH8192llama.cpp 物理批次大小(多问题请求)
CLEF_MLX_UVPATH 上的 uv显式指定 uv 二进制文件
CLEF_DAEMON_IDLE600守护进程卸载模型前的空闲秒数(0 = 永不卸载)
CLEF_MAX_QUESTIONS64每次调用的问题数上限
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-token 上下文限制,系统会拒绝处理,并提示缩减 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 许可证;以官方预编译二进制文件形式下载。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。