Saltar al contenido principal
La clase NmpServer es el corazón del Nodo de Datos. Representa la infraestructura host que orquesta de manera segura las intenciones entrantes de Lógica-en-Origen provenientes de Agentes remotos. En lugar de escribir entornos de ejecución personalizados para gestionar WebAssembly, aislamiento y redes, tú defines funciones sencillas en JavaScript/TypeScript. El SDK abstrae el complejo sandboxing automáticamente.

Inicialización y Configuración

Creas un Nodo de Datos indicándole a la Malla quién eres y proporcionando las propiedades de configuración, como controles de seguridad de datos.
import { NmpServer, PII_PATTERNS } from "@nekzus/neural-mesh";

const server = new NmpServer(
  {
    name: "EnterpriseDatabaseNode",
    version: "3.2.0",
  },
  {
    // Escala el descifrado y el sandboxing WASI a través de todos los núcleos de CPU
    workerPool: { enabled: true, maxThreads: 16 },
    // Configuración estricta de seguridad y prevención de fugas de datos
    security: {
      piiPatterns: [PII_PATTERNS.EMAIL, PII_PATTERNS.IP_ADDRESS],
      forbiddenKeys: ["password", "ssn", "secret_token"]
    }
  }
);

Opciones de Configuración

Al instanciar un NmpServer, el segundo parámetro permite definir características avanzadas del nodo:
  • security.forbiddenKeys (Egress Filter): Un array de strings. Si el modelo intenta devolver un JSON que contiene cualquiera de estas llaves (ej., "password"), el Egress Filter destruirá la respuesta antes de que abandone el servidor.
  • security.piiPatterns (Sanitización): Expresiones regulares predefinidas (PII_PATTERNS) o personalizadas que escudriñan sub-cadenas de texto. Si un agente intenta filtrar un email en un bloque de texto libre, el motor lo intercepta.
  • Estructura Dinámica de Retorno (Auto-i18n): No requiere configuración manual. El NmpServer inyecta automáticamente directivas Dynamic Return Structure en los payloads. Esto obliga a la IA a respetar y devolver las llaves JSON exactamente en el mismo idioma nativo que utilizó el cliente al hacer la solicitud, eliminando la necesidad de librerías de internacionalización (i18n) en tu frontend.

Creando Capacidades (Tools)

En MCP, estas se llaman Tools (Herramientas). En NMP, nos referimos a ellas como Capacidades (Capabilities). Para el desarrollador, definir una Capacidad en NMP se ve virtualmente idéntico a definir una Tool de MCP. Proporcionas un nombre, una descripción, un esquema Zod para seguridad de tipos y un manejador (handler) de ejecución.
import { z } from "zod";

server.tool(
  "analyze_employee_data",
  "Analiza información sensible de nómina dentro del Sandbox.",
  { department: z.string() },
  async ({ department }) => {
    // La lógica inyectada del Agente se detiene aquí.
    // El Nodo de Datos ejecuta la solicitud local bajo sus propios permisos.
    const result = await database.query(department);

    return {
      content: [{ type: "text", text: `Nómina evaluada: ${result.summary}` }]
    };
  }
);

En qué se diferencia de MCP

Si el código se ve exactamente igual, ¿qué lo hace Neural Mesh?
  1. Sin Polling: El Nodo de Datos anuncia el esquema de analyze_employee_data criptográficamente sobre la DHT de Kademlia. El Agente sabe instantáneamente que el esquema existe sin desperdiciar una petición de red preguntando por listTools().
  2. Transporte Binario: Cuando el Agente invoca esta herramienta, los parámetros (ej., department: "HR") son comprimidos en bytes puros de Protobuf, omitiendo JSON por completo.

Exponiendo Esquemas de Datos (Resources)

Los Servidores NMP también pueden exponer Recursos (datos estáticos, esquemas o descripciones) que los Agentes pueden descubrir para entender la forma y estructura de los datos que van a analizar antes de inyectar su lógica. Esto permite una verdadera autonomía Zero-Shot.
server.resource(
  "nmp://schema/employee_records",
  "El esquema JSON exacto que representa las bases de datos de empleados.",
  "application/json",
  JSON.stringify(EmployeeSchema)
);
Estos recursos son puenteados impecablemente a los LLMs genéricos mediante los métodos estándar de MCP resources/list y resources/read.

Planificación de IA Avanzada (Prompts y Autonomía)

Al igual que MCP, Neural Mesh Protocol soporta nativamente Prompts—instrucciones conversacionales con plantillas que ayudan a los Agentes a estructurar sus tareas antes de inyectar su Lógica-en-Origen.
server.prompt(
  "analyze_codebase",
  "Instruye al agente sobre cómo recorrer el código de forma segura.",
  [
    { name: "language", description: "Lenguaje objetivo (ej., rust, ts)", required: true }
  ],
  (request) => ({
    description: "Codebase Analysis Prompts",
    messages: [
      { role: "user", content: { type: "text", text: `Analiza el código en ${request.arguments?.language} de forma segura.`} }
    ]
  })
);

Autonomía Zero-Shot (El Analista Ciego)

NMP incluye de fábrica un System Prompt Maestro de grado industrial diseñado para enseñar y adiestrar a LLMs genéricos (como Claude o GPT-4) sobre cómo generar lógica .wasm o JavaScript dinámicamente sin alucinar y respetando estrictamente los límites del Sandbox del Nodo. Puedes activar este adiestramiento estructural explícitamente:
server.enableZeroShotAutonomy();
Esto registrará automáticamente el prompt inteligente nmp_blind_analyst en la Malla, inyectando tu Data Dictionary directamente en el contexto del modelo.

Seguridad y Gestión de Memoria

Cuando un Nodo de Datos recibe un payload .wasm o .js, el Centinela (Guardian AST) somete su Árbol de Sintaxis Abstracta a una rigurosa validación de seguridad. Esta pesada evaluación de AST se cachea agresivamente en memoria O(1) para permitir ejecuciones subsiguientes veloces a la luz de la exactamente misma lógica. Si te encuentras desplegando parches de seguridad Zero-Day en el host de ejecución o necesitas invalidar forzosamente la memoria del Nodo, puedes purgar el almacenamiento en caché del AST de forma manual y síncrona:
server.clearAstCache();

Conectando Servidores MCP Heredados (Legacy)

El objetivo principal de NMP es una rápida adopción por parte de la industria. Si has pasado meses construyendo un servidor estándar del Protocolo de Contexto de Modelos (MCP), no necesitas reescribirlo para unirte a la Neural Mesh. El @nekzus/neural-mesh incluye el NmpMcpBridge. Este poderoso adaptador intercepta las peticiones binarias entrantes de la malla NMP, las traduce a estándar JSON-RPC 2.0 localmente, las reenvía a tu Servidor MCP sin modificar vía stdio o SSE, y empaqueta la respuesta estándar de MCP de vuelta hacia la red P2P ultra rápida.
import { NmpMcpBridge } from "@nekzus/neural-mesh/bridge";
import { Server } from "@modelcontextprotocol/sdk/server/index.js";

// Tu implementación estándar de MCP heredado
const mcpServer = new Server({ name: "LegacyWeatherApp", version: "1.0" });

// Envuélvelo en el Puente NMP
const bridge = new NmpMcpBridge(mcpServer, {
  publishToMesh: true,
  meshIdentity: "WeatherNode_01"
});

// Inicia el puente
await bridge.connect();
Tu aplicación heredada es ahora completamente accesible para Agentes de IA Web3, descentralizados y Post-Cuánticos en todo el mundo sin cambiar una sola línea de tu lógica MCP original.

Iniciando el Servidor

Una vez que tus herramientas, watchdogs y puentes están configurados, lanzas el Nodo de Datos vinculándolo a la red:
await server.connect();
console.log(`Neural Node online. Escuchando Wasms entrantes...`);