blockly-mcp-common-palette

Analiza el Tutorial Proyecto nº1, identifica todos los nodos que intervienen y crear una tabla indicando toolbox y seccion.

Crea un diagrama markdown que permita comprender qué solución final se visualizará en blockly cuando creemos los nodos. Pon especial interés en predecir cómo será el programa javascript que implement mcp.

Análisis del Tutorial Proyecto 1: Servidor de Eco MCP

Identificación de Nodos

A continuación presento una tabla con todos los nodos que intervienen en el Servidor de Eco MCP, clasificados por toolbox y sección:

Nodo Toolbox Sección Tipo de Bloque
Crear Servidor MCP setup.js MCP Setup mcp_create_server
Configurar Transporte Stdio setup.js MCP Setup mcp_stdio_transport_server
Conectar setup.js MCP Setup mcp_connect
Definir Recurso Estático resources.js MCP Recursos mcp_define_resource_static
Función callback (recurso) resources.js MCP Recursos mcp_resource_callback
Retornar (recurso) resources.js MCP Recursos mcp_return_resource_content
Definir Herramienta tools.js MCP Herramientas mcp_define_tool
Descripción de herramienta tools.js MCP Herramientas mcp_tool_description
Parámetros de herramienta tools.js MCP Herramientas mcp_tool_parameter
Función callback (herramienta) tools.js MCP Herramientas mcp_tool_callback
Retornar (herramienta) tools.js MCP Herramientas mcp_return_tool_response
Obtener parámetro tools.js MCP Herramientas mcp_get_parameter_value
Unir textos (común) Text text_join

Diagrama de Solución Final en Blockly


┌─────────────────────────────────────────────────────────────────────────┐

│ [Crear Servidor MCP]                                                    │

│   nombre: "Servidor Eco"                                                │

│   versión: "1.0.0"                                                      │

│   [asignar a variable: servidor]                                        │

└───────────────────────────────┬─────────────────────────────────────────┘

                                │

┌───────────────────────────────▼─────────────────────────────────────────┐

│ [Configurar Transporte Stdio]                                           │

│   [asignar a variable: transporte]                                      │

└───────────────────────────────┬─────────────────────────────────────────┘

                                │

┌───────────────────────────────▼─────────────────────────────────────────┐

│ [Conectar]                                                              │

│   servidor: servidor                                                    │

│   transporte: transporte                                                │

└─────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────┐

│ [Definir Recurso Estático]                                              │

│   nombre: "info"                                                        │

│   uri: "info://server"                                                  │

│                                                                         │

│   [Función callback]                                                    │

│     [Retornar]                                                          │

│       [crear objeto Contenido de Recurso]                               │

│         uri: uri                                                        │

│         texto: "Servidor eco MCP v1.0"                                  │

└─────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────┐

│ [Definir Herramienta]                                                   │

│   nombre: "eco"                                                         │

│   [descripción: "Repite el mensaje enviado"]                            │

│                                                                         │

│   [Parámetros]                                                          │

│     mensaje: string                                                     │

│                                                                         │

│   [Función callback]                                                    │

│     [Retornar]                                                          │

│       [crear objeto Respuesta de Herramienta]                           │

│         tipo: "texto"                                                   │

│         texto: [unir "El servidor dice: " [obtener parámetro mensaje]]  │

└─────────────────────────────────────────────────────────────────────────┘

Código JavaScript Generado (predicción)

// Importar el SDK de MCP

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";

import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

import { z } from "zod";

// Crear el servidor MCP

const servidor = new McpServer({

  name: "Servidor Eco",

  version: "1.0.0"

});

// Configurar el transporte stdio

const transporte = new StdioServerTransport();

// Definir un recurso estático

servidor.resource(

  "info",

  "info://server",

  async (uri) => {

    return {

      contents: [

        {

          uri: uri.toString(),

          text: "Servidor eco MCP v1.0"

        }

      ]

    };

  }

);

// Definir una herramienta que repite mensajes

servidor.tool(

  "eco",

  "Repite el mensaje enviado",

  { 

    mensaje: z.string() 

  },

  async ({ mensaje }) => {

    return {

      content: [

        {

          type: "text",

          text: "El servidor dice: " + mensaje

        }

      ]

    };

  }

);

// Conectar el servidor al transporte

(async () => {

  try {

    await servidor.connect(transporte);

    console.log("Servidor MCP de eco iniciado y listo para recibir mensajes");

  } catch (error) {

    console.error("Error al iniciar el servidor:", error);

    process.exit(1);

  }

})();

Funcionamiento

  1. El servidor se inicializa con un nombre y versión
  2. Se configura para usar stdio como medio de comunicación
  3. Se registra un recurso estático llamado “info” que proporciona información sobre el servidor
  4. Se define una herramienta “eco” que recibe un parámetro y devuelve un mensaje con ese parámetro
  5. El servidor se conecta al transporte y queda a la espera de solicitudes

Este es un ejemplo minimalista pero completo que muestra el flujo básico de un servidor MCP. Los clientes pueden:

La implementación es sencilla pero demuestra los conceptos principales: configuración, transporte, recursos y herramientas.