mcpField
J
jev-use

jev-use

Local
github.com/shitianfangAI & Agents65Updated 5w ago

About jev-use

jev-use is an MCP server that lets Claude Code, Codex and pi hand decision-only steps to the Jev judge. It returns typed yes/no, single-choice and rating answers in batches, and sends back typed escalation when Jev should not decide.

Key features

  1. 01Typed yes/no, pick-one and rating questions
  2. 02Batched judgments in a single tool call
  3. 03Escalation with a typed reason when unsure
  4. 04Command-line install and environment check
  5. 05JavaScript library interface for direct use

Use cases

  1. 01Quick next-step decisions for coding agents
  2. 02Batch judging which messages to keep during context compaction
  3. 03Gating shell commands before they run

MCP support

jev-use runs as an MCP server and exposes two tools to clients for submitting batched judgments and receiving typed verdicts or escalation requests.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"shitianfang-jev-use": {
"command": "npx",
"args": [
"-y",
"jev-use"
]
}
}
}
Run commandnpx -y jev-use

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmjev-use0.8.0

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

jev-use

English | 简体中文

The best way for Claude Code, Codex, and pi to work with Jev: hand the tasks that need no text output to Jev — faster steps, fewer tokens, tasks done sooner and better.

It makes the LLM and Jev true collaborators: when content needs to be written, the LLM takes over; when a step just needs a fast decision, Jev executes it.

Demos — real runs, 1× speed

Directions task: Jev clicks, the LLM types — 10 decisions (p50 274 ms) · 4 writes; Jev rejects a wrong route, the LLM rewrites
OpenStreetMap directions: Jev picks controls in green, the LLM types the locations in blue; a wrong 1809km geocode is rejected by Jev and repaired by the LLM, ending on the real 3.7km walking route
Context compaction — 200 messages judged in 7 calls, one LLM paragraph replaces the dropped pile; recall 3/3
A real transcript fills the context window to 94%; Jev tints each message keep or drop, the LLM's summary paragraph replaces the dropped block, the window falls to 44% and three recall checks pass
Pong: ball speed = decision latency — 86 Jev decisions in 20 s vs 6 (haiku) and 3 (gemini) called the usual way; enum-constrain both and the gap is 3×
Three Pong lanes replaying a live run at 1x: the Jev ball sweeps the field at ~224ms per decision while the LLM balls crawl
Gate every shell command — dangerous ones denied in ~230 ms with a reason, zero LLM tokens
A 24-command dev session gated at 1x: dangerous commands denied at confidence 1.00, benign ones allowed

Every demo is a rerunnable script in bench/examples/; all numbers, methodology, variance and caveats: bench/RESULTS.md · third-party measurements: docs/evidence.md.

Install

npx -y jev-use install    # wires Claude Code, Codex, and pi — whichever it finds

Set one key in the environment your agent runs in (JEV_BACKEND=mock for a keyless dry run):

ProviderEnv var
TypeSafe directTYPESAFE_API_KEY
OpenRouterOPENROUTER_API_KEY
Vercel AI GatewayAI_GATEWAY_API_KEY

npx -y jev-use doctor checks the wiring. Judged state goes to the provider you configure; JEV_BACKEND=mock stays local. Plugin form with the routing skill and the PreToolUse gate: harness/claude-code · harness/codex.

Use as a library

npm i jev-use — zero runtime dependencies on the judgment path:

import { Jev, check, pick, rate } from "jev-use";

const jev = new Jev();

const { answers } = await jev.judge(state, {
  next: pick("Next action?", { merge: "all green", rerun: "looks flaky", hold: "needs attention" }),
  risk: rate("How risky?", ["routine", "worth a look", "incident"]),
  passed: check("Did the run fully succeed?"),
});
// answers.next → { answer: "merge", confidence: 0.93, confidenceFrom: "reported", escalate: false }

Anything Jev can't or shouldn't decide comes back with escalate: true and a typed reason. Tools, verdict shape, escalation contract, CLI: docs/reference.md.

Small enough to read

FileJob
src/protocol.tsQuestions (check/pick/rate), verdicts, escalation reasons
src/dispatch.tsPre-call routing: what never reaches Jev
src/judge.tsscreen → backend → hand back what is unsure; gate
src/jev.tsThe Jev client over that engine
src/redact.tsCredentials stripped from a gated action before it is sent
src/backends/TypeSafe, OpenRouter, Vercel, mock adapters
src/server.tsThe two MCP tools
src/cli.tsinstall, serve, hook gate, doctor
skills/jev-use/SKILL.mdThe routing rules the agent follows

Development

$ npm run typecheck && npm test    # unit tests incl. per-provider wire fixtures
$ npm run smoke                    # real MCP client ↔ built CLI over stdio
$ node bench/run.mjs               # micro-benchmarks, your key and region

Substantially written with Claude Code (AI-assisted).

MIT © shitianfang

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.