@sassoftware/sas-score-mcp-serverjs 1.0.1-8 → 1.1.1
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/.skills/.claude-plugin/plugin.json +59 -0
- package/.skills/agents/sas-score-mcp-serverjs-agent.md +26 -0
- package/.skills/copilot-instructions.md +62 -0
- package/.skills/skills/README.md +204 -0
- package/.skills/skills/detail-strategy/SKILL.md +316 -0
- package/.skills/skills/find-library-server/SKILL.md +62 -0
- package/.skills/skills/find-resources/SKILL.md +66 -0
- package/.skills/skills/list-library/SKILL.md +30 -0
- package/.skills/skills/list-mas-job-jobdef/SKILL.md +31 -0
- package/.skills/skills/list-tables/SKILL.md +30 -0
- package/.skills/skills/read-strategy/SKILL.md +87 -0
- package/.skills/skills/request-routing/SKILL.md +112 -0
- package/.skills/skills/score-cas/SKILL.md +95 -0
- package/.skills/skills/score-job-jobdef/SKILL.md +58 -0
- package/.skills/skills/score-mas-scr/SKILL.md +58 -0
- package/.skills/skills/score-program/SKILL.md +59 -0
- package/.skills/skills/score-strategy/SKILL.md +39 -0
- package/README.md +96 -54
- package/cli.js +29 -38
- package/openApi.yaml +121 -121
- package/package.json +15 -13
- package/scripts/docs/SCORE_SKILL_REFERENCE.md +17 -16
- package/scripts/docs/TOOL_DESCRIPTION_TEMPLATE.md +3 -3
- package/scripts/docs/TOOL_UPDATES_SUMMARY.md +65 -63
- package/scripts/docs/oauth-http-transport.md +2 -2
- package/scripts/docs/sas-mcp-tools-reference.md +43 -32
- package/scripts/plot_msrp_usa.py +49 -0
- package/scripts/refreshtoken.js +58 -0
- package/scripts/runListScr.mjs +16 -0
- package/src/createMcpServer.js +4 -1
- package/src/expressMcpServer.js +47 -49
- package/src/oauthHandlers/authorize.js +4 -1
- package/src/oauthHandlers/baseUrl.js +4 -0
- package/src/oauthHandlers/callback.js +4 -0
- package/src/oauthHandlers/getMetadata.js +4 -0
- package/src/oauthHandlers/index.js +4 -0
- package/src/oauthHandlers/token.js +4 -0
- package/src/openApi.yaml +121 -121
- package/src/processHeaders.js +10 -7
- package/src/setupSkills.js +6 -9
- package/src/toolHelpers/_casScore.js +32 -0
- package/src/toolHelpers/_desc.js +14 -0
- package/src/toolHelpers/_findJob.js +12 -0
- package/src/toolHelpers/_findJobdef.js +10 -0
- package/src/toolHelpers/_findLibrary.js +11 -0
- package/src/toolHelpers/_findMas.js +13 -0
- package/src/toolHelpers/_findScr.js +36 -0
- package/src/toolHelpers/_findTable.js +11 -0
- package/src/toolHelpers/_listJobdefs.js +12 -2
- package/src/toolHelpers/_listJobs.js +19 -8
- package/src/toolHelpers/{_listModels.js → _listMas.js} +4 -4
- package/src/toolHelpers/_listScr.js +13 -0
- package/src/toolHelpers/{_scrInfo.js → _scrDescribe.js} +4 -4
- package/src/toolHelpers/_scrScore.js +2 -2
- package/src/toolHelpers/_submitCasl.js +19 -17
- package/src/toolHelpers/{_tableInfo.js → _tableDescribe.js} +2 -2
- package/src/toolHelpers/getLogonPayload.js +2 -2
- package/src/toolSet/casModelScore.js +93 -0
- package/src/toolSet/casProgramScore.js +105 -0
- package/src/toolSet/devaScore.js +11 -6
- package/src/toolSet/findJob.js +74 -59
- package/src/toolSet/findJobdef.js +67 -64
- package/src/toolSet/findLibrary.js +28 -23
- package/src/toolSet/findMas.js +72 -0
- package/src/toolSet/findScr.js +69 -0
- package/src/toolSet/findTable.js +34 -27
- package/src/toolSet/getEnv.js +57 -57
- package/src/toolSet/jobDescribe.js +65 -0
- package/src/toolSet/jobScore.js +90 -0
- package/src/toolSet/jobdefDescribe.js +67 -0
- package/src/toolSet/jobdefScore.js +85 -0
- package/src/toolSet/listJobdefs.js +17 -8
- package/src/toolSet/listJobs.js +15 -8
- package/src/toolSet/listLibraries.js +16 -10
- package/src/toolSet/listMas.js +71 -0
- package/src/toolSet/listScr.js +62 -0
- package/src/toolSet/listTables.js +78 -66
- package/src/toolSet/{runMacro.js → macroScore.js} +86 -82
- package/src/toolSet/makeTools.js +39 -25
- package/src/toolSet/masDescribe.js +67 -0
- package/src/toolSet/masScore.js +95 -0
- package/src/toolSet/{runProgram.js → programScore.js} +96 -93
- package/src/toolSet/readTable.js +43 -26
- package/src/toolSet/sasQuery.js +24 -18
- package/src/toolSet/scrDescribe.js +55 -0
- package/src/toolSet/scrScore.js +63 -70
- package/src/toolSet/searchAssets.js +1 -1
- package/src/toolSet/setContext.js +8 -3
- package/src/toolSet/superstat.js +61 -61
- package/src/toolSet/tableDescribe.js +65 -0
- package/.skills/sas-find-library-smart/SKILL.md +0 -155
- package/.skills/sas-find-resource-strategy/SKILL.md +0 -105
- package/.skills/sas-list-resource-strategy/SKILL.md +0 -124
- package/.skills/sas-list-tables-smart/SKILL.md +0 -128
- package/.skills/sas-read-and-score-strategy/SKILL.md +0 -113
- package/.skills/sas-read-strategy/SKILL.md +0 -154
- package/.skills/sas-request-classifier/SKILL.md +0 -74
- package/.skills/sas-score-workflow-strategy/SKILL.md +0 -314
- package/.skills_claude/CLAUDE.md +0 -201
- package/.skills_claude/agents/sas-score-mcp-serverjs-agent.md +0 -58
- package/.skills_claude/enforce-find-resource-strategy.md +0 -35
- package/.skills_github/agents/sas-score-mcp-serverjs-agent.md +0 -58
- package/.skills_github/copilot-instructions.md +0 -201
- package/.skills_github/enforce-find-resource-strategy.md +0 -35
- package/scripts/optimize_final.py +0 -140
- package/scripts/optimize_tools.py +0 -99
- package/scripts/setup-skills.js +0 -34
- package/scripts/update_descriptions.py +0 -46
- package/src/authpkce.js +0 -219
- package/src/handleGetDelete.js +0 -34
- package/src/handleRequest.js +0 -112
- package/src/hapiMcpServer.js +0 -241
- package/src/toolSet/findModel.js +0 -60
- package/src/toolSet/listModels.js +0 -56
- package/src/toolSet/modelInfo.js +0 -55
- package/src/toolSet/modelScore.js +0 -89
- package/src/toolSet/runCasProgram.js +0 -98
- package/src/toolSet/runJob.js +0 -81
- package/src/toolSet/runJobdef.js +0 -82
- package/src/toolSet/scrInfo.js +0 -52
- package/src/toolSet/tableInfo.js +0 -58
package/openApi.yaml
CHANGED
|
@@ -1,121 +1,121 @@
|
|
|
1
|
-
swagger: "2.0"
|
|
2
|
-
info:
|
|
3
|
-
title: SAS Viya Sample MCP Server API
|
|
4
|
-
version: "1.0.0"
|
|
5
|
-
description: API for interacting with the SAS Viya Sample MCP Server.
|
|
6
|
-
host: localhost:8080
|
|
7
|
-
basePath: /
|
|
8
|
-
schemes:
|
|
9
|
-
- http
|
|
10
|
-
- https
|
|
11
|
-
consumes:
|
|
12
|
-
- application/json
|
|
13
|
-
produces:
|
|
14
|
-
- application/json
|
|
15
|
-
paths:
|
|
16
|
-
/health:
|
|
17
|
-
get:
|
|
18
|
-
summary: Health check
|
|
19
|
-
description: Returns health and version information.
|
|
20
|
-
responses:
|
|
21
|
-
200:
|
|
22
|
-
description: Health information
|
|
23
|
-
schema:
|
|
24
|
-
type: object
|
|
25
|
-
properties:
|
|
26
|
-
name:
|
|
27
|
-
type: string
|
|
28
|
-
version:
|
|
29
|
-
type: string
|
|
30
|
-
description:
|
|
31
|
-
type: string
|
|
32
|
-
endpoints:
|
|
33
|
-
type: object
|
|
34
|
-
usage:
|
|
35
|
-
type: string
|
|
36
|
-
/apiMeta:
|
|
37
|
-
get:
|
|
38
|
-
summary: API metadata
|
|
39
|
-
description: Returns the OpenAPI specification for this server.
|
|
40
|
-
responses:
|
|
41
|
-
200:
|
|
42
|
-
description: OpenAPI document
|
|
43
|
-
schema:
|
|
44
|
-
type: object
|
|
45
|
-
/mcp:
|
|
46
|
-
options:
|
|
47
|
-
summary: CORS preflight
|
|
48
|
-
description: CORS preflight endpoint.
|
|
49
|
-
responses:
|
|
50
|
-
204:
|
|
51
|
-
description: No Content
|
|
52
|
-
post:
|
|
53
|
-
summary: MCP request
|
|
54
|
-
description: Handles MCP JSON-RPC requests.
|
|
55
|
-
parameters:
|
|
56
|
-
- name: body
|
|
57
|
-
in: body
|
|
58
|
-
required: true
|
|
59
|
-
schema:
|
|
60
|
-
type: object
|
|
61
|
-
- name: Authorization
|
|
62
|
-
in: header
|
|
63
|
-
required: false
|
|
64
|
-
type: string
|
|
65
|
-
description: Bearer token for authentication
|
|
66
|
-
- name: X-VIYA-SERVER
|
|
67
|
-
in: header
|
|
68
|
-
required: false
|
|
69
|
-
type: string
|
|
70
|
-
description: Override VIYA server
|
|
71
|
-
- name: X-REFRESH-TOKEN
|
|
72
|
-
in: header
|
|
73
|
-
required: false
|
|
74
|
-
type: string
|
|
75
|
-
description: Refresh token for authentication
|
|
76
|
-
- name: mcp-session-id
|
|
77
|
-
in: header
|
|
78
|
-
required: false
|
|
79
|
-
type: string
|
|
80
|
-
description: Session ID
|
|
81
|
-
responses:
|
|
82
|
-
200:
|
|
83
|
-
description: MCP response
|
|
84
|
-
schema:
|
|
85
|
-
type: object
|
|
86
|
-
500:
|
|
87
|
-
description: Server error
|
|
88
|
-
schema:
|
|
89
|
-
type: object
|
|
90
|
-
get:
|
|
91
|
-
summary: Get MCP session
|
|
92
|
-
description: Retrieves information for an MCP session.
|
|
93
|
-
parameters:
|
|
94
|
-
- name: mcp-session-id
|
|
95
|
-
in: header
|
|
96
|
-
required: true
|
|
97
|
-
type: string
|
|
98
|
-
description: Session ID
|
|
99
|
-
responses:
|
|
100
|
-
200:
|
|
101
|
-
description: Session information
|
|
102
|
-
schema:
|
|
103
|
-
type: object
|
|
104
|
-
400:
|
|
105
|
-
description: Invalid or missing session ID
|
|
106
|
-
delete:
|
|
107
|
-
summary: Delete MCP session
|
|
108
|
-
description: Deletes an MCP session.
|
|
109
|
-
parameters:
|
|
110
|
-
- name: mcp-session-id
|
|
111
|
-
in: header
|
|
112
|
-
required: true
|
|
113
|
-
type: string
|
|
114
|
-
description: Session ID
|
|
115
|
-
responses:
|
|
116
|
-
200:
|
|
117
|
-
description: Session deleted
|
|
118
|
-
schema:
|
|
119
|
-
type: object
|
|
120
|
-
400:
|
|
121
|
-
description: Invalid or missing session ID
|
|
1
|
+
swagger: "2.0"
|
|
2
|
+
info:
|
|
3
|
+
title: SAS Viya Sample MCP Server API
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
description: API for interacting with the SAS Viya Sample MCP Server.
|
|
6
|
+
host: localhost:8080
|
|
7
|
+
basePath: /
|
|
8
|
+
schemes:
|
|
9
|
+
- http
|
|
10
|
+
- https
|
|
11
|
+
consumes:
|
|
12
|
+
- application/json
|
|
13
|
+
produces:
|
|
14
|
+
- application/json
|
|
15
|
+
paths:
|
|
16
|
+
/health:
|
|
17
|
+
get:
|
|
18
|
+
summary: Health check
|
|
19
|
+
description: Returns health and version information.
|
|
20
|
+
responses:
|
|
21
|
+
200:
|
|
22
|
+
description: Health information
|
|
23
|
+
schema:
|
|
24
|
+
type: object
|
|
25
|
+
properties:
|
|
26
|
+
name:
|
|
27
|
+
type: string
|
|
28
|
+
version:
|
|
29
|
+
type: string
|
|
30
|
+
description:
|
|
31
|
+
type: string
|
|
32
|
+
endpoints:
|
|
33
|
+
type: object
|
|
34
|
+
usage:
|
|
35
|
+
type: string
|
|
36
|
+
/apiMeta:
|
|
37
|
+
get:
|
|
38
|
+
summary: API metadata
|
|
39
|
+
description: Returns the OpenAPI specification for this server.
|
|
40
|
+
responses:
|
|
41
|
+
200:
|
|
42
|
+
description: OpenAPI document
|
|
43
|
+
schema:
|
|
44
|
+
type: object
|
|
45
|
+
/mcp:
|
|
46
|
+
options:
|
|
47
|
+
summary: CORS preflight
|
|
48
|
+
description: CORS preflight endpoint.
|
|
49
|
+
responses:
|
|
50
|
+
204:
|
|
51
|
+
description: No Content
|
|
52
|
+
post:
|
|
53
|
+
summary: MCP request
|
|
54
|
+
description: Handles MCP JSON-RPC requests.
|
|
55
|
+
parameters:
|
|
56
|
+
- name: body
|
|
57
|
+
in: body
|
|
58
|
+
required: true
|
|
59
|
+
schema:
|
|
60
|
+
type: object
|
|
61
|
+
- name: Authorization
|
|
62
|
+
in: header
|
|
63
|
+
required: false
|
|
64
|
+
type: string
|
|
65
|
+
description: Bearer token for authentication
|
|
66
|
+
- name: X-VIYA-SERVER
|
|
67
|
+
in: header
|
|
68
|
+
required: false
|
|
69
|
+
type: string
|
|
70
|
+
description: Override VIYA server
|
|
71
|
+
- name: X-REFRESH-TOKEN
|
|
72
|
+
in: header
|
|
73
|
+
required: false
|
|
74
|
+
type: string
|
|
75
|
+
description: Refresh token for authentication
|
|
76
|
+
- name: mcp-session-id
|
|
77
|
+
in: header
|
|
78
|
+
required: false
|
|
79
|
+
type: string
|
|
80
|
+
description: Session ID
|
|
81
|
+
responses:
|
|
82
|
+
200:
|
|
83
|
+
description: MCP response
|
|
84
|
+
schema:
|
|
85
|
+
type: object
|
|
86
|
+
500:
|
|
87
|
+
description: Server error
|
|
88
|
+
schema:
|
|
89
|
+
type: object
|
|
90
|
+
get:
|
|
91
|
+
summary: Get MCP session
|
|
92
|
+
description: Retrieves information for an MCP session.
|
|
93
|
+
parameters:
|
|
94
|
+
- name: mcp-session-id
|
|
95
|
+
in: header
|
|
96
|
+
required: true
|
|
97
|
+
type: string
|
|
98
|
+
description: Session ID
|
|
99
|
+
responses:
|
|
100
|
+
200:
|
|
101
|
+
description: Session information
|
|
102
|
+
schema:
|
|
103
|
+
type: object
|
|
104
|
+
400:
|
|
105
|
+
description: Invalid or missing session ID
|
|
106
|
+
delete:
|
|
107
|
+
summary: Delete MCP session
|
|
108
|
+
description: Deletes an MCP session.
|
|
109
|
+
parameters:
|
|
110
|
+
- name: mcp-session-id
|
|
111
|
+
in: header
|
|
112
|
+
required: true
|
|
113
|
+
type: string
|
|
114
|
+
description: Session ID
|
|
115
|
+
responses:
|
|
116
|
+
200:
|
|
117
|
+
description: Session deleted
|
|
118
|
+
schema:
|
|
119
|
+
type: object
|
|
120
|
+
400:
|
|
121
|
+
description: Invalid or missing session ID
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sassoftware/sas-score-mcp-serverjs",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "A mcp server for SAS Viya",
|
|
5
5
|
"author": "Deva Kumar <deva.kumar@sas.com>",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -15,22 +15,27 @@
|
|
|
15
15
|
"test": "cd test && node",
|
|
16
16
|
"debug": "cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --inspect-brk cli.js",
|
|
17
17
|
"getViyatls": "bash ./scripts/getViyaca.sh",
|
|
18
|
-
"
|
|
19
|
-
"
|
|
18
|
+
"push2acr": "bash ./push2acr.sh",
|
|
19
|
+
"push2ghcr": "bash ./push2ghcr.sh",
|
|
20
20
|
"bump": "npm version prerelease",
|
|
21
|
-
"pub": "npm publish --tag dev --access public"
|
|
22
|
-
"setup-skills": "node scripts/setup-skills.js"
|
|
21
|
+
"pub": "npm publish --tag dev --access public"
|
|
23
22
|
},
|
|
24
23
|
"repository": "https://github.com/sassoftware/sas-score-mcp-serverjs",
|
|
24
|
+
"bugs": {
|
|
25
|
+
"url": "https://github.com/sassoftware/sas-score-mcp-serverjs/issues"
|
|
26
|
+
},
|
|
25
27
|
"keywords": [
|
|
26
28
|
"SAS Viya",
|
|
27
29
|
"mcp-serverjs",
|
|
28
|
-
"
|
|
30
|
+
"SAS Viya scoring",
|
|
29
31
|
"Viya actions",
|
|
30
32
|
"restaf",
|
|
31
33
|
"restafedit",
|
|
32
34
|
"restaflib",
|
|
33
|
-
"model context protocol"
|
|
35
|
+
"model context protocol",
|
|
36
|
+
"skills",
|
|
37
|
+
"agent",
|
|
38
|
+
"Agentic AI"
|
|
34
39
|
],
|
|
35
40
|
"main": "./cli.js",
|
|
36
41
|
"bin": {
|
|
@@ -42,8 +47,6 @@
|
|
|
42
47
|
"openApi.json",
|
|
43
48
|
"openApi.yaml",
|
|
44
49
|
"scripts",
|
|
45
|
-
".skills_github",
|
|
46
|
-
".skills_claude",
|
|
47
50
|
".skills"
|
|
48
51
|
],
|
|
49
52
|
"dependencies": {
|
|
@@ -51,8 +54,7 @@
|
|
|
51
54
|
"@sassoftware/restaf": "^5.7.2",
|
|
52
55
|
"@sassoftware/restafedit": "^3.10.5",
|
|
53
56
|
"@sassoftware/restaflib": "^5.7.2",
|
|
54
|
-
"
|
|
55
|
-
"axios": "^1.13.2",
|
|
57
|
+
"axios": "^1.13.5",
|
|
56
58
|
"body-parser": "^2.2.1",
|
|
57
59
|
"cors": "^2.8.5",
|
|
58
60
|
"cross-env": "^10.1.0",
|
|
@@ -64,8 +66,8 @@
|
|
|
64
66
|
"node-cache": "^5.1.2",
|
|
65
67
|
"open": "^11.0.0",
|
|
66
68
|
"selfsigned": "^5.2.0",
|
|
67
|
-
"undici": "^7.
|
|
68
|
-
"uuid": "^
|
|
69
|
+
"undici": "^7.24.0",
|
|
70
|
+
"uuid": "^14.0.0",
|
|
69
71
|
"zod": "^4.2.1"
|
|
70
72
|
},
|
|
71
73
|
"devDependencies": {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Score Skill Documentation
|
|
1
|
+
# Score Skill Documentation
|
|
2
2
|
|
|
3
3
|
## Overview
|
|
4
4
|
The `score` skill is a generic scoring interface that automatically routes scoring requests to the appropriate tool based on the model type specified in the request.
|
|
@@ -10,11 +10,11 @@ score <name>.<type> [scenario =<key=value pairs>]
|
|
|
10
10
|
```
|
|
11
11
|
|
|
12
12
|
## Supported Types
|
|
13
|
-
- **job**
|
|
14
|
-
- **jobdef**
|
|
15
|
-
- **mas**
|
|
16
|
-
- **scr**
|
|
17
|
-
- **sas**
|
|
13
|
+
- **job** — Route to `job-score` for job-based scoring
|
|
14
|
+
- **jobdef** — Route to `jobdef-score` for job definition-based scoring
|
|
15
|
+
- **mas** — Route to `mas-score` (Model Aggregation Service)
|
|
16
|
+
- **scr** — Route to `scr-score` (Score Code Runtime container)
|
|
17
|
+
- **sas** — Route to `program-score` (arbitrary SAS/SQL scoring)
|
|
18
18
|
|
|
19
19
|
## Usage Examples
|
|
20
20
|
|
|
@@ -23,21 +23,21 @@ score <name>.<type> [scenario =<key=value pairs>]
|
|
|
23
23
|
score with model churn.mas where scenario =age=45,income=60000
|
|
24
24
|
score mymodel.mas using age=45, income=60000
|
|
25
25
|
```
|
|
26
|
-
Routes to: `
|
|
26
|
+
Routes to: `mas-score` with model name and scenario parameters
|
|
27
27
|
|
|
28
28
|
### Job-Based Scoring
|
|
29
29
|
```
|
|
30
30
|
score with model monthly_scorer.job scenario =month=10,year=2025
|
|
31
31
|
score mymodel.job with month=10, year=2025
|
|
32
32
|
```
|
|
33
|
-
Routes to: `
|
|
33
|
+
Routes to: `job-score` with job name and parameters
|
|
34
34
|
|
|
35
35
|
### Job Definition Scoring
|
|
36
36
|
```
|
|
37
37
|
score fraud_detector.jobdef using amount=500,merchant=online
|
|
38
38
|
score predictions.jobdef where scenario =x=1,y=2
|
|
39
39
|
```
|
|
40
|
-
Routes to: `
|
|
40
|
+
Routes to: `jobdef-score` with jobdef name and parameters
|
|
41
41
|
|
|
42
42
|
### SCR (Score Code Runtime) Scoring
|
|
43
43
|
```
|
|
@@ -51,7 +51,7 @@ Routes to: `scr-score` with SCR URL and scenario
|
|
|
51
51
|
score predictions.sas where scenario =x=1,y=2
|
|
52
52
|
score my_scoring_code.sas using month=10,year=2025
|
|
53
53
|
```
|
|
54
|
-
Routes to: `
|
|
54
|
+
Routes to: `program-score` with scenario parameters
|
|
55
55
|
|
|
56
56
|
## Parameter Details
|
|
57
57
|
|
|
@@ -89,11 +89,11 @@ age=45,income=60000,credit=700
|
|
|
89
89
|
The skill automatically infers the type from the model name:
|
|
90
90
|
|
|
91
91
|
```
|
|
92
|
-
mymodel.mas
|
|
93
|
-
scorer.job
|
|
94
|
-
detector.jobdef
|
|
95
|
-
risk.scr
|
|
96
|
-
predict.sas
|
|
92
|
+
mymodel.mas → type = "mas"
|
|
93
|
+
scorer.job → type = "job"
|
|
94
|
+
detector.jobdef → type = "jobdef"
|
|
95
|
+
risk.scr → type = "scr"
|
|
96
|
+
predict.sas → type = "sas"
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
If the type is not specified in the model name or as a parameter, the skill will ask for clarification:
|
|
@@ -134,9 +134,10 @@ All responses include metadata indicating which tool was invoked.
|
|
|
134
134
|
|
|
135
135
|
The skill is defined in `src/toolSet/scoreSkill.js` and:
|
|
136
136
|
- Parses model name to extract type
|
|
137
|
-
- Normalizes type names (e.g., `jobs`
|
|
137
|
+
- Normalizes type names (e.g., `jobs` → `job`)
|
|
138
138
|
- Routes to appropriate tool handler
|
|
139
139
|
- Attaches scoring metadata to response
|
|
140
140
|
- Handles errors from backend tools
|
|
141
141
|
|
|
142
142
|
The skill is automatically registered in `makeTools.js` and available alongside other MCP tools.
|
|
143
|
+
|
|
@@ -147,11 +147,11 @@ Before marking a tool as conforming to the template:
|
|
|
147
147
|
|
|
148
148
|
## Tools Updated to Template
|
|
149
149
|
|
|
150
|
-
- [x]
|
|
151
|
-
- [x]
|
|
150
|
+
- [x] listMas.js - ✅ Already conforms
|
|
151
|
+
- [x] findMas.js - 🔧 Needs cleanup (remove redundancy)
|
|
152
152
|
- [ ] deval.js - 🔧 Needs major expansion
|
|
153
153
|
- [ ] devaScore.js - 🔧 Needs expansion
|
|
154
154
|
- [ ] setContext.js - 🔧 Needs expansion
|
|
155
|
-
- [ ]
|
|
155
|
+
- [ ] masDescribe.js - 🔧 Needs expansion
|
|
156
156
|
- [ ] readTable.js - ✅ Mostly conforms (minor tweaks)
|
|
157
157
|
- [ ] ... (other tools)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Tool Description Standardization - Update Summary
|
|
1
|
+
# Tool Description Standardization - Update Summary
|
|
2
2
|
|
|
3
3
|
## Overview
|
|
4
4
|
All tool descriptions have been standardized to follow a consistent template format. This ensures:
|
|
@@ -14,72 +14,72 @@ See `TOOL_DESCRIPTION_TEMPLATE.md` for the complete template specification and v
|
|
|
14
14
|
|
|
15
15
|
## Tools Updated
|
|
16
16
|
|
|
17
|
-
###
|
|
17
|
+
### ✅ Tools Fully Conforming to Template
|
|
18
18
|
|
|
19
19
|
#### Major Updates (5 tools)
|
|
20
20
|
|
|
21
|
-
1. **
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
21
|
+
1. **findMas.js** - Cleaned up and standardized
|
|
22
|
+
- âœ‚ï¸ Removed redundant JSON metadata object
|
|
23
|
+
- âœ‚ï¸ Removed confusing/error lines (41-47) that listed find lib/table/job incorrectly
|
|
24
|
+
- ✅ Now has all required template sections
|
|
25
|
+
- ✅ Clear LLM invocation guidance
|
|
26
26
|
|
|
27
27
|
2. **deval.js** - Expanded from 2 lines to comprehensive format
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
28
|
+
- âž• Added "LLM Invocation Guidance" section with 4 use cases
|
|
29
|
+
- âž• Added "Do NOT use this tool for" section (4 items)
|
|
30
|
+
- âž• Added clear "Purpose" statement
|
|
31
|
+
- âž• Added "Parameters" documentation
|
|
32
|
+
- âž• Added "Response Contract" describing return format
|
|
33
|
+
- âž• Added "Disambiguation & Clarification" section
|
|
34
|
+
- âž• Added 3 real-world "Examples" with parameter mappings
|
|
35
|
+
- âž• Added "Negative Examples" section
|
|
36
|
+
- âž• Added "Related Tools" section
|
|
37
37
|
|
|
38
38
|
3. **setContext.js** - Expanded with comprehensive guidance
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
39
|
+
- âž• Added "LLM Invocation Guidance" section with 4 use cases
|
|
40
|
+
- âž• Added "Do NOT use" section
|
|
41
|
+
- âž• Added detailed "Purpose" explaining session context switching
|
|
42
|
+
- âž• Enhanced "Parameters" with real server examples
|
|
43
|
+
- âž• Added "Response Contract" with detailed structure
|
|
44
|
+
- âž• Added "Disambiguation & Clarification" for edge cases
|
|
45
|
+
- âž• Added 4 real-world "Examples" with parameter mappings
|
|
46
|
+
- âž• Added "Negative Examples" section
|
|
47
|
+
- âž• Added "Related Tools" section
|
|
48
48
|
|
|
49
49
|
4. **devaScore.js** - Reformatted with template structure
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
|
|
58
|
-
5. **
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
50
|
+
- 🔄 Restructured from instruction-heavy to template format
|
|
51
|
+
- âž• Added "LLM Invocation Guidance" section
|
|
52
|
+
- âž• Added "Do NOT use" section
|
|
53
|
+
- âž• Added clear parameter documentation
|
|
54
|
+
- âž• Added "Response Contract" section
|
|
55
|
+
- âž• Added "Examples" and "Negative Examples" sections
|
|
56
|
+
- âž• Added "Notes" section explaining left-to-right fold
|
|
57
|
+
|
|
58
|
+
5. **masDescribe.js** - Expanded with comprehensive structure
|
|
59
|
+
- âž• Added "LLM Invocation Guidance" with 4 use cases
|
|
60
|
+
- âž• Added "Do NOT use" section
|
|
61
|
+
- âž• Enhanced "Purpose" statement
|
|
62
|
+
- âž• Added detailed "Response Contract" describing metadata fields
|
|
63
|
+
- âž• Added "Disambiguation & Clarification" section
|
|
64
|
+
- âž• Added 4 real-world "Examples" with parameter mappings
|
|
65
|
+
- âž• Added "Negative Examples" section
|
|
66
|
+
- âž• Added "Related Tools" showing workflow chain
|
|
67
67
|
|
|
68
68
|
#### Moderate Updates (1 tool)
|
|
69
69
|
|
|
70
70
|
6. **readTable.js** - Enhanced to fully conform to template
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
71
|
+
- 🔄 Restructured sections for template consistency
|
|
72
|
+
- âž• Enhanced "LLM Invocation Guidance" with 5 specific use cases
|
|
73
|
+
- âž• Improved "Do NOT use" section with explanation
|
|
74
|
+
- âž• Clarified "Parameters" format and added constraints
|
|
75
|
+
- 🔄 Renamed "Output" to "Response Contract" per template
|
|
76
|
+
- âž• Added "Pagination & Filtering" section with examples
|
|
77
|
+
- âž• Enhanced "Examples" with 5 detailed parameter mappings
|
|
78
|
+
- âž• Added comprehensive "Related Tools" section
|
|
79
79
|
|
|
80
80
|
#### Already Conforming (1 tool)
|
|
81
81
|
|
|
82
|
-
7. **
|
|
82
|
+
7. **listMas.js** - ✅ Already fully compliant
|
|
83
83
|
- Already had comprehensive template format
|
|
84
84
|
- No changes needed
|
|
85
85
|
|
|
@@ -110,11 +110,11 @@ Clear list of what NOT to do and which tools to use instead. Prevents misuse.
|
|
|
110
110
|
- How to clarify ambiguous requests
|
|
111
111
|
- Exact clarification questions to ask
|
|
112
112
|
|
|
113
|
-
### 7. Examples (
|
|
113
|
+
### 7. Examples (→ mapped params)
|
|
114
114
|
- Real-world user phrases
|
|
115
115
|
- Parameter mappings shown
|
|
116
116
|
- Includes various parameter combinations
|
|
117
|
-
- Format: `"user input"
|
|
117
|
+
- Format: `"user input" → { param: value }`
|
|
118
118
|
|
|
119
119
|
### 8. Negative Examples (should NOT call toolName)
|
|
120
120
|
- Common mistakes showing what NOT to do
|
|
@@ -160,12 +160,12 @@ Clear list of what NOT to do and which tools to use instead. Prevents misuse.
|
|
|
160
160
|
|
|
161
161
|
## Files Modified
|
|
162
162
|
|
|
163
|
-
1. `src/toolSet/
|
|
164
|
-
2. `src/toolSet/deval.js` - Expanded description (2
|
|
165
|
-
3. `src/toolSet/setContext.js` - Expanded description (9
|
|
166
|
-
4. `src/toolSet/devaScore.js` - Reformatted (12
|
|
167
|
-
5. `src/toolSet/
|
|
168
|
-
6. `src/toolSet/readTable.js` - Enhanced description (56
|
|
163
|
+
1. `src/toolSet/findMas.js` - Cleaned up redundancy
|
|
164
|
+
2. `src/toolSet/deval.js` - Expanded description (2 → 47 lines)
|
|
165
|
+
3. `src/toolSet/setContext.js` - Expanded description (9 → 60 lines)
|
|
166
|
+
4. `src/toolSet/devaScore.js` - Reformatted (12 → 54 lines)
|
|
167
|
+
5. `src/toolSet/masDescribe.js` - Expanded description (12 → 69 lines)
|
|
168
|
+
6. `src/toolSet/readTable.js` - Enhanced description (56 → 80 lines)
|
|
169
169
|
|
|
170
170
|
## Files Created
|
|
171
171
|
|
|
@@ -183,11 +183,11 @@ Consider updating remaining tools in the toolSet directory to match this templat
|
|
|
183
183
|
- `findTable.js`
|
|
184
184
|
- `job.js`
|
|
185
185
|
- `jobdef.js`
|
|
186
|
-
- `
|
|
186
|
+
- `tableDescribe.js`
|
|
187
187
|
- `program.js`
|
|
188
188
|
- `sasQuery.js`
|
|
189
|
-
- `
|
|
190
|
-
- `
|
|
189
|
+
- `masScore.js`
|
|
190
|
+
- `scrDescribe.js`
|
|
191
191
|
- `scrScore.js`
|
|
192
192
|
- And any others...
|
|
193
193
|
|
|
@@ -201,8 +201,10 @@ To verify a tool conforms to the template, check:
|
|
|
201
201
|
- [ ] Has "Parameters" section with type, default, and description for each param
|
|
202
202
|
- [ ] Has "Response Contract" describing the return format
|
|
203
203
|
- [ ] Has "Disambiguation & Clarification" section for edge cases
|
|
204
|
-
- [ ] Has "Examples (
|
|
204
|
+
- [ ] Has "Examples (→ mapped params)" section with 3+ real-world examples
|
|
205
205
|
- [ ] Has "Negative Examples (should NOT call...)" section with what NOT to do
|
|
206
206
|
- [ ] Has "Related Tools" section showing workflow context
|
|
207
207
|
- [ ] Uses proper markdown formatting (## headers, - bullets, `code`)
|
|
208
208
|
- [ ] Consistent formatting and tone throughout
|
|
209
|
+
|
|
210
|
+
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
TBD
|
|
7
7
|
|
|
8
|
-
## VSCODE
|
|
8
|
+
## VSCODE Github Copilot
|
|
9
9
|
|
|
10
10
|
### Scenario:
|
|
11
11
|
|
|
@@ -35,7 +35,7 @@ It appears that the / at the end of the redirect URI is important]
|
|
|
35
35
|
}
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
### pkce clientid when mcp server does
|
|
38
|
+
### pkce clientid when mcp server does the oauth flow
|
|
39
39
|
|
|
40
40
|
```js
|
|
41
41
|
|