MCP server: One MCP server.

Jev Use

@shitianfangMCP server · External

Typed yes/no, pick-one and score judgments from Jev in one batched call; typed escalation back.

AI agent governancev0.8.0MITJavaScript
Freeno charge per call

Runs on your machine from its package; the steps are below.

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
From the README · 1 of 4

What it does

  1. Reads
  2. Writes
  3. High impact

At most: only reads or looks up information.

What it costs

Free

Odel charges nothing per call. The publisher may charge for its own service.

Runs locally over stdio

This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).

npmjev-usev0.8.0

Run

npx -y jev-use

MCP client config

{
  "mcpServers": {
    "jev-use": {
      "command": "npx",
      "args": [
        "-y",
        "jev-use"
      ]
    }
  }
}
README2 min read

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

bash
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:

js
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

console
$ 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

Similar modules

Browse AI agent governance