GeneXus18MCP-mini
GeneXus18MCP-mini
Skeleton mínimo de un servidor MCP para GeneXus 18: un solo proceso, sin
IPC, para arrancar rápido y entender el patrón antes de (si hace falta)
separarlo en dos procesos como el proyecto de referencia (../Genexus18MCP,
ver STACK.md ahí para el porqué de esa separación).
Qué hace
3 tools reales contra el SDK (Artech.Architecture.Common /
Artech.Udm.Framework), sin mocks:
gx_open_kb(path)— abre una KB (KnowledgeBase.Open).gx_list_objects(filter?, limit?)— lista objetos de la KB abierta.gx_read_source(name)— lee la parteSourcede un objeto por nombre.
Habla MCP por stdio, JSON-RPC 2.0, un mensaje por línea (sin framing Content-Length). Todo el proceso corre en un thread STA porque el SDK tiene partes COM-flavoured.
Instalar vía npm
npx -y genexus18mcp-gaboRequiere Windows + GeneXus 18 instalado localmente (el paquete trae el
.exe pre-compilado, pero igual necesita las DLLs Artech.* del SDK en
tiempo de ejecución). El wrapper (cli/run.js) autodetecta la carpeta de
instalación buscando GeneXus18* bajo Program Files (x86)\GeneXus; si tu
instalación vive en otro lado, seteá GX_PATH manualmente.
En la config MCP del cliente:
{
"mcpServers": {
"genexus18mcp-mini": {
"command": "npx",
"args": ["-y", "genexus18mcp-gabo"]
}
}
}Build desde fuente
dotnet build GeneXus18MCP-mini.csproj -p:GX_PATH="C:\Program Files (x86)\GeneXus\GeneXus18u10_WWP15.4.6"Ajustá GX_PATH a tu instalación real de GeneXus 18 (el nombre de carpeta
varía según el update — no siempre es literalmente ...\GeneXus18).
Probar a mano (sin cliente MCP)
$body = @'
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}
{"jsonrpc":"2.0","method":"notifications/initialized"}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"gx_open_kb","arguments":{"path":"C:\\ruta\\a\\tu\\KB"}}}
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"gx_list_objects","arguments":{"limit":10}}}
'@
$body | .\bin\Debug\GeneXus18MCP-mini.exeConectarlo a Claude Code / Claude Desktop (build desde fuente)
Si compilaste desde fuente en vez de usar npx, agregá el server a la
config MCP del cliente apuntando directo al .exe:
{
"mcpServers": {
"genexus18mcp-mini": {
"command": "C:\\MisClientes\\GeneXus\\GeneXus18MCP-mini\\bin\\Debug\\GeneXus18MCP-mini.exe"
}
}
}Próximos pasos naturales (no implementados, a propósito)
Escribir (no solo leer) —
part.Source = nuevoTexto+obj.Save().Manejo de errores más fino por tool (hoy todo excepción cae en un
isError:truegenérico).Si necesitás abrir varias KBs a la vez o exponer HTTP además de stdio, ahí es cuando conviene separar protocolo (proceso moderno) de SDK (proceso net48/STA) — ver
STACK.mddel proyecto de referencia.