Cómo empezar a usar Asistentes de IA en desarrollo de software

¡Bienvenido a la guía de desarrollo dirigido por AI! Este documento te ayudará a configurar tu entorno y familiarizarte con los conceptos básicos de nuestro proyecto.

Los Asistentes de IA son herramientas poderosas que pueden mejorar significativamente tu flujo de trabajo de desarrollo. Esta guía te guiará a través de los pasos iniciales para integrar la IA en tu proceso de desarrollo.

Prerrequisitos

Supongo que tienes los siguientes prerrequisitos:

  • Un SO con un terminal (Linux, macOS, o Windows con WSL)
  • Un editor de código (VSCode, IDE basado en IntelliJ: PHPStorm, PyCharm, etc., Xcode)

Mejores prácticas para Github Copilot

Lee esta sección Mejores prácticas para Github Copilot para aprender cómo usar GitHub Copilot efectivamente.

Configuración rápida de tu entorno

Hemos creado un script de configuración rápida para ayudarte a configurar tu entorno de desarrollo. Este script instalará todas las dependencias necesarias y configurará tu entorno para que puedas comenzar a trabajar con los Asistentes de IA. Está preparado para Visual Studio Code, pero puedes adaptarlo a tu editor preferido.

Plantilla kickstart para configurar tu entorno de desarrollo con IA

Modelos y ventanas de Contexto

Mejores prácticas para Github Copilot

Personalizando GitHub Copilot

Las instrucciones personalizadas te permiten proporcionar directrices específicas a GitHub Copilot para adaptar sus respuestas a tus prácticas de codificación y requisitos del proyecto. En lugar de proporcionar repetidamente las mismas instrucciones, puedes almacenarlas en archivos que se incluyen automáticamente en cada solicitud de chat.

Hay tres formas principales de personalizar las respuestas de IA:

  • Instrucciones personalizadas: Define directrices comunes para tareas como generar código, revisiones de código o mensajes de commit.
  • Archivos de prompt: Crea prompts reutilizables para tareas comunes.
  • Modos de chat personalizados: Define cómo opera el chat, qué herramientas puede usar y cómo interactúa con el código base.

Instrucciones personalizadas

Puedes definir instrucciones personalizadas de varias maneras:

  • .github/copilot-instructions.md: Un archivo único en tu espacio de trabajo que contiene prácticas de codificación generales y requisitos del proyecto. Estas instrucciones se incluyen automáticamente en cada solicitud de chat.
  • Archivos .instructions.md: Múltiples archivos que se pueden almacenar en tu espacio de trabajo o perfil de usuario. Puedes usar patrones glob para aplicarlos a archivos específicos o incluirlos en todas las solicitudes.
  • Configuraciones de VS Code: Define instrucciones directamente en tus configuraciones de usuario o espacio de trabajo para tareas como generación de código, generación de pruebas y mensajes de commit.

Archivos de prompt

Los archivos de prompt son prompts reutilizables para tareas comunes, como generar código o realizar una revisión de código. Son prompts independientes que puedes ejecutar directamente en el chat.

Las características clave de los archivos de prompt incluyen:

  • Reutilización: Define un prompt una vez y reutilízalo en tus proyectos.
  • Estructura: Los archivos de prompt son archivos Markdown con extensión .prompt.md y pueden incluir un encabezado con metadatos (por ejemplo, mode, model, tools) y un cuerpo con el contenido del prompt.
  • Variables: Usa variables como ${workspaceFolder} y ${selection} para hacer tus prompts más dinámicos.

Para más detalles, visita la documentación oficial de GitHub Copilot Customization.

Modos de chat

Los modos de chat en VS Code te permiten adaptar el comportamiento del chat de IA para tareas específicas. Puedes cambiar entre diferentes modos dependiendo de tus necesidades.

Modos de chat integrados

VS Code viene con tres modos de chat integrados:

  • Modo Ask: Optimizado para responder preguntas sobre tu código base y conceptos tecnológicos generales.
  • Modo Edit: Optimizado para hacer ediciones de código en múltiples archivos.
  • Modo Agent: Optimizado para hacer ediciones autónomas en múltiples archivos, especialmente para tareas complejas que pueden requerir ejecutar comandos de terminal y herramientas.

Modo Agent

El modo Agent es particularmente útil para tareas complejas que requieren razonamiento y planificación autónomos. Puede:

  • Refactorizar partes de tu código base.
  • Planar e implementar nuevas características.
  • Migrar tu código base a un nuevo framework.
  • Generar planes de implementación para tareas complejas.

Para más detalles, visita la documentación oficial sobre Chat Modes y Agent Mode.

Configurando servidores MCP

Para configurar servidores MCP para GitHub Copilot, sigue las directrices proporcionadas en la documentación de Visual Studio Code. El proceso implica:

  1. Configuración del servidor: Asegúrate de que tu servidor MCP esté configurado correctamente para manejar solicitudes de GitHub Copilot.
  2. Autenticación: Implementa mecanismos de autenticación seguros para validar el acceso de usuarios.
  3. Integración: Conecta el servidor MCP con tu entorno de desarrollo para habilitar una comunicación fluida.
  4. Pruebas: Verifica la funcionalidad del servidor ejecutando pruebas para asegurar compatibilidad y rendimiento.

Para instrucciones detalladas, visita la documentación oficial.

Mejores prácticas para Kilo Assistant

Este documento proporciona un resumen de las mejores prácticas para usar Kilo Assistant, con enlaces a la documentación oficial para información más detallada.

Usando modos

Los modos en Kilo Code son personas especializadas que adaptan el comportamiento del asistente a tu tarea actual. Cada modo ofrece diferentes capacidades, expertise y niveles de acceso para ayudarte a lograr objetivos específicos.

  • Modo Code: Para escribir código, implementar características, depurar y desarrollo general.
  • Modo Ask: Para explicación de código, exploración de conceptos y aprendizaje técnico.
  • Modo Architect: Para diseño de sistemas, planificación de alto nivel y discusiones de arquitectura.
  • Modo Debug: Para rastrear bugs, diagnosticar errores y resolver problemas complejos.
  • Modo Orchestrator: Para desglosar proyectos complejos en subtareas manejables.

Para más detalles, consulta la documentación de Using Modes.

Menciones de contexto

Las menciones de contexto son una forma poderosa de proporcionar a Kilo Code información específica sobre tu proyecto. Usa el símbolo @ para referirte a archivos, carpetas, problemas y commits de Git.

  • Archivo: @/path/to/file.ts
  • Carpeta: @/path/to/folder/
  • Problemas: @problems
  • Terminal: @terminal
  • Commit de Git: @a1b2c3d
  • Cambios de Git: @git-changes
  • URL: @https://example.com

Para más detalles, consulta la documentación de Context Mentions.

Aprobación automática de acciones

Las configuraciones de aprobación automática aceleran tu flujo de trabajo eliminando prompts de confirmación repetitivos, pero aumentan significativamente los riesgos de seguridad. Solo habilita la aprobación automática para acciones en las que confíes completamente.

Para más detalles, consulta la documentación de Auto-Approving Actions.

Cómo funcionan las herramientas

Kilo Code usa herramientas para interactuar con tu código y entorno. Estos ayudantes especializados realizan acciones específicas como leer archivos, hacer ediciones, ejecutar comandos o buscar en tu base de código.

Para más detalles, consulta la documentación de How Tools Work.

Mejorar prompt

La característica "Enhance Prompt" te ayuda a mejorar la calidad y efectividad de tus prompts antes de enviarlos al modelo de IA.

Para más detalles, consulta la documentación de Enhance Prompt.

Ingeniería de prompts

La ingeniería de prompts es el arte de elaborar instrucciones efectivas para modelos de IA. Los prompts bien escritos llevan a mejores resultados, menos errores y un flujo de trabajo más eficiente.

Para más detalles, consulta la documentación de Prompt Engineering Tips.

Reglas personalizadas

Las reglas personalizadas proporcionan una forma poderosa de definir comportamientos y restricciones específicos del proyecto y globales para el agente de IA de Kilo Code.

Para más detalles, consulta la documentación de Custom Rules.

Instrucciones personalizadas

Las instrucciones personalizadas te permiten personalizar cómo se comporta Kilo Code, proporcionando guía específica que moldea respuestas, estilo de codificación y procesos de toma de decisiones.

Para más detalles, consulta la documentación de Custom Instructions.

Banco de memoria

El Banco de Memoria es un sistema de documentación estructurada que permite a Kilo Code entender mejor tu proyecto y mantener el contexto a través de sesiones de codificación.

Para más detalles, consulta la documentación de Memory Bank.

Trabajando con proyectos grandes

Los proyectos grandes requieren algo de cuidado extra para gestionar el contexto efectivamente. Usa rutas de archivo específicas, desglosa tareas y resume grandes cantidades de código.

Para más detalles, consulta la documentación de Working with Large Projects.

Temperatura del modelo

La temperatura controla la aleatoriedad de las salidas del modelo de IA. Ajustar esta configuración optimiza los resultados para diferentes tareas.

Para más detalles, consulta la documentación de Model Temperature.

Guía de desarrollo efectivo dirigido por AI

Muchos habéis experimentado que los asistentes de IA pueden ser increíblemente útiles para acelerar el desarrollo, pero a veces pueden generar código incorrecto o ineficiente. Esta guía te ayudará a aprovechar al máximo los asistentes de IA como GitHub Copilot y Kilo Assistant, asegurando que produzcan código de alta calidad y eficiente.

Aquí indico algunas prácticas recomendadas para trabajar con asistentes de IA en tu flujo de trabajo de desarrollo:

  1. Configura tu proyecto con la configuración AI. En este repo dispones de una template para Kickstart que incluye configuraciones recomendadas para Copilot y VSCode utilizando los servidores MCP más importantes para acelerar y optimizar el desarrollo (ver sección de Servidores MCP).

  2. Una vez usada la plantilla usarás tools de "recuerdos" como Serena o Remembrances para almacenar todo aquello importante en tu desarrollo o tareas que la AI esté realizando, normalmente se habrá configurado con la plantilla instrucciones para que la AI lo use de forma autónoma guardando recuerdos relevantes y consultando antes de cada tarea los recuerdos relacionados que pueden ser relevantes para la tarea. Si en algún momento ves que al finalizar una tarea, no ha guardado en recuerdos algo que consideras importante, indícaselo en el chat y pídele que lo guarde.

  3. Utiliza un fichero plan.md, si usas Serena MCP, puedes usar la carpeta .serena/memories/plan.md ya que esta carpeta guardará cualquier información que sirva como base de conocimiento en formato markdown, tanto Serena como Remembrances usarán estos ficheros como base de conocimiento para responder a tus preguntas y generar código. La diferencia es que Remembrances también dispone de mecanismos para guardar relaciones, entidades con metadatos y otros elementos relacionados en un grafo de conocimiento que pueden ser muy útiles para proyectos complejos.

El plan.md debe de indicar, que es el archivo de planificación de tareas del proyecto, tendrás tareas ya realizadas y otras no, puedes usar la sintaxis de markdown para organizar las tareas, por ejemplo:

# Plan de desarrollo del proyecto X

- [x] Tarea 1: Configurar el entorno de desarrollo
- [x] Tarea 2: Implementar la funcionalidad de autenticación
- [ ] Tarea 3: Desarrollar la API REST para la gestión de usuarios
- [ ] Tarea 4: Crear la interfaz de usuario con React
- [ ] Tarea 5: Integrar la API con la interfaz de usuario
  1. Si eres suficiéntemente específico en la definición de cada tarea, indicando qué herramientas usar, qué usar para buscar información de una librería, o qué parte de código quieres revisar en cada tarea, la AI podrá realizar las tareas de forma autónoma sin que tengas que indicarle nada más. Si no es así, te pedirá más información o te indicará qué necesita para completar la tarea. Tu prompt podrá ser algo tan sencillo como:

"teniendo en cuenta el plan.md continua con las tareas pendientes teniendo en cuenta las tareas realizadas anteriormente por si son relevantes para tu trabajo actual."

  1. Si estás trabajando con un proyecto de código existente, asegúrate de haber generado una base de conocimiento inicial de todo el proyecto, te explico ahora cómo hacerlo:

    • Usa Serena MCP para indexar todo el código del proyecto. Puedes usar el comando serena index para crear un índice semántico de todo el código, lo que permitirá a la IA entender mejor la estructura y las relaciones dentro del código.
    • Si el proyecto es muy grande, puedes usar Remembrances MCP para crear recuerdos específicos de partes importantes del proyecto, como módulos clave, funciones críticas o cualquier otra información relevante que pueda ayudar a la IA a comprender mejor el contexto.
    • Asegúrate de que ambos servidores MCP estén configurados correctamente en tu entorno de desarrollo y que la IA pueda acceder a ellos.
    • Empieza a interactuar con la AI en modo agente, pidiéndole que revise el código existente, y documente usando Serena o Remembrances la estructura del proyecto, las funciones principales, todos aquellos detalles que conozcas que existen, y que consideres relevantes para otros programadores o la propia AI en el futuro, por ejemplo:
    • "Revisa el código del proyecto y crea un resumen de las funciones principales, módulos y cualquier otra información relevante que pueda ayudar a entender la estructura del proyecto. Usa Serena para indexar el código y Remembrances para crear recuerdos específicos de partes importantes del proyecto."
    • "Revisa las migraciones de bbdd y los esquemas que generan los modelos y crea un resumen de la estructura de la base de datos, incluyendo tablas, relaciones y cualquier otra información relevante. También genera un diagrama en mermaid de la estructura de la base de datos."
    • "Revisa los endpoints de la API y crea un resumen de los mismos, incluyendo rutas, métodos HTTP, parámetros y cualquier otra información relevante. Usa este resumen para generar documentación de la API en formato OpenAPI."
    • "Revisa los componentes de la interfaz de usuario y crea un resumen de los mismos, incluyendo su estructura, props y cualquier otra información relevante. Usa este resumen para generar documentación de los componentes en formato Storybook."
  2. En ocasiones será interesante que la AI pueda leer los logs de alguna carpeta, logs de compilación o errores en los tests, para ello puedes usar MyCommandMCP para crear comandos que lean los logs y los guarden en recuerdos de Remembrances o en ficheros markdown en la carpeta .serena/memories/ para que Serena pueda indexarlos y usarlos como base de conocimiento.

Mejores utilidades en MCP

En esta sección, te ayudamos a configurar las utilidades MCP más comunes para que puedas maximizar su potencial.

Los servidores MCP permiten a la IA usar herramientas para recopilar más información contextual o realizar acciones en el mundo real. Estos servidores pueden configurarse para interactuar con APIs externas, ejecutar comandos o incluso conectarse a bases de datos.

Hay dos tipos de servidores MCP: aquellos que se ejecutan en el cliente (en tu computadora) y por lo tanto necesitan instalarse, y aquellos que se ejecutan en la nube y son accesibles vía URL. Estos últimos pueden usar protocolos SSE o HTTPS. Es importante saber que si el servidor se ejecuta en el cliente, necesitas instalarlo y configurarlo en tu computadora, mientras que si es un servidor remoto, necesitas configurar la URL del servidor en tu agente.

Los servidores MCP instalados en el cliente pueden interactuar con tu computadora, ejecutar comandos dentro de ella o leer partes de tu sistema. Son útiles para leer archivos, conectarse a bases de datos locales o sistemas accedidos vía VPN desde tu computadora.

Los servidores MCP remotos son útiles para interactuar con APIs externas, como la API de Figma o la API de YouTrack, y no requieren instalación local.

Aquí destacamos unas pocas herramientas particularmente útiles ya que permiten implementar múltiples herramientas en un solo proceso MCP:

  • Serena: Es un servidor dirigido principalmente a indexar nuestro proyecto de código a través de parseadores específicos para cada lenguaje de programación, genera un índice de clases, métodos, funciones y variables, y permite hacer búsquedas semánticas en el código. Es muy útil para que los agentes de IA puedan entender mejor nuestro código y responder preguntas sobre él.

  • Remembrances: Un servidor diseñado para ayudar a los agentes de IA a recordar información relevante de conversaciones anteriores, se trata de un proyecto de código abierto creado internamente en DIGIO y que mejoraremos con las últimas técnicas de almacenamiento de información para uso en Agentes AI. Utiliza técnicas de recuperación de información para proporcionar contexto y mejorar la calidad de las respuestas.

  • Hyper-MCP: Un servidor MCP rápido construido en Rust (usa muy poca memoria) que permite agregar plugins WASM para extender su funcionalidad.

    • Especialmente útil habilitar el plugin Conect7 para conectarse a la API de Context7, lo que permite usar la plataforma Context7 como herramienta en tus agentes de IA. Este servicio proporciona todas las versiones de documentación de una gran cantidad de librerías y frameworks, como React, Angular, Node.js, etc. Es una herramienta muy útil para tener en tu servidor MCP.

    • Otro plugin útil es serper, proporciona acceso a resultados de búsqueda de Google. Puedes registrarte gratis y obtener 2.5k solicitudes.

  • MCP-Link: Un servidor MCP que permite conectar cualquier API con una especificación OpenAPI a un agente MCP, convirtiéndola en una interfaz compatible con agentes de IA.

  • MyCommandMCP: Un servidor MCP versátil escrito en Rust que permite ejecutar comandos del sistema como herramientas MCP. Es altamente configurable y puede adaptarse a una amplia gama de casos de uso.

Este es un ejemplo de mcp.json


{
  "mcpServers": {
    "@brave": {
      "url": "http://mcplink.madeindigio.com/sse?s=https%3A%2F%2Fgithub.com%2Fautomation-ai-labs%2Fmcp-link%2Fraw%2Frefs%2Fheads%2Fmain%2Fexamples%2Fbrave.yaml&u=https%3A%2F%2Fapi.search.brave.com%2Fres%2Fv1&h=%7B%22X-Subscription-Token%22%3A%22BSAfPg0fhEKKX5sV-Tc2XCVD-qEfyI-%22%8J&f=%2B%2F**"
    },
    "@hyper-mcp": {
      "command": "hyper-mcp",
      "args": [
        "--config-file",
        "/home/sevir/.config/hyper-mcp/kilo.json"
      ]
    },
    "@mycommandmcp": {
      "command": "mycommandmcp",
      "args": [
        "--config",
        "/home/sevir/.config/mc-mcp/optimized.yaml",
        "--log-file",
        "/www/MCP/MyCommandMCP/mycommandmcp/mcp.log"
      ]
    }
  }
}

Catálogos de Servidores MCP

Si usas VSCode con Copilot o cualquier otra herramienta, hay mercados MCP que usualmente se instalan localmente. Descargas el proyecto y lo ejecutas, pero debes ser especialmente cuidadoso porque no sabes qué tipo de código podría ejecutar.

Hay otros mercados como Smithery que pueden desplegar el código en su infraestructura en lugar de la tuya, haciéndolo más seguro y permitiéndote pasar parámetros de configuración como variables de entorno. Para todos los servidores que puedan ejecutarse sin needing datos de tu sistema, se recomienda ejecutarlos en un servidor remoto en lugar de tu máquina local. Esto reduce el riesgo de que un plugin malicioso acceda a tus datos personales o ejecute comandos no deseados en tu sistema.

Docker también ha lanzado su propio catálogo MCP, Docker Hub MCP, donde puedes encontrar plugins que pueden ejecutarse en contenedores y son seguros de usar.

Hyper-MCP

Hyper-MCP es un servidor MCP rápido y seguro que extiende su funcionalidad a través de plugins de WebAssembly (WASM). Permite a los desarrolladores agregar capacidades de IA a sus aplicaciones integrándose con herramientas como Claude Desktop y Cursor IDE.

Características clave

  • Extensible con WebAssembly: Escribe plugins en cualquier lenguaje que compile a WASM.
  • Seguro: Los plugins se ejecutan en un entorno sandboxed con control de acceso granular.
  • Soporte de registro OCI: Distribuye y gestiona plugins usando registros OCI estándar como Docker Hub.
  • Ligero y portable: Adecuado para varios entornos, desde la nube hasta dispositivos edge.
  • Multiplataforma: Compatible con Linux, macOS y Windows.

Configuración

Para comenzar con Hyper-MCP, necesitas crear un archivo config.json en el directorio apropiado para tu sistema operativo:

  • Linux: $HOME/.config/hyper-mcp/config.json
  • macOS: $HOME/Library/Application Support/hyper-mcp/config.json
  • Windows: {FOLDERID_RoamingAppData}\hyper-mcp\config.json

A continuación se muestra un ejemplo de configuración que incluye varios plugins útiles:

{
  "plugins": [
    {
      "name": "time",
      "path": "oci://ghcr.io/tuananh/time-plugin:latest"
    },
    {
      "name": "think",
      "path": "oci://ghcr.io/tuananh/think-plugin:latest"
    },
    {
      "name": "hash",
      "path": "oci://ghcr.io/tuananh/hash-plugin:latest"
    },
    {
      "name": "fetch",
      "path": "oci://ghcr.io/tuananh/fetch-plugin:latest",
      "runtime_config": {
        "allowed_hosts": ["*"],
        "memory_limit": "100 MB"
      }
    },
    {
      "name": "context7",
      "path": "oci://ghcr.io/tuananh/context7-plugin:nightly",
      "runtime_config": {
        "allowed_hosts": ["context7.com"]
      }
    },
    {
      "name": "sequentialthinking",
      "path": "oci://ghcr.io/sevir/sequentialthinking-plugin:latest"
    },
    {
      "name": "serper",
      "path": "oci://ghcr.io/tuananh/serper-plugin:latest",
      "runtime_config": {
        "env_vars": {
          "SERPER_API_KEY": "YOUR_SERPER_API_KEY"
        },
        "allowed_hosts": ["google.serper.dev"]
      }
    }
  ]
}

En esta configuración:

  • Cada objeto en el array plugins define una nueva herramienta para el servidor MCP.
  • "name": El nombre de la herramienta que se expondrá.
  • "path": La ruta OCI a la imagen del plugin.
  • "runtime_config": (Opcional) Te permite configurar el entorno de ejecución del plugin, como establecer variables de entorno (env_vars), restringir el acceso a la red (allowed_hosts), o limitar el uso de memoria. Para el plugin serper, deberías reemplazar "YOUR_SERPER_API_KEY" con tu clave API real de Serper.

MCP-Link

En digio, hemos desplegado una instancia de MCP-Link en mcplink.madeindigio.com para que la uses.

MCP-Link es una herramienta que automáticamente convierte cualquier API con una especificación OpenAPI v3 en un servidor MCP completo. Esto permite a los agentes de IA interactuar con APIs RESTful existentes sin necesidad de modificar el código de la API original.

¿Cómo funciona?

MCP-Link genera una interfaz compatible con MCP desde una URL de especificación OpenAPI. Puedes configurar la conversión usando los siguientes parámetros en la URL:

  • s=: La URL del archivo de especificación OpenAPI.
  • u=: La URL base de la API objetivo.
  • h=: El formato del encabezado de autenticación (por ejemplo, Authorization:Bearer).
  • f=: Expresiones para filtrar las rutas de la API a incluir o excluir.

El Configurador de MCP-Link digio es una interfaz web que te permite configurar fácilmente los parámetros de MCP-Link. Proporciona una forma amigable de configurar la URL de especificación OpenAPI, URL base, encabezados de autenticación y filtros de rutas.

Ejemplo de uso en un Agente de IA

Para conectar un agente a una API vía MCP-Link, configúralo de la siguiente manera en el archivo de configuración del servidor MCP:

{
  "mcpServers": {
    "@service-name": {
      "url": "https://mcplink.madeindigio.com/sse?s=[OpenAPI-specification-URL]&u=[API-base-URL]"
    }
  }
}

Esto permite que cualquier API con una especificación OpenAPI se convierta inmediatamente en una interfaz compatible con MCP accesible para agentes de IA.

Ejemplo con Figma

Para ilustrar un caso de uso real, veamos cómo configurar MCP-Link para la API de Figma. La URL para conectar con Figma a través de nuestra instancia de MCP-Link sería:

https://mcplink.madeindigio.com/sse?s=https%3A%2F%2Fraw.githubusercontent.com%2Ffigma%2Frest-api-spec%2Frefs%2Fheads%2Fmain%2Fopenapi%2Fopenapi.yaml&u=https%3A%2F%2Fapi.figma.com&h=%7B%22X-Figma-Token%22%3A%22YOUR_FIGMA_TOKEN%22%7D&f=%2B%2F**

Desglosando los parámetros:

  • s: https://raw.githubusercontent.com/figma/rest-api-spec/refs/heads/main/openapi/openapi.yaml - La especificación OpenAPI de la API de Figma.
  • u: https://api.figma.com - La URL base de la API de Figma.
  • h: {"X-Figma-Token":"YOUR_FIGMA_TOKEN"} - El encabezado de autenticación. Un objeto JSON (codificado en URL) especifica que el encabezado X-Figma-Token debe enviarse con tu token personal de Figma. Reemplaza YOUR_FIGMA_TOKEN con tu token real.
  • f: +/** - Incluye todas las rutas de la API.

La configuración en tu agente se vería así:

{
  "mcpServers": {
    "@figma": {
      "url": "https://mcplink.madeindigio.com/sse?s=https%3A%2F%2Fraw.githubusercontent.com%2Ffigma%2Frest-api-spec%2Frefs%2Fheads%2Fmain%2Fopenapi%2Fopenapi.yaml&u=https%3A%2F%2Fapi.figma.com&h=%7B%22X-Figma-Token%22%3A%22YOUR_FIGMA_TOKEN%22%7D&f=%2B%2F**"
    }
  }
}

Ejemplo con YouTrack

De manera similar, para conectar con YouTrack, la URL de MCP-Link sería:

http://mcplink.madeindigio.com/sse?s=https%3A%2F%2Fdigio.youtrack.cloud%2Fapi%2Fopenapi.json&u=https%3A%2F%2Fdigio.youtrack.cloud%2Fapi&h=%7B%22Authorization%22%3A%22Bearer%20TOKEN_YOUTRACK%22%7D&f=%2B%2F**

Desglosando los parámetros:

  • s: https://digio.youtrack.cloud/api/openapi.json - La especificación OpenAPI de la API de YouTrack.
  • u: https://digio.youtrack.cloud/api - La URL base de la API de YouTrack.
  • h: {"Authorization":"Bearer TOKEN_YOUTRACK"} - El encabezado de autenticación. Se usa un token de autorización Bearer. Reemplaza TOKEN_YOUTRACK con tu token permanente de YouTrack.
  • f: +/** - Incluye todas las rutas de la API.

La configuración en tu agente se vería así:

{
  "mcpServers": {
    "@youtrack": {
      "url": "http://mcplink.madeindigio.com/sse?s=https%3A%2F%2Fdigio.youtrack.cloud%2Fapi%2Fopenapi.json&u=https%3A%2F%2Fdigio.youtrack.cloud%2Fapi&h=%7B%22Authorization%22%3A%22Bearer%20TOKEN_YOUTRACK%22%7D&f=%2B%2F**"
    }
  }
}

Mycommandmcp

MyCommandMCP es un servidor MCP versátil escrito en Rust que te permite ejecutar comandos del sistema como herramientas MCP. Es altamente configurable y puede adaptarse a una amplia gama de casos de uso.

Instalación

Puedes instalar MyCommandMCP descargando el binario desde la página de releases o construyéndolo desde el código fuente.

Para instalar el binario, descarga la versión apropiada para tu sistema, descomprímela y coloca el ejecutable en un directorio incluido en el PATH de tu sistema.

Configuración

MyCommandMCP se configura usando un archivo YAML. Por defecto, busca un archivo llamado mycommand-tools.yaml en el directorio actual. También puedes especificar un archivo de configuración personalizado usando la bandera --config.

El archivo de configuración tiene tres secciones principales: prompts, tools, y resources.

Aquí hay un ejemplo de configuración de tools:

tools:
  - name: "list_files"
    description: "Lists files in a specific directory"
    command: "ls"
    path: "/"
    accepts_args: true
    accept_input: false
    default_args: "-l"
  - name: "get_date"
    description: "Gets the current system date and time"
    command: "date"
    path: "/"
    accepts_args: false
    accept_input: false

Esta configuración define dos herramientas: list_files, que ejecuta el comando ls -l, y get_date, que ejecuta el comando date.

Puedes encontrar información más detallada sobre las opciones de configuración en la documentación oficial.

Este es un ejemplo completo de un mycommand-tools.yaml de desarrollo real:

tools:
  - name: "get_date"
    description: "Displays the current system date and time in various formats. Can show UTC time, format output, or display specific timezones, the tool accepts the same arguments of the `date` linux command"
    command: "date"
    path: "/"
    accepts_args: true
    accept_input: false

  - name: "process_list"
    description: "Displays information about running processes"
    command: "ps"
    path: "/"
    accepts_args: true
    accept_input: false
    default_args: "auxef"

  - name: "network_info"
    description: "Shows the network interfaces, routing, devices, and tunnels. This tools accepts the same arguments of the `ip` linux command"
    command: "ip"
    path: "/"
    accepts_args: true
    accept_input: false
    default_args: "addr"

  - name: "curl"
    description: "Downloads any resource from a URL using `curl` command. Use this tool for run any `curl` command what you want"
    command: "curl"
    path: "/tmp"
    accepts_args: true
    accept_input: false

  - name: "vscode"
    description: "Call always to open VSCode in the path specified in the argument. Use this tool when you write or edit code"
    command: "vscode"
    path: "/www"
    accepts_args: true
    accept_input: false


prompts:
  - name: "summarize"
    description: "Resume un texto dado"
    content: |
      Por favor resume el siguiente texto en 3 oraciones o menos.
      Considera los puntos principales y detalles clave.
      Mantén un estilo claro y conciso.

  - name: "translate"
    description: "Traduce texto a español"
    content: |
      Traduce el siguiente texto a español.
      Preserva el significado y tono original.
      Usa lenguaje español natural y fluido.

  - name: "code_review"
    description: "🔍 Revisión de código completa con análisis de seguridad y rendimiento"
    content: |
      🔍 **Solicitud de Revisión de Código**

      Por favor realiza una revisión completa de código de: `{file_path}`

      **Áreas de Enfoque:** {focus_areas}

      **Criterios de Revisión:**
      - 🛡️ Vulnerabilidades de seguridad y mejores prácticas
      - ⚡ Implicaciones de rendimiento y optimizaciones
      - 📝 Claridad del código y mantenibilidad
      - 🦀 Idiomas y patrones específicos del lenguaje
      - 🧪 Capacidad de prueba y manejo de errores
      - 📚 Documentación y comentarios

      **Entregables:**
      1. Evaluación resumida con niveles de severidad
      2. Problemas específicos con referencias de línea
      3. Sugerencias de mejora accionables
      4. Aspectos positivos y patrones bien implementados

      Por favor usa operaciones de archivo para leer el código y proporcionar retroalimentación detallada.

  - name: "rust_optimization"
    description: "🦀 Sugerencias de optimización específicas de Rust y patrones idiomáticos"
    content: |
      🦀 **Análisis de Optimización de Rust**

      **Objetivo:** {optimization_goal}

      **Código a Optimizar:**
      ```rust
      {code_snippet}
      ```

      **Marco de Análisis:**
      - 🚀 Rendimiento: Abstracciones de costo cero, patrones de asignación
      - 💾 Memoria: Propiedad, préstamo, optimizaciones de vida útil
      - 📖 Legibilidad: Patrones idiomáticos de Rust, claridad
      - 🛡️ Seguridad: Seguridad de memoria, seguridad de hilos, manejo de errores

      **Entregables:**
      1. Código optimizado con explicaciones
      2. Análisis de impacto en rendimiento
      3. Compensaciones y alternativas
      4. Sugerencias de benchmark si aplicable

      Enfócate en idiomas modernos de Rust y abstracciones de costo cero.

  - name: "debug_assistance"
    description: "🐛 Análisis de debug con investigación de errores y sugerencias de corrección"
    content: |
      🐛 **Solicitud de Asistencia de Debug**

      **Mensaje de Error:**
      ```
      {error_message}
      ```

      **Contexto:**
      {context}

      **Estrategia de Debug:**
      1. 🔍 Análisis de Error: Identificación de causa raíz
      2. 🛠️ Sugerencias de Corrección: Resolución paso a paso
      3. 🧪 Verificación: Enfoque de prueba para la corrección
      4. 🚀 Prevención: Cómo evitar problemas similares

      **Herramientas de Investigación:**
      - Usa operaciones de archivo para examinar código relacionado
      - Busca patrones similares en el código base
      - Verifica dependencias y configuraciones

      Por favor proporciona pasos de debug accionables y recomendaciones de corrección.

  - name: "architecture_design"
    description: "🏗️ Análisis de arquitectura de software y recomendaciones de diseño"
    content: |
      🏗️ **Consulta de Diseño de Arquitectura**

      **Proyecto:** {project_description}

      **Restricciones:** {constraints}

      **Marco de Diseño:**
      - 🎯 Análisis de Requisitos: Funcionales y no funcionales
      - 🏛️ Patrones Arquitectónicos: Patrones de diseño adecuados
      - 🔧 Pila Tecnológica: Lenguaje, frameworks, bases de datos
      - 📊 Escalabilidad: Consideraciones de crecimiento y rendimiento
      - 🛡️ Seguridad: Arquitectura de seguridad y modelo de amenazas
      - 🧪 Pruebas: Estrategia de pruebas y aseguramiento de calidad

      **Entregables:**
      1. Diagrama de arquitectura de alto nivel (basado en texto)
      2. Desglose de componentes con responsabilidades
      3. Flujo de datos y definiciones de interfaz
      4. Recomendaciones tecnológicas con justificación
      5. Hoja de ruta de implementación con prioridades

      Enfócate en principios de diseño mantenibles, escalables y robustos.

  - name: "rag_query_optimization"
    description: "🧠 Optimiza consultas RAG para mejores resultados de búsqueda semántica"
    content: |
      🧠 **Optimización de Consulta RAG**

      **Consulta Actual:** {query}
      **Dominio:** {domain}

      **Estrategia de Optimización:**
      - 🎯 Mejora Semántica: Mejora la semántica de la consulta
      - 🔍 Expansión de Palabras Clave: Agrega sinónimos y términos relevantes
      - 📊 Estructuración de Consulta: Optimiza para similitud vectorial
      - 🎛️ Ajuste de Parámetros: Sugiere parámetros de búsqueda

      **Áreas de Análisis:**
      1. Intención de consulta y necesidad de información
      2. Terminología específica del dominio
      3. Patrones de similitud semántica
      4. Efectividad de recuperación de fragmentos

      **Entregables:**
      - Variaciones de consulta optimizadas
      - Recomendaciones de estrategia de búsqueda
      - Sugerencias de parámetros RAG
      - Mejoras esperadas en recuperación

      Usa herramientas RAG para probar la efectividad de la consulta si es útil.

  - name: "documentation_generator"
    description: "📚 Genera documentación completa desde código"
    content: |
      📚 **Generación de Documentación**

      **Archivo Objetivo:** {code_file}
      **Tipo de Documentación:** {doc_type}

      **Marco de Documentación:**
      - 📋 Documentación de API: Firmas de función y uso
      - 💡 Ejemplos: Ejemplos de uso prácticos
      - 🏗️ Arquitectura: Estructura de módulos y relaciones
      - 🚀 Guías de Inicio Rápido: Guías de inicio rápido
      - ⚠️ Casos Límite: Manejo de errores y limitaciones

      **Requisitos de Salida:**
      1. Descripciones claras y concisas
      2. Ejemplos de código con explicaciones
      3. Formato markdown apropiado
      4. Referencias cruzadas y enlaces
      5. Estructura de documentación mantenible

      Por favor lee el archivo de código y genera documentación apropiada.
      Incluye comentarios de documentación en línea y documentación externa según sea necesario.

  - name: "test_strategy"
    description: "🧪 Planificación de pruebas y recomendaciones de estrategia"
    content: |
      🧪 **Desarrollo de Estrategia de Pruebas**

      **Componente:** {component}
      **Tipos de Prueba:** {test_types}

      **Marco de Pruebas:**
      - 🔬 Pruebas Unitarias: Pruebas de función individual
      - 🔗 Pruebas de Integración: Pruebas de interacción de componentes
      - ⚡ Pruebas de Rendimiento: Pruebas de carga y estrés
      - 🛡️ Pruebas de Seguridad: Pruebas de vulnerabilidades y penetración
      - 👤 Aceptación de Usuario: Pruebas de flujo de trabajo de extremo a extremo

      **Entregables:**
      1. Plan de pruebas con objetivos de cobertura
      2. Especificaciones de casos de prueba
      3. Requisitos de infraestructura de pruebas
      4. Estrategia de automatización
      5. Puertas de calidad y criterios de éxito

      **Guía de Implementación:**
      - Patrones de pruebas específicos de Rust
      - Mocking y dobles de prueba
      - Configuración de integración continua

      Analiza el componente y proporciona una estrategia de pruebas completa.

  - name: "refactoring_plan"
    description: "♻️ Estrategia de refactorización sistemática con evaluación de riesgos"
    content: |
      ♻️ **Estrategia de Refactorización**

      **Código Objetivo:** {target_code}
      **Objetivos:** {goals}

      **Proceso de Refactorización:**
      - 🔍 Análisis: Evaluación del estado actual
      - 🎯 Objetivos: Objetivos claros de refactorización
      - 📋 Plan: Plan paso a paso de refactorización
      - ⚠️ Evaluación de Riesgos: Cambios potencialmente disruptivos
      - 🧪 Validación: Estrategia de pruebas para cambios

      **Consideraciones Clave:**
      1. Requisitos de compatibilidad hacia atrás
      2. Análisis de impacto en rendimiento
      3. Coordinación y comunicación del equipo
      4. Enfoque de entrega incremental
      5. Estrategias de rollback

      **Entregables:**
      - Hoja de ruta detallada de refactorización
      - Estrategias de mitigación de riesgos
      - Comparaciones antes/después del código
      - Plan de pruebas y validación

      Proporciona un enfoque seguro y sistemático para la mejora del código.

  - name: "security_audit"
    description: "🛡️ Evaluación de vulnerabilidades de seguridad y estrategias de mitigación"
    content: |
      🛡️ **Solicitud de Auditoría de Seguridad**

      **Alcance de Auditoría:** {scope}
      **Modelo de Amenazas:** {threat_model}

      **Marco de Evaluación de Seguridad:**
      - 🔒 Autenticación: Verificación de identidad
      - 🚪 Autorización: Mecanismos de control de acceso
      - 🛡️ Validación de Entrada: Saneamiento y validación de datos
      - 🔐 Criptografía: Encriptación y gestión de claves
      - 📊 Protección de Datos: Privacidad y manejo de datos
      - 🌐 Seguridad de Red: Seguridad de comunicaciones

      **Categorías de Vulnerabilidades:**
      1. Cumplimiento con OWASP Top 10
      2. Problemas de seguridad de memoria (específicos de Rust)
      3. Vulnerabilidades de dependencias
      4. Seguridad de configuración
      5. Fallos en lógica de negocio

      **Entregables:**
      - Informe de vulnerabilidades de seguridad
      - Evaluación de riesgos con niveles de severidad
      - Recomendaciones de remediación
      - Guía de mejores prácticas de seguridad

      Realiza un análisis de seguridad exhaustivo usando operaciones de archivo y herramientas de búsqueda.



resources:
  - name: "mcp_server_prompts"
    description: "Especificación de Prompts para Servidores MCP"
    path: "https://raw.githubusercontent.com/modelcontextprotocol/modelcontextprotocol/refs/heads/main/docs/specification/2024-11-05/server/prompts.mdx"

  - name: "mcp_server_tools"
    description: "Especificación de Herramientas para Servidores MCP"
    path: "https://raw.githubusercontent.com/modelcontextprotocol/modelcontextprotocol/refs/heads/main/docs/specification/2024-11-05/server/tools.mdx"

  - name: "mcp_server_resources"
    description: "Especificación de Recursos para Servidores MCP"
    path: "https://raw.githubusercontent.com/modelcontextprotocol/modelcontextprotocol/refs/heads/main/docs/specification/2024-11-05/server/resources.mdx"

Prompts de agentes

En el repositorio digio-aidd, puedes encontrar una serie de prompts diseñados para interactuar efectivamente con agentes de IA. Estos prompts están organizados en diferentes categorías basadas en su propósito y funcionalidad.

En progreso....: Los equipos están agregando sus propios prompts, y los más útiles se incorporarán al repositorio con el tiempo.

MCP-Link URL Generator

MCP-Link URL Generator

Enter the details of the API you want to connect to.

    <div class="card">
        <h2>Load from URL</h2>
        <p>Paste a full MCP-Link URL to fill the form automatically.</p>
        <div class="form-group">
            <input type="text" id="full-url-input" placeholder="Paste full MCP-Link URL here">
            <button id="load-from-url-btn">Load</button>
        </div>
    </div>

    <div class="card">
        <h2>Configuration</h2>
        <form id="mcp-link-form">
            <div class="form-group">
                <label for="openapi-spec-url">OpenAPI Specification URL</label>
                <input type="text" id="openapi-spec-url" placeholder="https://example.com/openapi.yaml">
                <small>URL to the OpenAPI specification (YAML/JSON)</small>
            </div>

            <div class="form-group">
                <label for="api-base-url">API Base URL</label>
                <input type="text" id="api-base-url" placeholder="https://api.example.com">
                <small>Base URL of the target service where API requests will be forwarded</small>
            </div>

            <div class="form-group">
                <label>HTTP Headers</label>
                <div class="headers-container" id="headers-container">
                    <!-- Headers will be added here by JavaScript -->
                </div>
                <button type="button" id="add-header-btn">Add Header</button>
            </div>

            <div class="form-group">
                <label>Path Filters</label>
                <div class="filters-container" id="filters-container">
                    <div class="filter-item">
                        <input type="text" class="filter-input" value="+/**">
                        <button type="button" class="remove-filter-btn">Remove</button>
                    </div>
                </div>
                <button type="button" id="add-filter-btn">Add Filter</button>
                <small>
                    Filter Format Examples:
                    <ul>
                        <li><code>+/path/**</code> - Include all endpoints under /path/</li>
                        <li><code>-/path/**</code> - Exclude all endpoints under /path/</li>
                        <li><code>+/users/*:GET</code> - Include GET endpoints for /users/{id}</li>
                    </ul>
                </small>
            </div>
        </form>
    </div>

    <div class="card">
        <h2>Generated URL</h2>
        <div class="generated-url-container">
            <textarea id="generated-url" readonly></textarea>
            <button id="copy-url-btn">Copy</button>
        </div>
    </div>
</div>
<script src="script.js"></script>