Cómo crear tu primer Plugin MCP para Claude Desktop en menos de 30 minutos
Conecta tus herramientas favoritas con MCP y plugins de IA.
¿Qué es un Plugin MCP y por qué te interesa crearlo?
Los plugins MCP (Model Context Protocol) son la puerta de entrada para extender las capacidades de Claude Desktop de forma personalizada. Básicamente, un plugin MCP es un pequeño servidor que se comunica con Claude usando el protocolo MCP, permitiéndole acceder a APIs, bases de datos, archivos locales o cualquier servicio externo que necesites. Lo mejor es que no necesitas ser un experto en desarrollo para crear uno. En este artículo te voy a guiar paso a paso para que tengas tu primer plugin funcionando en menos de 30 minutos. Vas a aprender a construir un plugin que busque recetas de cocina en tiempo real, un ejemplo práctico que podrás adaptar a cualquier otra API que quieras integrar.
Tip: Antes de empezar, asegúrate de tener instalado Node.js (versión 18 o superior) y Claude Desktop. Si no tienes Node.js, descárgalo desde nodejs.org. La instalación es directa y no te llevará más de 5 minutos.
Paso 1: Configuración del proyecto y dependencias
Lo primero es crear la estructura de carpetas para tu plugin. Abre tu terminal y ejecuta los siguientes comandos. Vas a crear una carpeta llamada "mcp-recetas", iniciar un proyecto Node.js e instalar las dependencias necesarias. El paquete clave es @modelcontextprotocol/sdk, que proporciona todo lo necesario para implementar el servidor MCP.
Bashmkdir mcp-recetas cd mcp-recetas npm init -y npm install @modelcontextprotocol/sdk axios El comando npm init -y crea un package.json básico. Luego instalamos el SDK de MCP y axios, que usaremos para hacer peticiones HTTP a la API de recetas. Una vez terminada la instalación, crea un archivo llamado index.js en la raíz de la carpeta. Aquí es donde vivirá todo el código de tu plugin. La estructura es simple: un archivo JavaScript que exporta un servidor MCP con una herramienta (tool) que Claude podrá invocar.
Paso 2: Escribir el código del servidor MCP
Ahora vamos a escribir el corazón del plugin. Abre el archivo index.js y pega el siguiente código. Este script define un servidor MCP que expone una herramienta llamada "buscar_receta". Cuando Claude la invoque, hará una petición a la API pública de TheMealDB para obtener recetas basadas en un ingrediente.
JavaScript (index.js)import { Server } from "@modelcontextprotocol/sdk/server/index.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import axios from "axios"; const server = new Server( { name: "mcp-recetas", version: "1.0.0" }, { capabilities: { tools: {} } } ); server.setRequestHandler("tools/list", async () => ({ tools: [{ name: "buscar_receta", description: "Busca recetas por ingrediente principal", inputSchema: { type: "object", properties: { ingrediente: { type: "string", description: "Ingrediente principal" } }, required: ["ingrediente"] } }] })); server.setRequestHandler("tools/call", async (request) => { if (request.params.name === "buscar_receta") { const ingrediente = request.params.arguments.ingrediente; try { const response = await axios.get(https://www.themealdb.com/api/json/v1/1/filter.php?i=${ingrediente}); const recetas = response.data.meals.slice(0, 5).map(meal => ({ nombre: meal.strMeal, id: meal.idMeal, imagen: meal.strMealThumb })); return { content: [{ type: "text", text: JSON.stringify(recetas, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: Error al buscar recetas: ${error.message} }] }; } } throw new Error("Herramienta no encontrada"); }); const transport = new StdioServerTransport(); await server.connect(transport); Este código hace varias cosas importantes. Primero, crea un servidor MCP con el nombre "mcp-recetas". Luego, implementa dos manejadores: uno para listar las herramientas disponibles (tools/list) y otro para ejecutarlas (tools/call). La herramienta "buscar_receta" espera un parámetro "ingrediente" y devuelve hasta 5 recetas en formato JSON. El uso de axios es para hacer la petición HTTP a la API pública. Nota que el servidor se conecta mediante StdioServerTransport, lo que significa que Claude se comunicará con tu plugin a través de la entrada/salida estándar, sin necesidad de puertos ni servidores web.
Paso 3: Configurar Claude Desktop para usar tu plugin
Una vez que tienes el código listo, el siguiente paso es decirle a Claude Desktop que tu plugin existe. Para ello, necesitas editar el archivo de configuración de Claude. En Windows, suele estar en %APPDATA%\Claude\claude_desktop_config.json. En macOS, en ~/Library/Application Support/Claude/claude_desktop_config.json. Si no existe, créalo. Agrega la siguiente configuración:
JSON (claude_desktop_config.json){ "mcpServers": { "mcp-recetas": { "command": "node", "args": ["C:/ruta/absoluta/a/tu/proyecto/mcp-recetas/index.js"] } } } Importante: reemplaza "C:/ruta/absoluta/a/tu/proyecto/mcp-recetas/index.js" con la ruta real de tu archivo index.js. En macOS, sería algo como "/Users/tuusuario/mcp-recetas/index.js". Guarda el archivo y reinicia Claude Desktop completamente. Para verificar que el plugin se cargó correctamente, abre Claude y escribe el siguiente prompt:
PROMPTUsa la herramienta buscar_receta para encontrar recetas con pollo. Muéstrame los nombres y las imágenes. Si todo funciona, Claude te devolverá una lista de recetas con sus nombres y enlaces a imágenes. Si ves un error, revisa que la ruta en la configuración sea absoluta y que no haya errores de sintaxis en tu index.js. Puedes probar el plugin independientemente ejecutando node index.js en la terminal y viendo si inicia sin errores.
Paso 4: Prueba, depuración y próximos pasos
Una vez que tu plugin funciona, es momento de probarlo a fondo. Pídele a Claude que busque recetas con diferentes ingredientes: "pollo", "arroz", "chocolate". Observa cómo responde y si la información es correcta. Si encuentras errores, la depuración es sencilla: agrega console.log en tu código y revisa la terminal donde iniciaste Claude Desktop (si lo abres desde terminal, verás los logs). También puedes mejorar el plugin añadiendo más herramientas, como una que obtenga la receta completa por ID o que filtre por categoría.
Fallo común Solución Claude no encuentra la herramienta Verifica la ruta absoluta en claude_desktop_config.json y reinicia Claude Error de conexión a la API Revisa tu conexión a internet y que la URL de la API sea correcta El plugin no se inicia Ejecuta node index.js en terminal para ver errores de sintaxis Ahora que tienes tu primer plugin funcionando, las posibilidades son enormes. Puedes crear plugins para consultar el clima, acceder a tu calendario, leer archivos locales, o incluso interactuar con bases de datos. La clave está en entender el patrón: defines herramientas con un esquema de entrada, implementas la lógica en JavaScript y conectas con Claude mediante el protocolo MCP. En menos de 30 minutos has pasado de ser usuario a creador de extensiones para Claude. Experimenta, rompe cosas y construye herramientas que hagan tu flujo de trabajo más productivo.
Tip: Para plugins más complejos, considera usar TypeScript en lugar de JavaScript. El SDK de MCP tiene soporte completo para tipos, lo que facilita el desarrollo y reduce errores. Además, puedes empaquetar tu plugin como un paquete npm y compartirlo con la comunidad.



