genexus-mcp 3.7.2 → 3.9.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/cli/commands/axi.js +52 -0
- package/cli/index.js +10 -1
- package/cli/lib/client-adapters.test.js +1 -0
- package/cli/lib/config.js +11 -0
- package/cli/lib/runtime-stager.js +332 -0
- package/cli/lib/runtime-stager.test.js +221 -0
- package/cli/run.test.js +18 -3
- package/docs/llm_cli_mcp_playbook.md +28 -0
- package/package.json +2 -2
- package/publish/GxMcp.Gateway.deps.json +2 -2
- package/publish/GxMcp.Gateway.dll +0 -0
- package/publish/GxMcp.Gateway.exe +0 -0
- package/publish/config.json +12 -12
- package/publish/gxmcp-manifest.json +10 -10
- package/publish/gxmcp-sbom.json +4 -4
- package/publish/tool_definitions.json +9 -9
- package/publish/worker/GxMcp.Worker.exe +0 -0
package/cli/run.test.js
CHANGED
|
@@ -445,13 +445,28 @@ test('non-interactive init supports idempotent no-op', () => {
|
|
|
445
445
|
assert.ok(Array.isArray(firstParsed.ok.verification.checks), 'verification should have checks array');
|
|
446
446
|
assert.equal(firstParsed.meta.smokeSkipped, true, '--no-smoke should be reflected in meta');
|
|
447
447
|
|
|
448
|
+
const cfgPath = path.join(kbDir, 'config.json');
|
|
449
|
+
assert.equal(fs.existsSync(cfgPath), true);
|
|
450
|
+
const createdConfig = JSON.parse(fs.readFileSync(cfgPath, 'utf8'));
|
|
451
|
+
assert.equal(createdConfig.Server.ToolProfile, 'standard');
|
|
452
|
+
|
|
453
|
+
createdConfig.Server.ToolProfile = 'all';
|
|
454
|
+
const existingConfigBytes = JSON.stringify(createdConfig, null, 2);
|
|
455
|
+
fs.writeFileSync(cfgPath, existingConfigBytes);
|
|
456
|
+
|
|
448
457
|
const second = runCli(args, { env: testGatewayEnv });
|
|
449
458
|
assert.equal(second.status, 0);
|
|
450
459
|
const secondParsed = JSON.parse(second.stdout);
|
|
451
460
|
assert.equal(secondParsed.ok.noOp, true);
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
461
|
+
assert.equal(fs.readFileSync(cfgPath, 'utf8'), existingConfigBytes, 'init must not rewrite an existing profile');
|
|
462
|
+
|
|
463
|
+
delete createdConfig.Server.ToolProfile;
|
|
464
|
+
const profilelessConfigBytes = JSON.stringify(createdConfig, null, 2);
|
|
465
|
+
fs.writeFileSync(cfgPath, profilelessConfigBytes);
|
|
466
|
+
const third = runCli(args, { env: testGatewayEnv });
|
|
467
|
+
assert.equal(third.status, 0);
|
|
468
|
+
assert.equal(JSON.parse(third.stdout).ok.noOp, true);
|
|
469
|
+
assert.equal(fs.readFileSync(cfgPath, 'utf8'), profilelessConfigBytes, 'init must not retrofit profile-less configs');
|
|
455
470
|
|
|
456
471
|
removeTempPath(tempRoot, { recursive: true, force: true });
|
|
457
472
|
});
|
|
@@ -103,6 +103,34 @@ with `commandStale: false`, not as stale, because the launcher is valid. `doctor
|
|
|
103
103
|
|
|
104
104
|
For `tools/call`, parse `result.content[0].text` as JSON.
|
|
105
105
|
|
|
106
|
+
### Tool profiles and schema budgets
|
|
107
|
+
|
|
108
|
+
New neutral configs created by `genexus-mcp init` or client registration use
|
|
109
|
+
`Server.ToolProfile: "standard"`; existing gateway configs are not rewritten.
|
|
110
|
+
`genexus_whoami` reports the active profile and how to select another one.
|
|
111
|
+
|
|
112
|
+
| Profile | Tools | Use |
|
|
113
|
+
|---|---:|---|
|
|
114
|
+
| `standard` | 16 | Recommended default for Cursor, Codex, OpenCode, Antigravity, Claude Desktop, and other clients that eagerly load every schema. Includes core read/search/lifecycle, create, structure, variable, properties, and IO tools. |
|
|
115
|
+
| `core` | 11 | Read, search, inspect, edit, and lifecycle essentials. |
|
|
116
|
+
| `authoring` | 29 | Core plus the full object-authoring and refactoring surface. |
|
|
117
|
+
| `devops` | 33 | Core plus build, versioning, deployment, diagnostics, and worker operations. |
|
|
118
|
+
| `ui` | 18 | Core plus layout, form, browser, and WorkWithPlus tools. |
|
|
119
|
+
| `db` | 15 | Core plus database and data-view tools. |
|
|
120
|
+
| `all` | 54 | Every canonical tool; use when an agent needs an unrestricted surface. |
|
|
121
|
+
|
|
122
|
+
Profiles can be combined with `+`, for example `standard+db`. Set
|
|
123
|
+
`Server.ToolProfile` in config or `GXMCP_PROFILE` in the process environment.
|
|
124
|
+
Calling a known tool outside the active profile returns `ToolNotInProfile` with
|
|
125
|
+
the profile(s) that expose it and the setting to change. Legacy alias names
|
|
126
|
+
remain callable through compatibility rewrites but are not listed as tools.
|
|
127
|
+
|
|
128
|
+
The public list omits examples and shortens long descriptions to stay within
|
|
129
|
+
the enforced per-profile and per-tool byte budgets. Each tool description
|
|
130
|
+
points to `genexus://kb/tool-help/<tool>`; read that resource when full
|
|
131
|
+
constraints, rationale, or examples are needed. The original description and
|
|
132
|
+
complete input schema remain available there.
|
|
133
|
+
|
|
106
134
|
### KB context, leases, and compatibility
|
|
107
135
|
|
|
108
136
|
Use the neutral `stdio-isolated` + `ResolutionPolicy: "strict"` configuration
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "genexus-mcp",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.9.0",
|
|
4
4
|
"mcpName": "io.github.lennix1337/genexus",
|
|
5
5
|
"description": "GeneXus 16, GeneXus 17, GeneXus 18 MCP server with native SDK support; basic legacy compatibility for GeneXus Evolution 3, GeneXus Evolution 2, GeneXus Evolution 1, GeneXus 15, GeneXus 9.0, GeneXus 8.0 via com-gxpublic and dotnet-reflection drivers — read, edit, and analyze Knowledge Base objects directly from Claude, Cursor, and other AI agents over the Model Context Protocol.",
|
|
6
6
|
"keywords": [
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"automation"
|
|
33
33
|
],
|
|
34
34
|
"scripts": {
|
|
35
|
-
"test": "node --test cli/run.test.js cli/lib/client-adapters.test.js cli/docs.test.js scripts/lint.test.js scripts/verify-install.test.js && npm run test:live-contract",
|
|
35
|
+
"test": "node --test cli/run.test.js cli/lib/client-adapters.test.js cli/lib/runtime-stager.test.js cli/docs.test.js scripts/lint.test.js scripts/verify-install.test.js && npm run test:live-contract",
|
|
36
36
|
"lint": "node scripts/lint.js",
|
|
37
37
|
"test:live-contract": "pwsh -NoProfile -ExecutionPolicy Bypass -File scripts/tests/test-live.test.ps1",
|
|
38
38
|
"test:integration": "pwsh -NoProfile -ExecutionPolicy Bypass -File scripts/integration-preflight.ps1",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"targets": {
|
|
8
8
|
".NETCoreApp,Version=v10.0": {},
|
|
9
9
|
".NETCoreApp,Version=v10.0/win-x64": {
|
|
10
|
-
"GxMcp.Gateway/3.
|
|
10
|
+
"GxMcp.Gateway/3.9.0": {
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"Newtonsoft.Json": "13.0.3",
|
|
13
13
|
"System.Management": "10.0.5",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
}
|
|
67
67
|
},
|
|
68
68
|
"libraries": {
|
|
69
|
-
"GxMcp.Gateway/3.
|
|
69
|
+
"GxMcp.Gateway/3.9.0": {
|
|
70
70
|
"type": "project",
|
|
71
71
|
"serviceable": false,
|
|
72
72
|
"sha512": ""
|
|
Binary file
|
|
Binary file
|
package/publish/config.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
|
-
"GatewayMode": "stdio-isolated",
|
|
3
|
-
"Environment": {
|
|
4
|
-
"ResolutionPolicy": "strict"
|
|
5
|
-
},
|
|
6
|
-
"GeneXus": {
|
|
7
|
-
"InstallationPath": "C:\\Program Files (x86)\\GeneXus\\GeneXus18",
|
|
8
|
-
"WorkerExecutable": "worker\\\\GxMcp.Worker.exe"
|
|
9
|
-
},
|
|
10
|
-
"ConfigSchemaVersion": 2,
|
|
11
2
|
"Server": {
|
|
12
|
-
"HttpPort": 0,
|
|
13
3
|
"SessionIdleTimeoutMinutes": 10,
|
|
4
|
+
"HttpPort": 0,
|
|
14
5
|
"TerseResponses": true,
|
|
15
|
-
"EmitStructuredContent": false,
|
|
16
6
|
"McpStdio": true,
|
|
17
|
-
"WorkerIdleTimeoutMinutes": 5
|
|
7
|
+
"WorkerIdleTimeoutMinutes": 5,
|
|
8
|
+
"EmitStructuredContent": false
|
|
9
|
+
},
|
|
10
|
+
"ConfigSchemaVersion": 2,
|
|
11
|
+
"Environment": {
|
|
12
|
+
"ResolutionPolicy": "strict"
|
|
13
|
+
},
|
|
14
|
+
"GatewayMode": "stdio-isolated",
|
|
15
|
+
"GeneXus": {
|
|
16
|
+
"WorkerExecutable": "worker\\\\GxMcp.Worker.exe",
|
|
17
|
+
"InstallationPath": "C:\\Program Files (x86)\\GeneXus\\GeneXus18"
|
|
18
18
|
}
|
|
19
19
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "gxmcp-release-manifest/1",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"sourceCommit": "
|
|
3
|
+
"version": "3.9.0",
|
|
4
|
+
"sourceCommit": "9fac6a8ada3f87a633a857dbeb43eea101b0c085",
|
|
5
5
|
"sourceCommitPolicy": "exact-tag",
|
|
6
|
-
"generatedAtUtc": "2026-09-
|
|
6
|
+
"generatedAtUtc": "2026-09-24T02:07:35.4354126Z",
|
|
7
7
|
"runtime": {
|
|
8
8
|
"gateway": "net10.0-windows",
|
|
9
9
|
"worker": "net48-x86",
|
|
@@ -15,28 +15,28 @@
|
|
|
15
15
|
"2026-07-28"
|
|
16
16
|
],
|
|
17
17
|
"schema": "tool_definitions.json",
|
|
18
|
-
"schemaSha256": "
|
|
18
|
+
"schemaSha256": "e3d3d6247eb5725ed1622e99c8d1a85ffe614ac950e9e2c58d2e37a8404b0b87",
|
|
19
19
|
"provenance": "gxmcp-sbom.json",
|
|
20
20
|
"artifacts": [
|
|
21
21
|
{
|
|
22
22
|
"path": "gxmcp-sbom.json",
|
|
23
23
|
"size": 590,
|
|
24
|
-
"sha256": "
|
|
24
|
+
"sha256": "864d16603041e8c62a86ab1870149af58ac400c3b421a1eeb659fb85d0456fa3"
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
"path": "GxMcp.Gateway.exe",
|
|
28
28
|
"size": 162304,
|
|
29
|
-
"sha256": "
|
|
29
|
+
"sha256": "4660652b1710719df9ed4e31e742d2ef0ea433d4fe0a3a4b1e5dd37d98ce749a"
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
"path": "tool_definitions.json",
|
|
33
|
-
"size":
|
|
34
|
-
"sha256": "
|
|
33
|
+
"size": 127996,
|
|
34
|
+
"sha256": "e3d3d6247eb5725ed1622e99c8d1a85ffe614ac950e9e2c58d2e37a8404b0b87"
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
"path": "worker/GxMcp.Worker.exe",
|
|
38
|
-
"size":
|
|
39
|
-
"sha256": "
|
|
38
|
+
"size": 3588096,
|
|
39
|
+
"sha256": "75b511b894704797e623f580b5bd95b77ba64239000f49c7f7706a10c8848953"
|
|
40
40
|
}
|
|
41
41
|
]
|
|
42
42
|
}
|
package/publish/gxmcp-sbom.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "gxmcp-provenance/1",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"sourceCommit": "
|
|
3
|
+
"version": "3.9.0",
|
|
4
|
+
"sourceCommit": "9fac6a8ada3f87a633a857dbeb43eea101b0c085",
|
|
5
5
|
"sourceCommitPolicy": "exact-tag",
|
|
6
6
|
"components": [
|
|
7
7
|
{
|
|
8
8
|
"name": "genexus-mcp",
|
|
9
9
|
"lockfile": "package-lock.json",
|
|
10
10
|
"size": 39914,
|
|
11
|
-
"sha256": "
|
|
11
|
+
"sha256": "f4b4ba71cb46893641b6724d23f6fd374915c7b1e1ed86cf809f6a55256893c6"
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
"name": "nexus-ide",
|
|
15
15
|
"lockfile": "src/nexus-ide/package-lock.json",
|
|
16
16
|
"size": 274983,
|
|
17
|
-
"sha256": "
|
|
17
|
+
"sha256": "5d9ec910d7b16b23b039bd3b1221504967dc861103999d3b44b47485fa9343a9"
|
|
18
18
|
}
|
|
19
19
|
]
|
|
20
20
|
}
|