mcp-jev
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-jevclassify this support ticket as billing, technical, or other"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-jev
Minimal Model Context Protocol server that exposes TypeSafe Jev (System One) structured decisions to Cursor and other MCP clients.
Jev is the fast classifier; your main LLM is the writer. This server is the bridge: one tool call in, machine-readable yes/no, choice, and score results out.
Requirements
Docker (Compose optional — only needed to build from source)
A TypeSafe API key from console.typesafe.ai
For development and tests only: Python 3.11+ and Docker Compose
Related MCP server: jev-use
Quick start (published image)
Pre-built images are published to GitHub Container Registry on each push to main:
ghcr.io/chrishow2/mcp-jev:latest
Pull and run (replace the API key; never commit it):
docker run -d --name mcp-jev -e TYPESAFE_API_KEY=sk-your-key-here -p 127.0.0.1:8000:8000 --restart unless-stopped ghcr.io/chrishow2/mcp-jev:latestThe server listens at http://127.0.0.1:8000/mcp (Streamable HTTP transport).
Pin a specific build with a git SHA tag (for example ghcr.io/chrishow2/mcp-jev:abc1234) — tags are listed on the package page.
Compose without building — create a .env with TYPESAFE_API_KEY, then:
# docker-compose.image.yml
services:
jev:
image: ghcr.io/chrishow2/mcp-jev:latest
ports:
- "127.0.0.1:8000:8000"
env_file:
- .env
restart: unless-stoppeddocker compose -f docker-compose.image.yml up -dQuick start (from source)
Clone this repo, copy .env.example to .env, and set your key (local only — never commit):
copy .env.example .envBuild and start the MCP HTTP API:
docker compose up --build -dSame endpoint: http://127.0.0.1:8000/mcp.
MCP client setup
Example configs for Cursor, Claude Code, and Claude Desktop are in samples/. Copy the one you use — client configs are not committed (only examples).
Cursor (quick start):
mkdir .cursor
copy samples\cursor.mcp.json.example .cursor\mcp.jsonStart the container before using MCP (docker run … or docker compose up -d). Reload MCP servers after changing the API key.
See samples/README.md for Claude Code and Claude Desktop paths and notes.
Local development (optional)
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -e ".[dev]"
pytestRun without Docker (stdio transport, for MCP Inspector):
set JEV_TRANSPORT=stdio
python -m mcp_jev.serverOr HTTP on the host (matches Docker behavior):
set JEV_TRANSPORT=streamable-http
set JEV_HOST=127.0.0.1
python -m mcp_jev.serverTool: jev_decide
Evaluate a state against one or more typed questions using TypeSafe Jev. Returns probabilities and structured answers — not natural language.
Parameter | Type | Required | Description |
| string, object, or array | yes | Content Jev judges. Prefer a JSON object with named fields. |
| object | yes | Map of question id → question definition. |
| string | no | Default |
Question types
Type | Purpose | Required fields |
| Yes/no probability |
|
| Pick one option |
|
| Ordered scale |
|
Example
{
"state": {
"message": "My card was charged twice for order A-104."
},
"questions": {
"is_billing": {
"type": "noul",
"instructions": "Is `message` about billing or payments?"
},
"department": {
"type": "choice",
"instructions": "Which team should handle `message`?",
"criteria": {
"billing": "Charges, invoices, refunds",
"technical": "Bugs or outages",
"other": "None of the above"
}
}
}
}Success response (pretty-printed JSON string):
{
"model": "jev-1.13.0",
"answers": { },
"usage": { "input_tokens": 0, "output_tokens": 0 }
}On failure, the tool returns a structured error object instead of throwing:
{
"error": true,
"status": 422,
"message": "Validation failed: ...",
"details": { }
}Environment variables
Variable | Required | Default | Description |
| yes | — | Bearer token from TypeSafe console |
| no |
| MCP transport |
| no |
| HTTP bind address |
| no |
| HTTP port |
| no |
| Streamable HTTP endpoint path |
| no |
| Stateless HTTP sessions |
| no |
| Default model for tool calls |
| no |
| API base URL (testing/mocking) |
| no |
| Per-request HTTP timeout |
| no |
| Retries for HTTP 429/529 |
Limits
Documented by TypeSafe; lightly validated locally in v1:
Limit | Value |
State + all questions (combined) | ~64,000 tokens |
State + longest single question | ~32,000 tokens |
Choice options | up to 255 |
Score levels | 2–10 |
Testing
pytestTests mock HTTP — no API key required.
Manual smoke test
Set
TYPESAFE_API_KEYin.env.Run
docker compose up --build -d.Open Cursor and call
jev_decidewith onenoulquestion on a short string.Confirm
answers.*.noulis a float in[0, 1].
Security
Never log or commit
TYPESAFE_API_KEY.Treat
stateas potentially sensitive — nothing is persisted in v1.Threshold and routing logic belong in the agent prompt, not in this server.
Disclaimer
Unofficial project. Not affiliated with, endorsed by, or sponsored by TypeSafe, Anthropic, or the Model Context Protocol project. Jev, TypeSafe, Model Context Protocol, Cursor, and Claude are trademarks of their respective owners.
License
MIT — use, modify, and distribute freely.
References
This server cannot be deployed
Maintenance
Related MCP Connectors
A paid remote MCP for Equibles, built to return verdicts, receipts, usage logs, and audit-ready JSON
A paid remote MCP for HyperFrames, built to return verdicts, receipts, usage logs, and audit-ready J
A paid remote MCP for Skybridge, built to return verdicts, receipts, usage logs, and audit-ready JSO
A paid remote MCP for Decapod, built to return verdicts, receipts, usage logs, and audit-ready JSON.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to call TypeSafe's JEV classifier and receive structured, typed judgments with probabilities for binary, choice, and scoring questions.MIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP clients to hand fast, no-text-output decisions to Jev, reducing latency and token usage while escalating uncertain cases back to the LLM.2,388 npm19MIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP hosts to query Jev's typed decision model—yes/no, choice, and score—with calibrated probabilities, while defaulting to an offline mock and disclosing all egress unless explicitly enabled.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients to consult TypeSafe's Jev through a judge tool, answering narrow typed questions with calibrated probabilities instead of prose.MIT