@sassoftware/sas-score-mcp-serverjs 1.0.1-18 → 1.0.1-19
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.
|
@@ -55,17 +55,16 @@ score results of query... → Query results
|
|
|
55
55
|
- SCR: `sas-score-scr-score`
|
|
56
56
|
|
|
57
57
|
**Flow**:
|
|
58
|
-
1. Find model/job (
|
|
58
|
+
1. Find model/job (find-resources)
|
|
59
59
|
2. Score with inline data
|
|
60
60
|
3. Return prediction + input data merged
|
|
61
61
|
|
|
62
62
|
**Parameters** (MAS):
|
|
63
|
+
|
|
63
64
|
```
|
|
64
65
|
sas-score-mas-score({
|
|
65
66
|
model: "<model name>",
|
|
66
|
-
scenario: { a: 1, b: 2 }
|
|
67
|
-
uflag: false # prefix with underscore if needed
|
|
68
|
-
})
|
|
67
|
+
scenario: { a: 1, b: 2 }
|
|
69
68
|
```
|
|
70
69
|
|
|
71
70
|
**Parameters** (Job/JobDef):
|
|
@@ -91,9 +90,9 @@ sas-score-scr-score({
|
|
|
91
90
|
**Trigger phrases**: "score records from", "run model on table", "predict for customers in", "score rows from"
|
|
92
91
|
|
|
93
92
|
**Flow**:
|
|
94
|
-
1. Find model (
|
|
95
|
-
2. Find table (
|
|
96
|
-
3. Read rows from table (
|
|
93
|
+
1. Find model (find-resources)
|
|
94
|
+
2. Find table (find-resources) → get server
|
|
95
|
+
3. Read rows from table (read-strategy)
|
|
97
96
|
4. Score each row (or batch score)
|
|
98
97
|
5. Merge predictions with original rows
|
|
99
98
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sassoftware/sas-score-mcp-serverjs",
|
|
3
|
-
"version": "1.0.1-
|
|
3
|
+
"version": "1.0.1-19",
|
|
4
4
|
"description": "A mcp server for SAS Viya",
|
|
5
5
|
"author": "Deva Kumar <deva.kumar@sas.com>",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"openApi.json",
|
|
43
43
|
"openApi.yaml",
|
|
44
44
|
"scripts",
|
|
45
|
-
".skills"
|
|
45
|
+
".skills"
|
|
46
46
|
],
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
@@ -18,15 +18,15 @@ DO NOT USE for: find model, model metadata, list models, run programs/jobs, quer
|
|
|
18
18
|
PARAMETERS
|
|
19
19
|
- model: string — model name (required, exact match)
|
|
20
20
|
- scenario: object — input data as JSON (optional, defaults to {}). Example: {age:45, income:60000}
|
|
21
|
-
|
|
21
|
+
|
|
22
22
|
|
|
23
23
|
ROUTING RULES
|
|
24
|
-
- "score with model X using a=1, b=2" → { model: "X", scenario: {a:1, b:2}
|
|
25
|
-
- "predict using model Y with age=45, income=60000" → { model: "Y", scenario: {age:45, income:60000}
|
|
24
|
+
- "score with model X using a=1, b=2" → { model: "X", scenario: {a:1, b:2} }
|
|
25
|
+
- "predict using model Y with age=45, income=60000" → { model: "Y", scenario: {age:45, income:60000} }
|
|
26
26
|
|
|
27
27
|
EXAMPLES
|
|
28
|
-
- "score with model churn using age=45, income=60000" → { model: "churn", scenario: {age:45, income:60000}
|
|
29
|
-
- "predict creditScore for credit=700, debt=20000" → { model: "creditScore", scenario: {credit:700, debt:20000}
|
|
28
|
+
- "score with model churn using age=45, income=60000" → { model: "churn", scenario: {age:45, income:60000} }
|
|
29
|
+
- "predict creditScore for credit=700, debt=20000" → { model: "creditScore", scenario: {credit:700, debt:20000} }
|
|
30
30
|
|
|
31
31
|
NEGATIVE EXAMPLES (do not route here)
|
|
32
32
|
- "find model X" (use find-model)
|
|
@@ -44,8 +44,7 @@ Returns predictions, probabilities, scores merged with input data. Returns error
|
|
|
44
44
|
description: description,
|
|
45
45
|
inputSchema: z.object({
|
|
46
46
|
model: z.string(),
|
|
47
|
-
scenario: z.union([z.record(z.any()), z.string()]).optional()
|
|
48
|
-
uflag: z.boolean().nullable().optional()
|
|
47
|
+
scenario: z.union([z.record(z.any()), z.string()]).optional()
|
|
49
48
|
}),
|
|
50
49
|
|
|
51
50
|
handler: async (iparams) => {
|
|
@@ -59,7 +58,7 @@ Returns predictions, probabilities, scores merged with input data. Returns error
|
|
|
59
58
|
if (params.model && params.model.includes('.')) {
|
|
60
59
|
params.model = params.model.substring(0, params.model.lastIndexOf('.'));
|
|
61
60
|
}
|
|
62
|
-
|
|
61
|
+
|
|
63
62
|
log('modelScore params', params);
|
|
64
63
|
// Check if the params.scenario is a string and parse it
|
|
65
64
|
let r = await _masScoring(params)
|