GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
作者提供的说明(英文原文)
Local MCP server for the Cloudflare Clef-Flash decision model: structured decisions, fully offline
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"clef": {
"command": "npx",
"args": [
"-y",
"clef-mcp"
]
}
}
}在终端中运行这条命令
claude mcp add clef -- npx -y clef-mcp粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"clef": {
"command": "npx",
"args": [
"-y",
"clef-mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"clef": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"clef-mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 HighlyLoadedEgo 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.4.0)于4天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:GitHub, Desktop Commander, Cloudflare MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Local decisions for AI agents. Reusable classification for your datasets.
Run Clef-Flash (9B, Apache-2.0 by Cloudflare) locally. Give coding agents a structured MCP decision tool, or classify JSONL/CSV datasets with YAML profiles. Get probabilities and explicit review results instead of generated prose. Inference stays on your machine.
Requires Node.js 20+ and enough memory for the selected model (16 GB recommended for Q4_K_M). The default model download is approximately 6 GB; subsequent inference runs offline.
npm install -g clef-mcp
clef-mcp install
Choose your workflow:
| Workflow | Start here |
|---|---|
| Decisions inside Claude Code, Codex, Cursor or ZCode | clef-mcp setup, then restart your client; client configuration |
| Classify tickets, documents or other records | YAML profiles and dataset classification |
| Hooks, CI or shell scripts | clef-mcp decide |
The MCP server starts with clef-mcp (stdio). Only install downloads model/runtime files. You can also use npx -y clef-mcp instead of a global install; npx -y clef-mcp install --setup combines model installation and client registration.
Define a task once, then apply it to separate records. The model loads once for the whole batch; a separate daemon is not required.
Save this as support-routing.yaml:
schema_version: 1
name: support-routing instructions: Classify the current support request into exactly one department. labels: billing: Payments, refunds, invoices and subscription charges technical: Errors, outages, installation and integration problems other: Requests outside billing and technical support input: id_field: id fields: [subject, body] policy: min_probability: 0.80 min_margin: 0.15
Save tickets.jsonl (one object per line):
{"id":"001","subject":"Duplicate charge","body":"Please refund my duplicate subscription payment."}
{"id":"002","subject":"Checkout crashes","body":"The payment page returns an error."}
Or use tickets.csv with a header row:
id,subject,body
001,Duplicate charge,Please refund my duplicate subscription payment. 002,Checkout crashes,The payment page returns an error.
clef-mcp classify tickets.jsonl --profile support-routing.yaml --output results.jsonl
clef-mcp classify tickets.csv --profile support-routing.yaml --output csv-results.jsonl
cat tickets.jsonl | clef-mcp classify - --profile support-routing.yaml
cat tickets.csv | clef-mcp classify - --format csv --profile support-routing.yaml
Runnable files also ship in examples/classify/.
| Field | Meaning |
|---|---|
schema_version | Required; currently 1 |
name | Required profile ID, up to 64 letters/digits/underscores/hyphens, starting with a letter or digit |
instructions | Required classification question |
labels | Required map of 2–100 mutually exclusive label IDs to descriptions; include a fallback category where appropriate |
model | Optional model ID; priority is CLI --model → profile → CLEF_MODEL → clef-flash |
input.fields | Optional exact top-level field names to send to the model; otherwise use the full record |
input.id_field | Optional string/numeric ID to copy to the result; missing or invalid IDs become row errors |
policy.min_probability | Minimum winning probability, default 0.80 |
policy.min_margin | Minimum difference between the two highest probabilities, default 0.15 |
policy.min_confidence | Optional minimum runtime-reported confidence; missing confidence then requires review |
examples | Optional list of up to 20 {input: {...}, label: configured_label} references |
Examples are data supplied alongside the current record; they do not train or modify model weights. Unknown fields, duplicate YAML keys, aliases, merge keys, unsupported tags and non-JSON values are rejected. Label IDs use the same character rules as profile names, with a 128-character limit; prototype-shaped reserved keys are rejected. Missing selected fields produce row errors.
needs_reviewIllustrative results (actual probabilities depend on your data and runtime):
{"row":1,"id":"001","profile":"support-routing","model":"clef-flash","status":"classified","label":"billing","suggested_label":"billing","probability":0.92,"margin":0.87,"probabilities":{"billing":0.92,"technical":0.05,"other":0.03},"review_reasons":[]}
{"row":2,"id":"002","profile":"support-routing","model":"clef-flash","status":"needs_review","label":null,"suggested_label":"technical","probability":0.48,"margin":0.06,"probabilities":{"billing":0.42,"technical":0.48,"other":0.10},"review_reasons":["low_probability","low_margin"]}
classified means all configured thresholds passed. needs_review keeps the suggestion and full distribution but sets label: null. Reasons are low_probability, low_margin, tie, low_confidence or missing_confidence. Exact ties always require review, including when thresholds are zero. Comparisons are inclusive at the threshold. Results may include model confidence and token usage when available.
Winning probability, probability margin and model-reported confidence are different quantities. These thresholds are routing policy, not a calibrated accuracy guarantee. Check them on representative labeled data before automating decisions. Classification does not grant authorization or execute actions.
Invalid JSONL objects and missing fields produce status: "error" rows and processing continues. Runtime failures stop the run; they are never converted to review decisions. Output includes identifiers and results, not a copy of the original record.
clef-mcp classify tickets.jsonl --profile support-routing.yaml --output results.jsonl --resume
File output creates private results.jsonl and results.jsonl.meta.json files. The sidecar fingerprints the full input, validated profile, effective model, runtime and format. Resume requires all of these to match. Use a new output path after changing data or thresholds; existing files are never silently overwritten. Input must stay unchanged while a run is active.
Resume skips the contiguous committed prefix, including committed error rows; it does not retry those errors. An incomplete final write is discarded, while corruption in a complete row is rejected. Resume requires regular file input and --output; stdin/stdout resume is unsupported. A local lock prevents simultaneous writers. Dead local writer locks can be reclaimed; active, foreign-host or unverifiable locks are preserved. A crash during lock acquisition may leave .lock.claim, which requires inspection before manual removal.
JSONL accepts objects, ignores blank lines and supports UTF-8 BOM/CRLF. CSV supports quoted commas, escaped quotes and multiline fields; headers must be nonempty and unique, with consistent column counts. CSV cells remain strings, preserving IDs such as 001. Format defaults to .jsonl/.csv, or JSONL for stdin; other extensions need --format.
Profiles and logical records are limited to 1 MiB, YAML nesting to 64 levels, selected/CSV fields to 1000, and examples to 20. Existing instruction/criteria/state limits and the model's 16k-token context also apply; selected fields and examples share that context. Oversized JSONL rows are reported as row errors. Broken/oversized CSV syntax stops the run because record boundaries cannot be recovered reliably.
| Exit code | Meaning |
|---|---|
0 | Completed; review results are allowed |
1 | Row errors occurred in this invocation, or inference/output failed |
2 | Invalid options/profile/input structure or incompatible checkpoint |
3 / 4 | Model not installed / runtime missing |
130 | Interrupted; committed file output can be resumed |
npm install -g clef-mcp@latest
Restart MCP clients and any existing daemon after updating. An already installed model does not need another download.
| Chat LLM | clef_decide | |
|---|---|---|
| Output | prose, you parse it | strict JSON: probability per option |
| Determinism | varies per run | single forward pass, no sampling |
| Latency (1 decision) | seconds of generation | ~0.5 s local |
| Context cost | grows with every decision | fixed, small schema |
| Privacy | depends on provider | 100% on-device, works offline |
| Calibration | vibes | softmax over trained option scores |
Sweet spot: decision points inside agent loops — next action, routing, classification, severity, yes/no judgment — asked dozens of times per task.
clef_decide tool{
"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?" } } }
| Type | Criteria | Answer |
|---|---|---|
choice | map option id → description, or a plain list | probability per option |
score | ordered list (index = score) | probability per level |
noul | optional {"true": "...", "false": "..."} | {"true": p, "false": 1-p} |
Response — strictly structured, never prose. Each decision carries the model-reported confidence (when the runtime sends it), plus token usage for the call:
{
"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 } }
Act on the argmax only when the distribution is decisive — top p ≥ 0.8 and high confidence for destructive or security-adjacent calls.
Batch up to 64 questions per call — they are scored in one forward pass. state is treated strictly as data: never executed, never interpreted as instructions for the server.
The server ships four MCP prompts (canned, decision-shaped asks — your client lists them via prompts/list):
| Prompt | Purpose |
|---|
| incident-triage | action + severity + user-impa
只显示了开头部分;其余内容请在仓库中阅读