blockly-mcp-common-palette

Analiza la explicación del Codelab propuesto en el fichero time-line.md.

Genera un análisis de proyecto para los objetivos propuestos en el texto.

Crea un índice interno del sdk que deberemos modelizar con blockly en la carpeta mcp-ts-sdk.

Tómate tu tiempo para procesar la información y establece un plan de acción para ayudarme a completarlo.

Análisis del Proyecto: MCP con Blockly

Resumen del Codelab

El Codelab propone integrar el Model Context Protocol (MCP) de Anthropic con Blockly, creando bloques visuales que permitan modelar servidores y clientes MCP. Adicionalmente, se busca explorar la posibilidad de un generador para TypeScript desde estos bloques.

Objetivos del Proyecto

Objetivo Principal

Objetivos Secundarios

Análisis del MCP TypeScript SDK

El SDK de TypeScript para MCP provee una estructura clara basada en tres conceptos principales:

  1. Entidades principales:

    • Hosts, Clients y Servers
    • Resources, Tools y Prompts
    • Transport, Sampling y Roots
  2. Niveles de abstracción:

    • MCPServer: Interfaz de alto nivel para implementar servidores MCP
    • Server: Implementación base que maneja comunicaciones específicas del protocolo
    • Protocol: Abstracción base para la comunicación según el protocolo MCP

Basado en el análisis del contenido de la carpeta mcp-ts-sdk, podemos definir la siguiente estructura:

  1. Clases Base

    • Protocol (src/shared/protocol.ts): Base para comunicación
    • Server (src/server/index.ts): Implementación base del servidor
    • Client (src/client/index.ts): Implementación base del cliente
    • McpServer (src/server/mcp.ts): API de alto nivel para servidores
    • McpClient (src/client/index.ts): API de alto nivel para clientes
  2. Transportes

    • StdioServerTransport: Para comunicaciones stdio
    • StdioClientTransport: Cliente para stdio
    • StreamableHTTPServerTransport: Servidor HTTP con streaming
    • StreamableHTTPClientTransport: Cliente HTTP con streaming
    • SSEServerTransport: Servidor con Server-Sent Events (legado)
    • SSEClientTransport: Cliente con SSE (legado)
  3. Funcionalidades MCP

  4. Tipos y Validación

    • Uso extensivo de zod para validación de esquemas
    • zodToJsonSchema: Conversión para documentación
  5. Manejo de Errores

    • McpError: Errores específicos del protocolo
  6. Compatibilidad

    • Soporte para protocolo anterior (2024-11-05)
    • Transporte actual (2025-03-26)

Propuesta de estructura de Bloques MCP

La estructura de bloques debe reflejar los componentes principales del MCP:

Categorías de Bloques

  1. Configuración y Setup

    • Crear servidor/cliente MCP
    • Configurar transportes (stdio, HTTP, etc.)
    • Establecer conexiones
  2. Recursos

    • Definir recursos estáticos
    • Definir plantillas de recursos
    • Implementar callbacks de lectura
  3. Herramientas

    • Definir herramientas con o sin parámetros
    • Implementar callbacks de herramientas
    • Configurar anotaciones
  4. Prompts

    • Definir plantillas de prompt
    • Configurar argumentos y validaciones
  5. Notificaciones y Eventos

    • Enviar notificaciones
    • Manejar eventos del servidor/cliente
  6. Integración OAuth

    • Configurar autenticación

Plan de Acción

  1. Fase 1: Configuración del Entorno

    • Configurar el proyecto Blockly base
    • Integrar el SDK de MCP como dependencia
  2. Fase 2: Diseño de Bloques Básicos

    • Crear bloques para la configuración de servidor/cliente
    • Implementar bloques para transportes
  3. Fase 3: Implementación de Bloques Funcionales

    • Desarrollar bloques para recursos
    • Crear bloques para herramientas
    • Diseñar bloques para prompts
  4. Fase 4: Desarrollo del Generador

    • Extender el generador JavaScript para generar código TypeScript
    • O crear un nuevo generador específico para TypeScript
  5. Fase 5: Ejemplos y Patrones

    • Crear ejemplos de patrones comunes (servidor simple, cliente, etc.)
    • Documentar los patrones
  6. Fase 6: Pruebas y Refinamiento

    • Probar los bloques con ejemplos reales
    • Refinar la API de bloques según los casos de uso

Desafíos Previstos

  1. Manejo de TypeScript: La falta de un generador oficial para TypeScript puede requerir trabajo adicional.
  2. Callbacks y Closures: La representación de funciones de callback en bloques puede ser compleja.
  3. Tipado: Mantener el tipado fuerte de TypeScript en el código generado será un desafío.
  4. Zod y Validación: Integrar los esquemas de validación de Zod con bloques podría ser complejo.

Próximos Pasos Recomendados

  1. Revisar más a fondo la estructura y ejemplos del SDK de MCP
  2. Crear un prototipo inicial con los bloques más básicos (server, client, transportation)
  3. Evaluar si extender el generador JavaScript o crear uno propio para TypeScript
  4. Estudiar los ejemplos incluidos en el SDK para identificar patrones comunes a modelizar

¿Deseas comenzar con alguna fase específica o necesitas más detalles sobre algún aspecto particular?