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/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
- const cfgPath = path.join(kbDir, 'config.json');
454
- assert.equal(fs.existsSync(cfgPath), true);
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.7.2",
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.7.2": {
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.7.2": {
69
+ "GxMcp.Gateway/3.9.0": {
70
70
  "type": "project",
71
71
  "serviceable": false,
72
72
  "sha512": ""
Binary file
Binary file
@@ -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.7.2",
4
- "sourceCommit": "8bfec41e1fb31839fac72bd5696bf848285a194a",
3
+ "version": "3.9.0",
4
+ "sourceCommit": "9fac6a8ada3f87a633a857dbeb43eea101b0c085",
5
5
  "sourceCommitPolicy": "exact-tag",
6
- "generatedAtUtc": "2026-09-22T04:09:07.5291470Z",
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": "1ee0eefa9c32227a76bd6261040f651b06b6096029607f91c9386e064461bb9e",
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": "b01c1f14b0a9ac521c63f26a1c176765e8293784a362581370b01c86fbd3fffc"
24
+ "sha256": "864d16603041e8c62a86ab1870149af58ac400c3b421a1eeb659fb85d0456fa3"
25
25
  },
26
26
  {
27
27
  "path": "GxMcp.Gateway.exe",
28
28
  "size": 162304,
29
- "sha256": "f9e1bbd84d47f15f53b51229f49ee02e9b166ebd827f379691731ee3ca39b32f"
29
+ "sha256": "4660652b1710719df9ed4e31e742d2ef0ea433d4fe0a3a4b1e5dd37d98ce749a"
30
30
  },
31
31
  {
32
32
  "path": "tool_definitions.json",
33
- "size": 126649,
34
- "sha256": "1ee0eefa9c32227a76bd6261040f651b06b6096029607f91c9386e064461bb9e"
33
+ "size": 127996,
34
+ "sha256": "e3d3d6247eb5725ed1622e99c8d1a85ffe614ac950e9e2c58d2e37a8404b0b87"
35
35
  },
36
36
  {
37
37
  "path": "worker/GxMcp.Worker.exe",
38
- "size": 3476992,
39
- "sha256": "3ee2a43ec18b709b69d174e05abaefa70f9b3054a59935180152eb84ffee1bde"
38
+ "size": 3588096,
39
+ "sha256": "75b511b894704797e623f580b5bd95b77ba64239000f49c7f7706a10c8848953"
40
40
  }
41
41
  ]
42
42
  }
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "schemaVersion": "gxmcp-provenance/1",
3
- "version": "3.7.2",
4
- "sourceCommit": "8bfec41e1fb31839fac72bd5696bf848285a194a",
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": "858f4118fde52b680bc6bd39d52f607cc12c1e54f9d29a7d26bdb60690588d66"
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": "6e6ad2ac8abc7f5180455cf72ad36906b9532fcab43185a936344e9b952f3882"
17
+ "sha256": "5d9ec910d7b16b23b039bd3b1221504967dc861103999d3b44b47485fa9343a9"
18
18
  }
19
19
  ]
20
20
  }