Install
$ agentstack add mcp-lennix1337-genexus18mcp ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
GeneXus MCP Server — GeneXus 18 for Claude, Cursor, and AI Agents
[](https://www.npmjs.com/package/genexus-mcp) [](https://www.npmjs.com/package/genexus-mcp) [](https://opensource.org/licenses/MIT) [](https://safeskill.dev/scan/lennix1337-genexus18mcp) [](https://lobehub.com/mcp/lennix1337-genexus18mcp)
> ¿Hablás español? → [Guía de inicio en español](docs/GETTINGSTARTED.es.md) > Fala português? → [Guia de início em português](docs/GETTINGSTARTED.pt-br.md) > Stuck? → [Troubleshooting guide](TROUBLESHOOTING.md)
GeneXus MCP Server lets AI agents — Claude Desktop, Claude Code, Cursor, Antigravity, and any MCP-compatible client — read, edit, analyze, and refactor objects inside a GeneXus 18 Knowledge Base. It talks to the native GeneXus SDK, so the agent works with the real KB, not a copy or a parsed approximation.
In practice: you point the MCP at your KB, then ask your AI assistant things like "list all transactions with attribute CustomerId", "add a rule to the Order transaction that validates the total", or "refactor this procedure to use the new SDT" — and it does it.
Prerequisites
Before you start, make sure you have:
- ✅ Windows (GeneXus is Windows-only)
- ✅ GeneXus 18 installed locally (default path:
C:\Program Files (x86)\GeneXus\GeneXus18) - ✅ A GeneXus 18 Knowledge Base opened at least once in the IDE (so it's initialized)
- ✅ Node.js 18+ — check with
node --versionin a terminal; install from nodejs.org if missing - ✅ An MCP-compatible AI client — Claude Desktop, Claude Code, Cursor, Antigravity, etc.
You do not need to clone this repo or install anything globally — npx handles it.
Never used a terminal before? Press Win+R, type powershell, hit Enter. That's your terminal.
Quickstart (3 steps, ~5 minutes)
Find your two paths first
Before running the installer, note these down:
- GeneXus install folder — where
GeneXus.exelives. UsuallyC:\Program Files (x86)\GeneXus\GeneXus18. - Your KB folder — the root folder of your Knowledge Base (contains the
.gxfile and subfolders likeModel/,WebSpa/).
Not sure where your KB lives? Open it in GeneXus and check the title bar, or look in File → Recent.
Step 1 — Run the installer
Open a terminal and run, replacing the paths with your KB folder and your GeneXus install:
npx genexus-mcp@latest init --kb "C:\KBs\YourKB" --gx "C:\Program Files (x86)\GeneXus\GeneXus18"
> Prefer the wizard? Run npx genexus-mcp@latest init --interactive and answer the prompts.
What you'll see (takes ~30 seconds first time, faster on re-runs):
npxdownloads the package.- The installer verifies the paths exist and GeneXus is present.
- It auto-detects which AI clients you have installed and adds the MCP config to each one.
- Prints a JSON snippet at the end — keep it in case you need to configure a client manually.
- Finishes with
🎉 You are all set!.
Step 2 — Register the MCP in your AI client
Step 1 auto-registers with Claude Desktop, Claude Code, Cursor, and Antigravity when it detects them. If yours wasn't detected, copy the JSON snippet from Step 1 into your client's MCP config manually. See the [client setup guide](TROUBLESHOOTING.md#client-setup) if unsure where that file lives.
Step 3 — Restart your AI client, then test
This part trips most people: fully close your AI client and reopen it. Not just the window — the whole process.
- Claude Desktop: right-click the system-tray icon → Quit. Then launch it again. (Closing the window is not enough.)
- Claude Code: end the session and start a fresh one.
- Cursor / Antigravity: close all windows and reopen.
Then paste this prompt:
> "Using the GeneXus MCP, list the first 5 objects in my KB and show name + type."
What should happen:
- The AI invokes the
genexus_list_objectstool (some UIs show "calling tool…"). - A few seconds later, you get a list of objects from your KB.
If you get a list back — you're done. Skip to [What can I ask the AI?](#what-can-i-ask-the-ai) for ideas.
If the AI says it doesn't have a GeneXus tool, or nothing happens, go to [Troubleshooting](TROUBLESHOOTING.md) — most issues are covered there.
🤖 Let your AI install it for you
If you'd rather not run anything in the terminal yourself, paste this into your AI chat:
> Please configure the GeneXus MCP server. Run npx genexus-mcp@latest init --kb "" --gx "" in the terminal. If I haven't told you my GeneXus path and KB path yet, ask me first. Once it succeeds, read the JSON block it printed and add it to my MCP client config. Tell me when I should restart the client to start using GeneXus tools.
Replace the placeholders or let the AI ask you for them.
Corporate install (fixed path, ASR-friendly)
If your machine has Microsoft Defender ASR, SmartScreen, or another endpoint policy blocking unsigned binaries, the default npx flow is painful — npx caches the package under %LOCALAPPDATA%\npm-cache\_npx\\..., and the `` changes per version, so IT can't whitelist a stable path without a wildcard over the whole npm cache (which is too broad).
Use the corporate installer instead. It extracts the binaries to a stable directory and registers the AI clients to launch the gateway directly from there — npx is never on the runtime path.
# One-liner — installs latest release, registers AI clients
iex (irm https://raw.githubusercontent.com/lennix1337/Genexus18MCP/main/scripts/install.ps1)
# With explicit KB and GeneXus paths
$s = irm https://raw.githubusercontent.com/lennix1337/Genexus18MCP/main/scripts/install.ps1
& ([scriptblock]::Create($s)) -Kb "C:\KBs\MyKB" -Gx "C:\Program Files (x86)\GeneXus\GeneXus18"
Install location:
- Admin shell →
C:\Tools\GenexusMCP\ - Non-admin shell →
%LOCALAPPDATA%\Programs\GenexusMCP\
Paths to give to IT for the ASR / Defender exclusion list:
\GxMcp.Gateway.exe
\worker\GxMcp.Worker.exe
Re-run the same one-liner later to upgrade — it detects the installed version (version.txt in the install dir) and downloads only if a newer release is available. Use -Force to reinstall the same version, -Version v2.3.0 to pin a specific tag, -NoClient to skip AI client registration. Node.js 18+ must be installed for client registration; without it the script still extracts the binaries but you'll need to edit the client config (claude_desktop_config.json etc.) manually.
What can I ask the AI?
Once installed, here's what unlocks. Try these as your first prompts:
Exploration
- "List all objects of type Procedure in the KB."
- "Show me the source of the procedure CalculateInvoiceTotal."
- "Find all transactions that reference the attribute CustomerId."
Editing
- *"Add a rule to the Order transaction: error('Total must be positive') if Total
, groups), controls (,,,,), actions (,), grids, orders, rules, and event blocks. Both **Transaction** and **Selection** views are addressable independently (XPath/instance/transaction/...vs/instance/level/selection/...`). - Documentation & Help parts —
Documentation(rich text / markdown) andHelp(HTML) are now first-class write targets viagenexus_edit(fixed in v2.4.4 — both parts had a silent no-op bug previously). - Theme classes & styling — apply real ThemeClass values (
themeClass,buttonClass,groupThemeClass,cellThemeClass, etc) so generated screens use the KB's design system. Discover the available classes withgenexus_list_objects --typeFilter ThemeClass --nameFilterand apply them in the pattern XML.
> 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.
Edit modes (genexus_edit): full (whole-part replacement, default), patch (Replace/Insert_After/Append over a context anchor — works on source code AND pattern XML), ops (typed semantic ops like set_attribute, add_rule for source-bearing parts).
Pattern XML auto-reconcile: WorkWithPlus encodes IDE rendering order in a per-parent childrenOrderedList attribute. The MCP now rebuilds (and creates if missing) every list from the actual XML child order on each write — callers only describe where an element goes in the tree and the MCP makes the IDE render it there. The response includes a childrenOrderedListReconciliation block listing each (re)written parent plus any structural elements that couldn't be inferred safely.
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).
WorkWithPlus pattern editing — what you can actually do
WorkWithPlus patterns are XML documents that drive Transaction-and-Selection screens. The MCP exposes the entire surface so an agent can design or restructure a screen without opening the IDE:
| Capability | Tool / pattern | Status | |---|---|---| | Read PatternInstance / PatternVirtual XML | genexus_read --part PatternInstance | ✅ | | Replace whole pattern (mode: full) | genexus_edit --mode full --part PatternInstance | ✅ verified live | | Find/replace text-style patches (mode: patch) | genexus_edit --mode patch --part PatternInstance --operation Replace | ✅ verified live | | Add / remove / reorder structural elements (textBlock, attribute, standardAction, table-as-group, order, filterAttribute, gridAttribute, eventBlock…) | XML edit + auto-reconcile | ✅ verified live | | Theme classes (themeClass, buttonClass, groupThemeClass, cellThemeClass, format="HTML") | XML attribute on the element | ✅ verified live | | Reorganize Transaction view (form layout, action row) | edit under /instance/transaction/... | ✅ verified live | | Reorganize Selection view (list/grid, filters, orders) | edit under /instance/level/selection/... | ✅ verified live | | Auto-rebuild childrenOrderedList from XML order | done implicitly on every write; report under childrenOrderedListReconciliation | ✅ verified live |
Recommended workflow for a screen redesign:
genexus_list_objects --typeFilter ThemeClass --nameFilter Button— discover the actual button classes available in this KB (ButtonGreen,ButtonBlue,ButtonRed, etc — names vary per KB).genexus_read --name WorkWithPlus --part PatternInstance— get the current XML.- Edit the XML in memory (LLM): wrap attributes in a `
, reorder buttons, add a new, attachbuttonClass="btn ButtonGreen"`, etc. genexus_edit --mode full --part PatternInstance --content ""— the MCP rewrites the part, reconcileschildrenOrderedListon every container, and verifies the round-trip.- Read back to confirm; refresh the GeneXus IDE to see the result.
**Custom buttons use `, not .** TrnEnter / TrnCancel / Trn_Delete are the only registered standard actions on a WorkWithPlus transaction; any custom button (Duplicate, Audit, Export, etc.) must be a . The MCP's reconciler treats as a peer of (same typeCode 17/18 by context), so they coexist in the same TableActions` row and the IDE renders them side-by-side.
Things to know (orientation, not gotchas):
- WorkWithPlus normalizes some attributes after every save. Certain fields are bound to the underlying transaction (e.g.,
titleon top-level groups derives from the transaction's friendly name). When"Apply this pattern on save"is enabled on the WorkWithPlus object, the engine recomputes those fields — same behavior whether you edit in the IDE or via MCP. To make a hard override stick, toggle that flag via MCP:
``jsonc { "tool": "genexus_properties", "arguments": { "action": "set", "name": "WorkWithPlus", "propertyName": "SDPlus_Editor_Apply_On_Save", "value": "False" } } ` Accepts "True" | "False" | "Default" (Default inherits the KB-level setting). Set back to "Default"` to re-enable engine recomputation. Validated live in this repo.
- Structural safety is enforced by the SDK. If you submit XML that violates pattern invariants (e.g., a `
without a, or awhosename` isn't a registered action), the SDK rejects the save and the MCP returns the exact error so you can fix the input. The KB never ends up half-written. - The IDE Pattern preview is a structural mockup, not a styled render. Theme CSS (
buttonClass,themeClass, fonts, colors) is resolved at runtime, not in the preview canvas — so even after a successful MCP write the preview pane will look generic. To verify styling: open the element in the IDE tree and check the right-hand Properties panel (the applied classes show there), or hit Run / Live Editing to see the real CSS. This is GeneXus IDE behavior, independent of how the pattern was edited.
AXI CLI (for agents and automation)
The genexus-mcp command itself is also an agent-facing CLI with token-optimized output:
genexus-mcp status # gateway/worker state
genexus-mcp doctor --mcp-smoke # health check + protocol probe
genexus-mcp tools list # list available tools
genexus-mcp config show # current resolved config
genexus-mcp layout status # native layout automation state
Global flags: --format toon|json|text · --fields f1,f2,... · --limit N · --query · --quiet · --no-color.
Full contract: [docs/axi_cli_contract.md](docs/axiclicontract.md). Best-practices playbook: [docs/llm_cli_mcp_playbook.md](docs/llmclimcp_playbook.md).
Advanced Configuration
The installer writes a config.json for you. To customize networking, timeouts, or shadow paths:
{
"Server": {
"HttpPort": 5000,
"BindAddress": "127.0.0.1",
"SessionIdleTimeoutMinutes": 10,
"WorkerIdleTimeoutMinutes": 5,
"MaxOpenKbs": 3
},
"GeneXus": {
"InstallationPath": "C:\\Program Files (x86)\\GeneXus\\GeneXus18",
"WorkerExecutable": "worker\\GxMcp.Worker.exe"
},
"Environment": {
"DefaultKb": "main",
"KBs": [
{ "alias": "main", "path": "C:\\KBs\\YourKB" },
{ "alias": "legacy", "path": "C:\\KBs\\OtherKB" }
]
}
}
> Backward compatibility: old configs with a single Environment.KBPath keep working — the gateway auto-migrates them to KBs[] + DefaultKb at load time.
Working with multiple KBs
Once you declare more than one KB in Environment.KBs[], every tool accepts an optional kb argument:
// LLM example: list procedures in two KBs in parallel
{ "tool": "genexus_list_objects", "arguments": { "kb": "main", "type": "Procedure" } }
{ "tool": "genexus_list_objects", "arguments": { "kb": "legacy", "type": "Transaction" } }
Resolution rules when kb is omitted:
- exactly 1 KB open → uses that KB
- 0 KBs open +
DefaultKbset → opensDefaultKblazily - 2+ KBs open → server returns
KB_AMBIGUOUSand you must passkbexplicitly
Manage the pool at runtime:
{ "tool": "genexus_kb", "arguments": { "action": "list" } }
// → { openKbs: [{alias, path, pid, workingSetMB, idleSeconds}], maxOpenKbs, defaultKb, declaredKbs }
{ "tool": "genexus_kb", "arguments": { "action": "open", "alias": "adhoc", "path": "C:/KBs/ScratchKB" } }
{ "tool": "genexus_kb", "arguments": { "action": "close", "alias": "legacy" } }
{ "tool": "genexus_kb", "arguments": { "action": "set_default", "alias": "main" } } // persists to config.json
When the pool is full and no Worker is idle, the server returns KB_POOL_FULL — close one explicitly or raise `Server.MaxO
…
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: lennix1337
- Source: lennix1337/Genexus18MCP
- License: MIT
- Homepage: https://www.npmjs.com/package/genexus-mcp
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.