La Realitat de la Migració Legacy
Modernitzar un sistema PHP legacy hauria de ser simple: llegir el codi antic, entendre les regles, reconstruir-les netament en una nova aplicació Laravel. En realitat, el codi legacy no es comporta així. És no lineal, implícit, ple d'efectes secundaris, i sovint depèn de convencions que ningú recorda.
Quan combines això amb un agent modern com Claude Code, aprens ràpidament una dura veritat: un LLM pot escriure codi excel·lent, però no pot endevinar les teves regles de negoci. Per això vam decidir construir el nostre propi servidor MCP (Model Context Protocol)—escrit en PHP, executant-se al costat del codi legacy—per donar a l'agent una finestra real al sistema.
Per Què un Servidor MCP?
Els agents de codificació CLI han canviat el flux de treball. Quan un agent pot llegir el teu repositori, escriure arxius, executar tests i modificar codi de forma asíncrona, deixa de ser un chatbot i es converteix en un col·laborador. Però per col·laborar, necessita context.
En un projecte Laravel des de zero, això és fàcil: les carpetes són predictibles, els patrons es repeteixen, la lògica de negoci viu en serveis o accions. Però la nostra aplicació legacy era codi espagueti clàssic—barrejant HTML, strings SQL, funcions globals, includes procedurals, càlculs inline i crides de redirecció.
Per migrar això de forma segura, l'agent necessita respondre preguntes com: Quines taules existeixen i com són? Què calcula realment aquesta funció? Quants llocs modifiquen aquesta variable de sessió? Cap prompt pot endevinar això de forma fiable des de codi estàtic. Necessitàvem accés executable—no només text.
Un Servidor MCP en PHP al Costat del Codi Legacy
Vam fer servir la llibreria mcp/capability, que et permet anotar mètodes PHP i exposar-los com a eines MCP. El servidor s'executa dins del mateix entorn que l'aplicació legacy, així pot consultar la BD, incloure arxius PHP antics i executar funcions legacy.
Un cop exposats a través de MCP, Claude Code pot cridar aquestes eines directament durant una tasca de migració. El servidor inclou capacitats per consultar dades (només lectura), descriure taules, extreure lògica PHP, analitzar regles de negoci i fins i tot invocar funcions PHP legacy dins del seu entorn original.
Executant Funcions Legacy Directament
Molts dels detalls complicats—càlculs d'enviament, ajustos de preu, lògica de descomptes—viuen en petites funcions disperses en includes. Per ajudar a Claude a entendre què fan realment aquestes funcions, vam exposar una eina que carrega l'arxiu original, inclou llibreries de funcions compartides, configura la sessió i BD legacy, i executa la funció.
Això permet a l'agent provar el comportament abans de reescriure la lògica en Laravel: "Donats aquests inputs, quin cost d'enviament calcula el sistema legacy?" L'agent ara pot confirmar el comportament legacy en lloc d'al·lucinar una nova implementació.
Extraient les Regles de Negoci Reals
L'anàlisi estàtic també importa. La naturalesa espagueti del projecte significa que la lògica està amagada dins de branques, expressions inline, sentències SQL i mutacions de sessió. Una de les nostres eines MCP llegeix un arxiu i extreu patrons com condicionals que involucren preus, validacions bàsiques, consultes SQL, redireccions, variables de sessió i expressions aritmètiques amb totals, IVA i descomptes.
Això dona a Claude una vista compacta de "què està fent realment aquest arxiu", sense ofegar-lo en HTML o soroll de marcat. L'objectiu no és entendre perfectament el codi—només treure a la superfície la lògica que l'agent ha de preservar en reescriure'l.
Com Això Canvia el Procés de Migració
Construir el servidor MCP ens va obligar a repensar com migrem codi legacy. En lloc de reescriure a cegues, l'agent explora el sistema. En lloc d'endevinar regles, les inspecciona. En lloc de fer enginyeria inversa a mà, exposem les respostes via eines.
Al costat de Laravel, l'agent ara produeix implementacions més netes i fidels perquè està recreant el raonament que seguiria un desenvolupador: verificar l'esquema de la taula, inspeccionar una funció, executar-la amb dades de prova, extreure els seus càlculs, i després implementar el Feature, Action o Service equivalent.
Continua sent un projecte de migració, no màgia. Però se sent significativament menys com arqueologia i més com una reescriptura estructurada.
Reflexions Finals
Construir un servidor MCP en PHP no era part del pla original. Però un cop vam veure com funcionen els agents de codificació—i quant context necessiten—es va fer obvi. Si vols que una IA col·labori en una reescriptura, dóna-li les eines que fa servir un desenvolupador real.
Ara podem migrar funcionalitats amb més confiança, amb menys conjectures, i amb una separació més clara entre inspecció legacy i codi Laravel nou. Si estàs lluitant amb un sistema PHP legacy i planifiques una migració moderna, construir una petita capa MCP al voltant del codi antic podria ser un dels passos més impactants que prenguis.