Y como podemos ver aquí en la función, solo tengo una función simple que es runJS ephemeral, y luego paso el código generado por el LLM a esta función, que veremos en un momento. Estoy tomando la salida, y estoy devolviendo la salida como un objeto, que contiene contenido, que es básicamente un array. Ahora, este array es como MCP espera el retorno. Así que estoy pasando, por ejemplo, el tipo, que es un texto en este caso, y luego estoy pasando el texto en sí. Así que en este caso, solo estoy pasando la salida del proceso de node.js de vuelta al LLM. Y luego, por último pero no menos importante, estoy conectando el servidor al transporte SDDO.
Bien, veamos ahora cómo podemos ejecutar el código de forma segura en Docker. Así que como podemos ver, la función es relativamente simple. Así que lo primero que podemos hacer es, primero, generamos un ID de contenedor, como uno aleatorio. Luego creamos, ahora ejecutamos el contenedor, y lo ejecutamos con la imagen node.lts.lim, pero por supuesto podemos personalizar la imagen. Y luego usamos un truco simple, que es el tail, menos f, slash dev, slash null, para decirle al sistema, está bien, no puedes, no tienes que detenerte. Así que por favor mantente inactivo y espérame. Luego lo que voy a hacer es, voy a copiar el código en el archivo index.js, que voy a crear en una plantilla aquí. Y luego voy a copiar este archivo en el Docker. Y luego voy a ejecutar esto, voy a ejecutar con node index.js este código, y voy a obtener la salida del contenedor Docker. Por último pero no menos importante, como puedes adivinar, solo estoy haciendo algo de limpieza. Así que podré matar el contenedor Docker y eliminar el directorio temporal. Y eso es todo, esa es la esencia de la solución.
Lo genial de esta solución es que, como puedes adivinar, expandirla es relativamente simple. De hecho, veremos que expandir esta solución, este tiempo de ejecución, a Python, requiere cambiar al menos tres líneas de código. Y vamos a verlo. Así que lo primero que voy a cambiar es, por supuesto, el nombre de la función, que ya no es como run.js, sino run Python ephemeral. Luego voy a cambiar cómo estructuramos la cadena de ID del contenedor, pero eso realmente no es necesario. Ahora, los tres cambios que se necesitan son, bueno, primero que nada, en lugar de usar Node.js, la imagen de node, voy a usar una imagen con Python preinstalado, así que es el Python 3.11 sling. Luego, cuando escribo el archivo, no va a ser index.js, sino script.pi. Y luego, en lugar de lanzar el script con node index.js, solo voy a lanzar Python script.pi, y eso es todo. Así que como podemos ver, este tipo de solución es muy expandible a otras tecnologías manteniendo la misma idea central. Por supuesto, tengamos en cuenta algo súper importante, que es que la precisión del uso de la herramienta no es perfecta. Así que la llamada de función es una de las capacidades de los LLMs, como la resumización, reescritura, y así sucesivamente.
Comments