mcp-jev 1.1.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,14 +1,19 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * MCP server for TypeSafe Jev — System One Model
3
+ * MCP server for System-1 decision models — provider-agnostic.
4
4
  *
5
5
  * Tools:
6
- * jev_decide — evaluate typed questions against a state using Jev
7
- * jev_list_models — list available Jev model aliases
6
+ * decide_predict — typed questions → calibrated answers
7
+ * decide_preset — named workflow preset → answers
8
+ * decide_status — provider health + info
9
+ * decide_list_models — available models/checkpoints
8
10
  *
9
11
  * Env:
10
- * TYPESAFE_API_KEY (required)
11
- * TYPESAFE_BASE_URL (optional, default: https://api.typesafe.ai)
12
+ * DECIDE_PROVIDER (optional, default: "jev") — "jev" | "laya"
13
+ * TYPESAFE_API_KEY (required when DECIDE_PROVIDER=jev)
14
+ * TYPESAFE_BASE_URL (optional) — override Jev base URL
15
+ * LAYA_BASE_URL (optional) — override Laya base URL (default: http://localhost:8000)
16
+ * LAYA_API_KEY (optional) — Laya bearer token
12
17
  */
13
18
  export {};
14
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG"}
package/dist/index.js CHANGED
@@ -1,226 +1,138 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * MCP server for TypeSafe Jev — System One Model
3
+ * MCP server for System-1 decision models — provider-agnostic.
4
4
  *
5
5
  * Tools:
6
- * jev_decide — evaluate typed questions against a state using Jev
7
- * jev_list_models — list available Jev model aliases
6
+ * decide_predict — typed questions → calibrated answers
7
+ * decide_preset — named workflow preset → answers
8
+ * decide_status — provider health + info
9
+ * decide_list_models — available models/checkpoints
8
10
  *
9
11
  * Env:
10
- * TYPESAFE_API_KEY (required)
11
- * TYPESAFE_BASE_URL (optional, default: https://api.typesafe.ai)
12
+ * DECIDE_PROVIDER (optional, default: "jev") — "jev" | "laya"
13
+ * TYPESAFE_API_KEY (required when DECIDE_PROVIDER=jev)
14
+ * TYPESAFE_BASE_URL (optional) — override Jev base URL
15
+ * LAYA_BASE_URL (optional) — override Laya base URL (default: http://localhost:8000)
16
+ * LAYA_API_KEY (optional) — Laya bearer token
12
17
  */
13
18
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
14
19
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
15
20
  import { z } from "zod";
16
- import { ERROR_BODY_MAX_CHARS, MAX_CHOICE_OPTIONS, MIN_SCORE_LEVELS, MAX_SCORE_LEVELS, MAX_STATE_STRING_CHARS, MAX_QUESTIONS, truncate, fetchWithRetry, parseModelEntries, JevResponseSchema, JevModelsResponseSchema, } from "./lib.js";
17
- // ─── Config ─────────────────────────────────────────────────────────────────
18
- const API_KEY = process.env.TYPESAFE_API_KEY;
19
- const BASE_URL = process.env.TYPESAFE_BASE_URL?.replace(/\/$/, "") ??
20
- "https://api.typesafe.ai";
21
- if (!API_KEY) {
22
- process.stderr.write("[mcp-jev] FATAL: TYPESAFE_API_KEY environment variable is not set.\n");
23
- process.exit(1);
21
+ import { ConfigurationError, MAX_STATE_STRING_CHARS, MAX_QUESTIONS, MAX_CHOICE_OPTIONS, MIN_SCORE_LEVELS, MAX_SCORE_LEVELS, } from "./lib.js";
22
+ import { createAdapter } from "./adapters/factory.js";
23
+ import { isValidPreset, expandPreset, PRESET_NAMES } from "./presets.js";
24
+ // ─── Startup: create adapter ─────────────────────────────────────────────────
25
+ let adapter;
26
+ try {
27
+ adapter = createAdapter();
24
28
  }
25
- // ─── Internal API helpers ────────────────────────────────────────────────────
26
- /**
27
- * Read response body and throw a standardized API error.
28
- * Truncates body to prevent log bloat (F14, F15).
29
- */
30
- async function throwApiError(resp, context) {
31
- const raw = await resp.text().catch(() => "");
32
- throw new Error(`Jev API error ${resp.status} (${context}): ${truncate(raw, ERROR_BODY_MAX_CHARS)}`);
33
- }
34
- async function callSystemOne(body) {
35
- const resp = await fetchWithRetry(`${BASE_URL}/v1/systemone`, {
36
- method: "POST",
37
- headers: {
38
- Authorization: `Bearer ${API_KEY}`,
39
- "Content-Type": "application/json",
40
- },
41
- body: JSON.stringify(body),
42
- });
43
- if (!resp.ok) {
44
- await throwApiError(resp, "systemone");
45
- }
46
- let raw;
47
- try {
48
- raw = await resp.json();
29
+ catch (e) {
30
+ if (e instanceof ConfigurationError) {
31
+ process.stderr.write(`[mcp-jev] FATAL: ${e.message}\n`);
32
+ process.exit(1);
49
33
  }
50
- catch (e) {
51
- throw new Error(`Failed to parse Jev API response as JSON: ${e instanceof Error ? e.message : String(e)}`);
52
- }
53
- // Runtime validation — catches API contract changes early (F01)
54
- const parsed = JevResponseSchema.safeParse(raw);
55
- if (!parsed.success) {
56
- throw new Error(`Jev API response shape unexpected: ${parsed.error.message}`);
57
- }
58
- return parsed.data;
34
+ throw e;
59
35
  }
60
- async function listModels() {
61
- const resp = await fetchWithRetry(`${BASE_URL}/v1/models`, {
62
- method: "GET",
63
- headers: { Authorization: `Bearer ${API_KEY}` },
64
- });
65
- if (!resp.ok) {
66
- await throwApiError(resp, "models");
67
- }
68
- let raw;
69
- try {
70
- raw = await resp.json();
71
- }
72
- catch (e) {
73
- throw new Error(`Failed to parse Jev models response as JSON: ${e instanceof Error ? e.message : String(e)}`);
74
- }
75
- // Runtime shape validation (F01)
76
- const envelope = JevModelsResponseSchema.safeParse(raw);
77
- if (!envelope.success) {
78
- throw new Error(`Unexpected Jev models response shape: ${envelope.error.message}`);
79
- }
80
- const entries = envelope.data.models ?? envelope.data.data ?? [];
81
- if (!Array.isArray(entries)) {
82
- throw new Error("Unexpected Jev models response shape — expected array");
83
- }
84
- // Filter and validate each model entry — skip entries missing id (F03)
85
- return parseModelEntries(entries);
86
- }
87
- // ─── MCP server ─────────────────────────────────────────────────────────────
88
- const server = new McpServer({
89
- name: "mcp-jev",
90
- version: "1.0.0",
91
- });
92
- // ── Tool 1: jev_decide ──────────────────────────────────────────────────────
93
- const InstructionsSchema = z
94
- .union([z.string(), z.record(z.unknown()), z.array(z.unknown())])
95
- .describe([
96
- "What the model should decide. Can be:",
97
- " - A plain string: \"Is `message` urgent?\"",
98
- " - An object: split the question and supporting data into named fields",
99
- " - An array: ordered list of instruction parts",
100
- "Reference state fields with backtick paths, e.g. `message` or `order.id`.",
101
- ].join("\n"));
102
- const CriteriaValueSchema = z
103
- .union([z.string(), z.record(z.unknown()), z.array(z.unknown()), z.null()])
104
- .describe("Description for this option/level. Use null for options that need no extra detail.");
36
+ // ─── Shared Zod schemas ──────────────────────────────────────────────────────
37
+ const InstructionsSchema = z.union([
38
+ z.string(),
39
+ z.record(z.unknown()),
40
+ z.array(z.unknown()),
41
+ ]);
42
+ const CriteriaValueSchema = z.union([
43
+ z.string(),
44
+ z.record(z.unknown()),
45
+ z.array(z.unknown()),
46
+ z.null(),
47
+ ]);
105
48
  const QuestionSchema = z.discriminatedUnion("type", [
106
49
  z.object({
107
- id: z.string().min(1).describe("Unique key for this question. Used to look up the answer in the response."),
108
- type: z.literal("noul").describe("True/false probability question."),
50
+ id: z.string().min(1),
51
+ type: z.literal("noul"),
109
52
  instructions: InstructionsSchema,
110
- criteria: z.string().optional().describe("Optional extra clarification string for the model."),
53
+ criteria: z.string().optional(),
111
54
  }),
112
55
  z.object({
113
- id: z.string().min(1).describe("Unique key for this question. Used to look up the answer in the response."),
114
- type: z.literal("choice").describe("Pick one from a named list of options."),
56
+ id: z.string().min(1),
57
+ type: z.literal("choice"),
115
58
  instructions: InstructionsSchema,
116
59
  criteria: z
117
60
  .record(CriteriaValueSchema)
118
61
  .refine((obj) => Object.keys(obj).length <= MAX_CHOICE_OPTIONS, {
119
62
  message: `Choice criteria cannot exceed ${MAX_CHOICE_OPTIONS} options`,
120
- })
121
- .describe([
122
- `Map of option key → description (max ${MAX_CHOICE_OPTIONS} options).`,
123
- "Each value can be: string, object, array, or null.",
124
- 'Use null for options that need no extra detail, e.g. {"other": null}.',
125
- ].join("\n")),
63
+ }),
126
64
  }),
127
65
  z.object({
128
- id: z.string().min(1).describe("Unique key for this question. Used to look up the answer in the response."),
129
- type: z.literal("score").describe("Rate on an ordered scale of 2–10 levels."),
66
+ id: z.string().min(1),
67
+ type: z.literal("score"),
130
68
  instructions: InstructionsSchema,
131
- criteria: z
132
- .array(CriteriaValueSchema)
133
- .min(MIN_SCORE_LEVELS)
134
- .max(MAX_SCORE_LEVELS)
135
- .describe([
136
- `Ordered list of level descriptions from lowest to highest (${MIN_SCORE_LEVELS}–${MAX_SCORE_LEVELS} levels).`,
137
- "Each level can be: string, object, or array.",
138
- 'e.g. ["calm", "frustrated", "very angry"]',
139
- ].join("\n")),
69
+ criteria: z.array(CriteriaValueSchema).min(MIN_SCORE_LEVELS).max(MAX_SCORE_LEVELS),
140
70
  }),
141
71
  ]);
142
- server.tool("jev_decide", [
143
- "Evaluate one or more typed questions against a state using TypeSafe Jev.",
144
- "",
145
- "All questions share the same state and are evaluated in parallel in a single API call.",
146
- "Returns calibrated probabilities for each answer — not generated text.",
72
+ const StateSchema = z.union([
73
+ z.string().max(MAX_STATE_STRING_CHARS),
74
+ z.record(z.unknown()).refine((obj) => JSON.stringify(obj).length <= MAX_STATE_STRING_CHARS, { message: `State object too large (max ~${MAX_STATE_STRING_CHARS} chars)` }),
75
+ z.array(z.unknown()).refine((arr) => JSON.stringify(arr).length <= MAX_STATE_STRING_CHARS, { message: `State array too large (max ~${MAX_STATE_STRING_CHARS} chars)` }),
76
+ ]);
77
+ // ─── Helper ───────────────────────────────────────────────────────────────────
78
+ function toMcpError(e) {
79
+ const message = e instanceof Error ? e.message : String(e);
80
+ return { content: [{ type: "text", text: `Error: ${message}` }], isError: true };
81
+ }
82
+ // ─── MCP server ─────────────────────────────────────────────────────────────
83
+ const server = new McpServer({
84
+ name: "mcp-jev",
85
+ version: "2.0.0",
86
+ });
87
+ // ── Tool 1: decide_predict ───────────────────────────────────────────────────
88
+ server.tool("decide_predict", [
89
+ "Evaluate typed questions against a state using a System-1 decision model.",
147
90
  "",
148
- "When to call:",
149
- " - Classify or route text (intent, category, department)",
150
- " - Check a true/false condition with calibrated confidence (is_urgent, is_spam)",
151
- " - Rate content on a rubric (severity, quality, sentiment)",
152
- " - Run multiple of the above on the same content in one call",
91
+ "Sends state + questions to the configured provider (Jev or Laya) and returns",
92
+ "calibrated probabilities for each question — not generated text.",
153
93
  "",
154
- "Question types:",
155
- " - noul: yes/no probability (0–1)",
156
- " - choice: pick one of N options",
157
- " - score: rate on ordered rubric (2–10 levels)",
94
+ "Question types: noul (yes/no probability), choice (pick one of N), score (rate on rubric).",
158
95
  "",
159
- "Example — triage a support message:",
160
- " state: { \"message\": \"My payout failed 3 days ago, need urgent help!\" }",
161
- " questions:",
162
- " - { id: \"is_urgent\", type: \"noul\",",
163
- " instructions: \"Does the user in `message` need urgent support?\" }",
164
- " - { id: \"dept\", type: \"choice\",",
165
- " instructions: \"Which department should handle `message`?\",",
166
- " criteria: { billing: \"Payments/refunds\", technical: \"API errors\", general: null } }",
167
- " - { id: \"frustration\", type: \"score\",",
168
- " instructions: \"How frustrated is the user in `message`?\",",
169
- " criteria: [\"calm\", \"annoyed\", \"very frustrated\"] }",
170
- " → answers: { is_urgent: { noul: 0.95 },",
171
- " dept: { choice: \"billing\", probabilities: {...}, confidence: 0.82 },",
172
- " frustration: { score: 2.04, legend: {\"0\":\"calm\",\"2\":\"very frustrated\"}, ... } }",
96
+ "When to call:",
97
+ " - Classify or route text (intent, category)",
98
+ " - Check a true/false condition with calibrated confidence",
99
+ " - Rate content on a rubric",
173
100
  "",
174
101
  "Tip: send only the state fields each question needs. Extra context degrades accuracy.",
175
102
  ].join("\n"), {
176
- state: z
177
- .union([
178
- z.string().max(MAX_STATE_STRING_CHARS), // (F05) size limit for string state
179
- z.record(z.unknown()).refine((obj) => JSON.stringify(obj).length <= MAX_STATE_STRING_CHARS, { message: `State object too large (max ~${MAX_STATE_STRING_CHARS} chars when serialized)` }),
180
- z.array(z.unknown()).refine((arr) => JSON.stringify(arr).length <= MAX_STATE_STRING_CHARS, { message: `State array too large (max ~${MAX_STATE_STRING_CHARS} chars when serialized)` }),
181
- ])
182
- .describe([
183
- "The content Jev evaluates. Can be:",
184
- ` - A plain string (max ${MAX_STATE_STRING_CHARS.toLocaleString()} chars): \"My card was charged twice.\"`,
185
- " - An object with named fields: {\"message\": \"...\", \"order_id\": \"A-104\"}",
186
- " - An array of records (for batches or conversation turns)",
187
- "Include only what the questions need — extra content lowers accuracy.",
188
- ].join("\n")),
103
+ state: StateSchema.describe("The content to evaluate (string, object, or array)"),
189
104
  questions: z
190
105
  .array(QuestionSchema)
191
106
  .min(1)
192
- .max(MAX_QUESTIONS) // (F06) prevent upstream 422 on massive payloads
193
- .describe([
194
- `List of questions to evaluate (max ${MAX_QUESTIONS}). Each has:`,
195
- " id — key used in the response answers map",
196
- " type — \"noul\" | \"choice\" | \"score\"",
197
- " instructions — full question text, may reference state fields in backticks",
198
- " criteria — required for choice (object) and score (array); optional for noul",
199
- ].join("\n")),
107
+ .max(MAX_QUESTIONS)
108
+ .describe("List of typed questions (noul/choice/score)"),
200
109
  model: z
201
110
  .string()
202
- .default("jev-latest")
203
- .describe("Model alias or versioned ID (default: jev-latest). Use \"jev-preview\" for cutting edge. Call jev_list_models to see available IDs."),
111
+ .optional()
112
+ .describe('Model alias (default: "jev-latest"). Ignored for Laya (auto-routes).'),
204
113
  }, async ({ state, questions, model }) => {
205
- const questionsMap = {};
206
- for (const q of questions) {
207
- if (q.id in questionsMap) {
114
+ // Validate no duplicate question IDs
115
+ const ids = questions.map((q) => q.id);
116
+ const seen = new Set();
117
+ for (const id of ids) {
118
+ if (seen.has(id)) {
208
119
  return {
209
120
  content: [
210
121
  {
211
122
  type: "text",
212
- text: `Error: duplicate question id '${q.id}' — each question must have a unique id. Rename one of them (e.g. '${q.id}_2').`,
123
+ text: `Error: duplicate question id '${id}' — each question must have a unique id.`,
213
124
  },
214
125
  ],
215
126
  isError: true,
216
127
  };
217
128
  }
129
+ seen.add(id);
130
+ }
131
+ // Build questions map for adapter
132
+ const questionsMap = {};
133
+ for (const q of questions) {
218
134
  if (q.type === "noul") {
219
- questionsMap[q.id] = {
220
- type: "noul",
221
- instructions: q.instructions,
222
- ...(q.criteria ? { criteria: q.criteria } : {}),
223
- };
135
+ questionsMap[q.id] = { type: "noul", instructions: q.instructions, ...(q.criteria ? { criteria: q.criteria } : {}) };
224
136
  }
225
137
  else if (q.type === "choice") {
226
138
  questionsMap[q.id] = { type: "choice", instructions: q.instructions, criteria: q.criteria };
@@ -230,45 +142,93 @@ server.tool("jev_decide", [
230
142
  }
231
143
  }
232
144
  try {
233
- const result = await callSystemOne({ model, state, questions: questionsMap });
145
+ const result = await adapter.predict({ state, questions: questionsMap, model });
146
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
147
+ }
148
+ catch (e) {
149
+ return toMcpError(e);
150
+ }
151
+ });
152
+ // ── Tool 2: decide_preset ────────────────────────────────────────────────────
153
+ server.tool("decide_preset", [
154
+ "Run a named workflow preset — expands to a pre-defined set of questions and calls decide_predict.",
155
+ "",
156
+ "Available presets:",
157
+ " triage — support ticket intent, urgency, frustration, churn risk",
158
+ " guard — LLM input jailbreak, injection, sensitive data, harm, topic",
159
+ " moderation — content toxicity, harassment, threat, spam, severity",
160
+ " router — model routing by difficulty, domain, tool need, sensitivity",
161
+ " email — email category, spam, phishing, urgency, reply needed",
162
+ "",
163
+ "Tip: set state fields matching the preset (e.g., {message: ...} for triage, {prompt: ...} for guard).",
164
+ ].join("\n"), {
165
+ preset: z
166
+ .string()
167
+ .describe(`Preset name: ${PRESET_NAMES.join(" | ")}`),
168
+ state: StateSchema.describe("The content to evaluate"),
169
+ model: z
170
+ .string()
171
+ .optional()
172
+ .describe("Model alias (optional)"),
173
+ }, async ({ preset, state, model }) => {
174
+ if (!isValidPreset(preset)) {
234
175
  return {
235
176
  content: [
236
177
  {
237
178
  type: "text",
238
- text: JSON.stringify({ answers: result.answers, model: result.model, usage: result.usage }, null, 2),
179
+ text: `Error: unknown preset "${preset}". Valid presets: ${PRESET_NAMES.join(", ")}.`,
239
180
  },
240
181
  ],
182
+ isError: true,
241
183
  };
242
184
  }
185
+ const questions = expandPreset(preset);
186
+ try {
187
+ const result = await adapter.predict({ state, questions, model });
188
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
189
+ }
243
190
  catch (e) {
244
- const message = e instanceof Error ? e.message : String(e);
245
- return {
246
- content: [{ type: "text", text: `Error calling Jev API: ${message}` }],
247
- isError: true,
248
- };
191
+ return toMcpError(e);
249
192
  }
250
193
  });
251
- // ── Tool 2: jev_list_models ─────────────────────────────────────────────────
252
- server.tool("jev_list_models", [
253
- "List the Jev model IDs and aliases available on this API key.",
194
+ // ── Tool 3: decide_status ────────────────────────────────────────────────────
195
+ server.tool("decide_status", [
196
+ "Get provider health and configuration info.",
197
+ "",
198
+ "Returns: { provider, base_url, model?, loaded?, device?, status?, error? }",
199
+ " - provider: 'jev' | 'laya'",
200
+ " - status: 'ok' | 'unreachable' | 'error' (Laya only)",
201
+ " - loaded: checkpoint names (Laya only)",
202
+ " - model: default model alias (Jev only)",
203
+ "",
204
+ "Note: Jev has no health endpoint — status is synthesized from env config.",
205
+ ].join("\n"), {}, async () => {
206
+ try {
207
+ const result = await adapter.status();
208
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
209
+ }
210
+ catch (e) {
211
+ return toMcpError(e);
212
+ }
213
+ });
214
+ // ── Tool 4: decide_list_models ───────────────────────────────────────────────
215
+ server.tool("decide_list_models", [
216
+ "List available models or checkpoints for the active provider.",
217
+ "",
218
+ "Returns: [{ id, aliases?, description? }]",
219
+ " - Jev: model IDs and aliases from GET /v1/models",
220
+ " - Laya: loaded checkpoints from GET /health",
254
221
  "",
255
222
  "When to call:",
256
- " - Before pinning a versioned model ID (e.g. jev-1.13.0) in jev_decide",
257
- " - To check whether jev-preview is available on this account",
258
- " - To confirm which model version is currently behind jev-latest",
223
+ " - Before pinning a versioned model ID in decide_predict",
224
+ " - To check which checkpoints are loaded in a local Laya instance",
259
225
  ].join("\n"), {}, async () => {
260
226
  try {
261
- const models = await listModels();
262
- return {
263
- content: [{ type: "text", text: JSON.stringify(models, null, 2) }],
264
- };
227
+ const result = await adapter.listModels();
228
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
265
229
  }
266
230
  catch (e) {
267
- const message = e instanceof Error ? e.message : String(e);
268
- return {
269
- content: [{ type: "text", text: `Error fetching models: ${message}` }],
270
- isError: true,
271
- };
231
+ return toMcpError(e);
272
232
  }
273
233
  });
274
234
  // ─── Start ───────────────────────────────────────────────────────────────────
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}