Primeros pasos
Antes de esto necesitas FoxAgent instalado (Instalación). Al terminar tendrás tu aplicación VFP en marcha y un agente capaz de mirar dentro de ella.
Paso 1: comprobar que el Broker está corriendo
El instalador dejó el Broker como servicio de Windows con arranque automático. Para comprobarlo:
# En PowerShell o CMD:
sc query FoxAgentBroker
# Debería decir: STATE: 4 RUNNINGSi el servicio no está corriendo, arráncalo desde la consola de servicios de Windows (services.msc) o con este comando:
# Arrancar el servicio a mano:
net start FoxAgentBrokerPaso 2: conectar tu aplicación VFP
La integración son tres puntos de inyección: registrar la aplicación al arrancar, registrar tus herramientas justo después, y desconectar al salir. El tercero es el que se olvida, y el coste no lo pagas tú: lo paga tu cliente.
* --- 1. Al arrancar, con _VFP ya disponible y ANTES de READ EVENTS ---
PUBLIC goBridge
goBridge = CREATEOBJECT("FoxAgent.Bridge")
* Obligatorio antes de Connect: es lo que permite mirar dentro.
goBridge.SetInstance(_VFP)
* Connect(id, nombre, peldaño) devuelve una CADENA JSON, no un lógico.
* El 10 (operator) es el peldaño de un usuario de negocio: el agente
* llega exactamente hasta donde llega esa persona a mano, porque todo
* pasa por tus formularios y sus validaciones.
LOCAL lcRes
lcRes = goBridge.Connect("mi-app-001", "Mi Aplicación VFP", 10)
IF !('"ok":true' $ lcRes)
* Si el Broker está parado o no hay asiento libre, tu aplicación
* tiene que seguir funcionando: FoxAgent es un accesorio, no una
* dependencia. Anótalo y sigue.
goBridge = .NULL.
ENDIF
* El Bridge manda heartbeats solo, cada 15 segundos. No llames a
* Heartbeat() a mano.
* --- 3. Al salir, en tu rutina de cierre o en ON SHUTDOWN ---
IF VARTYPE(goBridge) = "O" AND !ISNULL(goBridge)
TRY
goBridge.Disconnect("mi-app-001")
CATCH
* Un fallo aquí nunca puede impedir que la aplicación cierre.
ENDTRY
goBridge = .NULL.
ENDIFSDK\quickstart.prg. Paso 3: registrar tus herramientas (UDTs)
Una llamada a RegisterTool() por herramienta, inmediatamente después de un Connect correcto. Nada se lee del disco, y eso es el modelo de seguridad, no una limitación: el agente solo puede ejecutar lo que tú escribiste, revisaste y compilaste.
* Las dos clases base del SDK, antes del primer CREATEOBJECT de una
* tool. Son DOS ficheros: FoxAgentTool hereda de FoxToolIsolated, que
* vive en FoxTool.prg. Si falta, sale
* "Class definition FOXTOOLISOLATED is not found".
SET PROCEDURE TO "C:\Program Files\FoxAgent\SDK\FoxTool.prg" ADDITIVE
SET PROCEDURE TO "C:\Program Files\FoxAgent\SDK\FoxAgentTool.prg" ADDITIVE
SET PROCEDURE TO "MisTools.prg" ADDITIVE
* Una llamada por herramienta, después de Connect.
goBridge.RegisterTool(CREATEOBJECT("BuscarClienteTool"))
goBridge.RegisterTool(CREATEOBJECT("SaldoClienteTool"))Cómo se escribe una de esas clases está en Configuración. Cuando cambia el usuario que ha iniciado sesión puedes rehacer la lista con ClearTools() y UnregisterTool(nombre): las herramientas que existen las decide tu aplicación, por usuario.
Paso 4: conectar tu cliente de IA
El instalador configura Claude Desktop y OpenCode si los encuentra. Para cualquier otro cliente deja el bloque ya montado, con la ruta real puesta, en C:\Program Files\FoxAgent\mcp-foxagent.json. Es este:
{
"mcpServers": {
"foxagent": {
"command": "C:\\Program Files\\FoxAgent\\FoxAgent.McpHost.exe",
"args": []
}
}
}| Cliente | Dónde se pega |
|---|---|
| Claude Desktop | claude_desktop_config.json (Configuración ▸ Desarrollador ▸ Editar config) |
| Claude Code | claude mcp add foxagent -- "C:\Program Files\FoxAgent\FoxAgent.McpHost.exe" |
| Cursor | %USERPROFILE%\.cursor\mcp.json |
| OpenCode | %USERPROFILE%\.config\opencode\opencode.jsonc (otro formato: mira su documentación) |
~1 / ~2 lo reparte el orden de creación: una reinstalación puede dejar a tu cliente arrancando el Broker, que no habla MCP, y se queda colgado sin decir por qué. Los espacios no son problema mientras dupliques cada barra invertida. Reinicia el cliente después de editar la configuración. Paso 5: preguntar
Con el Broker en marcha, tu aplicación conectada y el cliente MCP configurado, el orden de arranque importa: Broker → tu aplicación → el cliente de IA. Prueba a preguntar:
- «Lista las instancias VFP conectadas»
- «¿Qué formularios hay abiertos en mi-app-001?»
- «Toma una captura de la aplicación»
- «¿Qué herramientas propias tiene registradas esa instancia?»
- «Busca el cliente 1042 con la herramienta buscar_cliente»
Las dos últimas funcionan desde el peldaño 0. Leer variables y cursores pide el 20, y VFP crudo el 90: si el agente contesta que no puede, la negativa nombra el peldaño que falta y quién puso el techo. Los peldaños están explicados en Configuración.
Siguientes pasos
- Crear herramientas personalizadas (UDTs): La clase base, los parámetros y el patrón de sesión que hay que seguir para leer datos
- Sistema de roles: Los cuatro peldaños, quién acota cada uno y cómo se eleva desde tu propia aplicación