genexus-mcp 2.1.7 → 2.3.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/README.md +61 -6
- package/package.json +1 -1
- package/publish/GxMcp.Gateway.deps.json +2 -2
- package/publish/GxMcp.Gateway.dll +0 -0
- package/publish/GxMcp.Gateway.exe +0 -0
- package/publish/GxMcp.Gateway.pdb +0 -0
- package/publish/config.json +19 -18
- package/publish/tool_definitions.json +31 -1062
- package/publish/worker/GxMcp.Worker.exe +0 -0
- package/publish/worker/GxMcp.Worker.pdb +0 -0
package/README.md
CHANGED
|
@@ -131,14 +131,17 @@ Still stuck? [Open an issue](https://github.com/lennix1337/Genexus18MCP/issues)
|
|
|
131
131
|
The worker exposes these tool families to the MCP router. *(Detailed schemas in [`GEMINI.md`](GEMINI.md).)*
|
|
132
132
|
|
|
133
133
|
- **Search & Discovery** — `genexus_query`, `genexus_read`, `genexus_inspect`, `genexus_list_objects`, `genexus_properties`
|
|
134
|
-
- **Editing & Architecture** — `genexus_edit`, `genexus_create_object`, `genexus_refactor`, `genexus_forge`, `genexus_add_variable`
|
|
135
|
-
- **Analysis** — `genexus_analyze`, `
|
|
134
|
+
- **Editing & Architecture** — `genexus_edit`, `genexus_create_object`, `genexus_delete_object`, `genexus_refactor`, `genexus_forge`, `genexus_add_variable`
|
|
135
|
+
- **Analysis** — `genexus_analyze` (modes: `linter`, `navigation`, `hierarchy`, `impact`, `data_context`, `ui_context`, `pattern_metadata`, `summary`, `explain`), `genexus_inject_context`, `genexus_doc`, `genexus_search_source`
|
|
136
136
|
- **File System & Assets** — `genexus_asset`, `genexus_export_object`, `genexus_import_object`
|
|
137
|
-
- **History & DB** — `genexus_history`, `
|
|
137
|
+
- **History & DB** — `genexus_history`, `genexus_sql` (`action=ddl` or `action=navigation`), `genexus_structure`
|
|
138
138
|
- **Lifecycle & Build** — `genexus_lifecycle`, `genexus_test`, `genexus_format`
|
|
139
139
|
- **Native Layout SDK** — `genexus_layout` (`get_tree`, `find_controls`, `set_property`, `rename_printblock`, `add_printblock`, `get_preview`, …)
|
|
140
|
+
- **KB pool (v2.3.0+)** — `genexus_kb` (`list`, `open`, `close`, `set_default`) for multi-KB parallel work
|
|
140
141
|
- **Patterns** — Smart XML generation/interpretation (e.g., WorkWithPlus PatternInstance).
|
|
141
142
|
|
|
143
|
+
> **Multi-KB (v2.3.0+):** every non-meta tool takes an optional `kb` argument (alias or absolute path). The gateway can hold up to `Server.MaxOpenKbs` (default 3) KBs open at once, each in its own Worker process — calls to different KBs run truly in parallel. See [Advanced Configuration](#advanced-configuration) for the `KBs[]` schema.
|
|
144
|
+
|
|
142
145
|
**Edit modes** (`genexus_edit`): `xml` (full replacement, default), `ops` (typed semantic ops like `set_attribute`, `add_rule`), `patch` (JSON-Patch RFC 6902).
|
|
143
146
|
|
|
144
147
|
**Safe by default**: all write tools accept `dryRun: true` (returns a preview without mutating the KB) and `idempotencyKey` (safe retries; concurrent calls coalesce, results cached 15 min).
|
|
@@ -173,18 +176,53 @@ The installer writes a `config.json` for you. To customize networking, timeouts,
|
|
|
173
176
|
"HttpPort": 5000,
|
|
174
177
|
"BindAddress": "127.0.0.1",
|
|
175
178
|
"SessionIdleTimeoutMinutes": 10,
|
|
176
|
-
"WorkerIdleTimeoutMinutes": 5
|
|
179
|
+
"WorkerIdleTimeoutMinutes": 5,
|
|
180
|
+
"MaxOpenKbs": 3
|
|
177
181
|
},
|
|
178
182
|
"GeneXus": {
|
|
179
183
|
"InstallationPath": "C:\\Program Files (x86)\\GeneXus\\GeneXus18",
|
|
180
184
|
"WorkerExecutable": "worker\\GxMcp.Worker.exe"
|
|
181
185
|
},
|
|
182
186
|
"Environment": {
|
|
183
|
-
"
|
|
187
|
+
"DefaultKb": "main",
|
|
188
|
+
"KBs": [
|
|
189
|
+
{ "alias": "main", "path": "C:\\KBs\\YourKB" },
|
|
190
|
+
{ "alias": "legacy", "path": "C:\\KBs\\OtherKB" }
|
|
191
|
+
]
|
|
184
192
|
}
|
|
185
193
|
}
|
|
186
194
|
```
|
|
187
195
|
|
|
196
|
+
> **Backward compatibility:** old configs with a single `Environment.KBPath` keep working — the gateway auto-migrates them to `KBs[]` + `DefaultKb` at load time.
|
|
197
|
+
|
|
198
|
+
### Working with multiple KBs
|
|
199
|
+
|
|
200
|
+
Once you declare more than one KB in `Environment.KBs[]`, every tool accepts an optional `kb` argument:
|
|
201
|
+
|
|
202
|
+
```jsonc
|
|
203
|
+
// LLM example: list procedures in two KBs in parallel
|
|
204
|
+
{ "tool": "genexus_list_objects", "arguments": { "kb": "main", "type": "Procedure" } }
|
|
205
|
+
{ "tool": "genexus_list_objects", "arguments": { "kb": "legacy", "type": "Transaction" } }
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Resolution rules when `kb` is omitted:
|
|
209
|
+
- exactly 1 KB open → uses that KB
|
|
210
|
+
- 0 KBs open + `DefaultKb` set → opens `DefaultKb` lazily
|
|
211
|
+
- 2+ KBs open → server returns `KB_AMBIGUOUS` and you must pass `kb` explicitly
|
|
212
|
+
|
|
213
|
+
Manage the pool at runtime:
|
|
214
|
+
|
|
215
|
+
```jsonc
|
|
216
|
+
{ "tool": "genexus_kb", "arguments": { "action": "list" } }
|
|
217
|
+
// → { openKbs: [{alias, path, pid, workingSetMB, idleSeconds}], maxOpenKbs, defaultKb, declaredKbs }
|
|
218
|
+
|
|
219
|
+
{ "tool": "genexus_kb", "arguments": { "action": "open", "alias": "adhoc", "path": "C:/KBs/ScratchKB" } }
|
|
220
|
+
{ "tool": "genexus_kb", "arguments": { "action": "close", "alias": "legacy" } }
|
|
221
|
+
{ "tool": "genexus_kb", "arguments": { "action": "set_default", "alias": "main" } } // persists to config.json
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
When the pool is full and no Worker is idle, the server returns `KB_POOL_FULL` — close one explicitly or raise `Server.MaxOpenKbs`. Each Worker carries the SDK in its own process (~200–400 MB idle, up to 1–2 GB on heavy KBs), so size the pool against available RAM.
|
|
225
|
+
|
|
188
226
|
### Architecture
|
|
189
227
|
|
|
190
228
|
```mermaid
|
|
@@ -194,7 +232,8 @@ graph LR
|
|
|
194
232
|
C -->|Native SDK| D[GeneXus KB]
|
|
195
233
|
```
|
|
196
234
|
|
|
197
|
-
- **
|
|
235
|
+
- **Worker pool (v2.3.0+)**: one .NET 4.8 Worker process per open KB, capped by `MaxOpenKbs` (default 3). Workers are spawned lazily, recycled by `WorkerIdleTimeoutMinutes`, and evicted LRU when the pool is full.
|
|
236
|
+
- **Cross-KB parallelism**: tool calls to different KBs run on different Worker processes and never block each other. Calls to the same KB are still serialized by the GeneXus SDK's STA requirement.
|
|
198
237
|
- **Gateway reuse**: multiple IDE instances share one gateway via lease files at `%LOCALAPPDATA%\GenexusMCP\gateway-leases`.
|
|
199
238
|
- **HTTP mode**: also available at `http://127.0.0.1:5000/mcp` with SSE. Header: `MCP-Protocol-Version: 2025-11-25`.
|
|
200
239
|
|
|
@@ -208,6 +247,22 @@ Want to contribute or run a local dev build?
|
|
|
208
247
|
2. Run `.\setup.bat` — checks prerequisites, builds the C# components, and auto-registers the local build with detected AI clients.
|
|
209
248
|
3. If GeneXus or your KB aren't auto-detected, follow the prompts.
|
|
210
249
|
|
|
250
|
+
### Bundled AI skills (`.gemini/skills/`)
|
|
251
|
+
|
|
252
|
+
This repo ships a set of **agent skills** under `.gemini/skills/` that any MCP-compatible client with skill support (Gemini CLI, Claude Code via plugin, etc.) can load to ground its GeneXus reasoning:
|
|
253
|
+
|
|
254
|
+
| Skill | What it gives the agent |
|
|
255
|
+
|---|---|
|
|
256
|
+
| `genexus-mastery` | This repository's preferred MCP workflow + multi-KB usage |
|
|
257
|
+
| `genexus18-guidelines` | Local engineering rules layered on top of Nexa |
|
|
258
|
+
| `nexa` | Full GeneXus 18 reference set: every object type, command, type, property — imported from the official [`genexuslabs/genexus-skills`](https://github.com/genexuslabs/genexus-skills) |
|
|
259
|
+
| `frontend/chameleon-controls-library` | 58 Chameleon UI component specs |
|
|
260
|
+
| `frontend/mercury-design-system` | Mercury tokens, bundles, theming |
|
|
261
|
+
| `frontend/design-system-builder` | Authoring custom design systems |
|
|
262
|
+
| `frontend/ui-creator` | Panel/screen generation templates |
|
|
263
|
+
|
|
264
|
+
Third-party skills are Apache 2.0 (see [`.gemini/skills/NOTICE.md`](.gemini/skills/NOTICE.md)). To refresh against upstream, follow the steps in `NOTICE.md`.
|
|
265
|
+
|
|
211
266
|
### Nexus-IDE (VS Code extension)
|
|
212
267
|
|
|
213
268
|
`src/nexus-ide` is a lightweight VS Code extension that ships with the repo:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "genexus-mcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"mcpName": "io.github.lennix1337/genexus",
|
|
5
5
|
"description": "GeneXus 18 MCP server — read, edit, and analyze GeneXus knowledge base objects (transactions, web panels, procedures, SDTs) directly from Claude, Cursor, and other AI agents over the Model Context Protocol.",
|
|
6
6
|
"keywords": [
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"compilationOptions": {},
|
|
7
7
|
"targets": {
|
|
8
8
|
".NETCoreApp,Version=v8.0": {
|
|
9
|
-
"GxMcp.Gateway/2.
|
|
9
|
+
"GxMcp.Gateway/2.3.0": {
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"Newtonsoft.Json": "13.0.3",
|
|
12
12
|
"System.Management": "10.0.5",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
}
|
|
82
82
|
},
|
|
83
83
|
"libraries": {
|
|
84
|
-
"GxMcp.Gateway/2.
|
|
84
|
+
"GxMcp.Gateway/2.3.0": {
|
|
85
85
|
"type": "project",
|
|
86
86
|
"serviceable": false,
|
|
87
87
|
"sha512": ""
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/publish/config.json
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
{
|
|
2
|
-
"GeneXus": {
|
|
3
|
-
"InstallationPath": "C:\\Program Files (x86)\\GeneXus\\GeneXus18",
|
|
4
|
-
"WorkerExecutable": "C:\\Projetos\\Genexus18MCP\\publish\\worker\\GxMcp.Worker.exe"
|
|
5
|
-
},
|
|
6
|
-
"Server": {
|
|
7
|
-
"HttpPort": 5000,
|
|
8
|
-
"McpStdio": true,
|
|
9
|
-
"BindAddress": "127.0.0.1"
|
|
10
|
-
},
|
|
11
|
-
"Logging": {
|
|
12
|
-
"Level": "Debug",
|
|
13
|
-
"Path": "logs"
|
|
14
|
-
},
|
|
15
|
-
"Environment": {
|
|
16
|
-
"KBPath": "C:\\KBs\\AcademicoHomolog1",
|
|
17
|
-
"GX_SHADOW_PATH": "C:\\Projetos\\Genexus18MCP\\.gx_mirror"
|
|
18
|
-
|
|
1
|
+
{
|
|
2
|
+
"GeneXus": {
|
|
3
|
+
"InstallationPath": "C:\\Program Files (x86)\\GeneXus\\GeneXus18",
|
|
4
|
+
"WorkerExecutable": "C:\\Projetos\\Genexus18MCP\\publish\\worker\\GxMcp.Worker.exe"
|
|
5
|
+
},
|
|
6
|
+
"Server": {
|
|
7
|
+
"HttpPort": 5000,
|
|
8
|
+
"McpStdio": true,
|
|
9
|
+
"BindAddress": "127.0.0.1"
|
|
10
|
+
},
|
|
11
|
+
"Logging": {
|
|
12
|
+
"Level": "Debug",
|
|
13
|
+
"Path": "logs"
|
|
14
|
+
},
|
|
15
|
+
"Environment": {
|
|
16
|
+
"KBPath": "C:\\KBs\\AcademicoHomolog1",
|
|
17
|
+
"GX_SHADOW_PATH": "C:\\Projetos\\Genexus18MCP\\.gx_mirror",
|
|
18
|
+
"DefaultKb": "academicohomolog1"
|
|
19
|
+
}
|
|
19
20
|
}
|