Skip to content
MrJev

Jev Studio

One pip install for experimenting: MCP tools for Choice, Noul and Score, prompt libraries and a slash command per cookbook recipe.

View on GitHub →

Hands-on review

A Python port of jev-cli plus prompt libraries and an MCP server. The MCP server won't start on a fresh install, and the port inherited two fixed bugs.

Good for

  • A pure-standard-library Python CLI with the same command surface as jev-cli
  • Prompt libraries and slash commands for the cookbook recipes
  • Reading a port that credits the project it came from

Watch out for

  • `pip install jev-studio` then `jev-studio` crashes: `mcp>=1.0.0` picks up 2.x
  • It registers `jevctl` as its keychain service, the same entry jev-cli uses
  • `ask -q` and `models --dry-run` carry bugs upstream fixed in jev-cli 0.2.3

Tested Sep 21, 2026 at fe47b78d3d36 · Python 3.12 in Docker; a fresh pip install, its 3 tests, an MCP handshake, and requests captured against a stand-in

How we reviewed this: we installed the package in Docker on Python 3.12 exactly as the README says, ran its tests, drove the MCP server over stdio, and captured its requests against a stand-in.

What it is

Three things in one package: a CLI called jev with the familiar commands (verify, screen, classify, extract, match, route…), prompt libraries and slash commands for agent hosts, and an MCP server called jev-studio.

The README is upfront about where the CLI came from: “a Python port of the TypeScript jev-cli, rebuilt on the standard library with the same command surface and question shapes”. Crediting the original is the right thing to do, and reimplementing a TypeScript CLI in dependency-free Python is a reasonable thing to want.

The MCP server does not start

The README’s install is two lines. Following them:

$ pip install jev-studio && jev-studio
ModuleNotFoundError: No module named 'mcp.server.fastmcp'. This is mcp 2.x, where
FastMCP was renamed to MCPServer … or pin 'mcp<2' to keep running v1 code.

pyproject.toml asks for mcp>=1.0.0, and pip resolves that to 2.x, where the import moved. Every fresh install gets a server that exits on startup. With mcp<2 installed, it comes up and completes a handshake:

initialize: ok
tools: 1 ['jev_instructions']

One tool, which serves the ruleset text. The package description says “MCP tools for Choice/Noul/Score”, so a reader would expect three tools that ask questions; what is served is instructions for an agent that will ask them itself. Both are reasonable products; they are not the same product.

The port inherited two bugs that are already fixed upstream

We reviewed jev-cli two days ago and reported four things; the maintainer merged the fixes and released them. The port predates that, and it shows:

$ jev ask "I was charged twice" -q @/tmp/q.json --dry-run
jev: error: unrecognized arguments: @/tmp/q.json          # -q is taken by --quiet

$ jev models --dry-run          # against a dead base URL
jev: Transport error: [Errno 111] Connection refused      # it tried

--questions works, as it did upstream. Neither is a deep bug; both are the kind of thing a port acquires by being a faithful copy at the wrong moment, and both have a one-line fix in the original to copy from.

Two details to know

It identifies as jevctl on the wire. provider.py sets USER_AGENT = "jevctl", which is the npm package name of the project it was ported from. Your requests are labelled as the other tool.

It shares a keychain entry. credentials.py sets SERVICE = "jevctl", so on a machine with both installed, storing or deleting a key in one reaches into the other’s keyring item. A distinct service name would avoid a confusing afternoon.

To its credit, what goes over the wire is clean. We captured a real request against a stand-in:

{"state": "I was charged twice", "questions": {"ok": {"type": "noul", …}}, "model": "jev-latest"}

State, questions, model, nothing else — the dry-run view prints a cwd field locally, but it does not travel.

Maintenance

Created 19 September, twenty-one commits, MIT, published to PyPI as jev-studio 0.2.0. The test suite is three tests, all passing, covering the instructions module; the ported CLI has none of its own.

The MIT licence carries the porting author’s copyright only. The README credits jev-cli in prose, which is the important part for readers; whether a port needs to carry the original notice as well is a question for the two authors, and a NOTICE line would settle it either way.

Verdict

The pieces are reasonable and the honesty about the port is welcome, but the front door is broken: the MCP server that the package is named after will not start after a plain pip install, and that is a one-character fix in pyproject.toml (mcp>=1.0.0,<2). We’ve reported it, along with the two inherited bugs and the shared jevctl names.

If you want the CLI, take jev-cli 0.2.3, where the two bugs above are fixed. If you want the prompt libraries and slash commands, install this and pin mcp<2 yourself until it is fixed.

See how it compares with other tools in Best Jev tools, tested hands-on.

Review updated Sep 21, 2026. Numbers quoted from the project are its author's own; we don't publish our own measurements of Jev.

More in Agent Integrations (MCP & Skills)

Hermes Jev Skills

★ 1.3k▲ 98

kerpopule/hermes-jev-skills

Bundle of skills that hand an agent's small decisions to Jev: model routing, skill selection, retrieval filtering, compaction, and computer use, with a routing dashboard. Works with Hermes, Claude Code, and Codex.

PythonReviewed

Awesome Jev Skills

★ 662▲ 12

wuyoscar/jev-skill

Nine installable agent skills — triage, routing, code review, document and UI work — with a catalogue of scenarios to copy.

PythonReviewed

jev-mcp

★ 566▲ 18

jkudish/jev-mcp

Proof-of-concept MCP server with ready-made tools for fact checking, prompt-injection detection, and semantic ranking.

JavaScriptReviewed

Get new Jev projects every week

New Jev releases, pricing changes, and the best new projects, once a week. No spam; unsubscribe anytime.

Powered by Buttondown. See our privacy policy.