Skip to main content
Glama
gefernandez32

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 parte Source de 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-gabo

Requiere 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.exe

Conectarlo 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:true gené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.md del proyecto de referencia.