DEV Community

Cover image for Pinea archivos en IPFS desde Claude Code, Cursor y Windsurf (Servidor MCP)
Nacho Coll
Nacho Coll

Posted on

Pinea archivos en IPFS desde Claude Code, Cursor y Windsurf (Servidor MCP)

¡Hola, devs! Soy Nacho, parte del equipo de BWS (Blockchain Web Services). Acabamos de lanzar IPFS.NINJA, un servicio gestionado de pinning para IPFS, y una de las integraciones que más uso personalmente es el servidor MCP que te permite subir archivos, pinear CIDs y consultar uso de almacenamiento directamente desde Claude Code, Cursor o Windsurf — simplemente hablando con la IA en español.

Disclosure completo: trabajo en este producto. Este post es un walkthrough transparente del equipo que lo construyó.

Qué te ofrece MCP

Model Context Protocol (MCP) es un estándar abierto para conectar asistentes de IA con herramientas externas. Nuestro servidor MCP expone 12 tools que el modelo puede invocar a mitad de conversación contra tu cuenta IPFS.NINJA:

Operaciones de archivo

  • ipfs_upload — Subir contenido (base64 o texto)
  • ipfs_upload_json — Subir un objeto JSON
  • ipfs_import_car — Importar archivo CAR (DAG import)
  • ipfs_list — Listar tus archivos subidos
  • ipfs_get — Obtener metadatos por CID
  • ipfs_delete — Despinear y borrar un archivo

Pinning

  • ipfs_pin — Pinear un CID existente de la red
  • ipfs_pin_status — Comprobar el progreso del pin

Organización

  • ipfs_folders_list / ipfs_folders_create

Cuenta

  • ipfs_profile — Plan, almacenamiento, ancho de banda
  • ipfs_analytics — Estadísticas diarias

El efecto práctico: dejas de saltar entre terminal, dashboard y editor.

Setup en Claude Code (60 segundos)

1. Regístrate en ipfs.ninja (gratis) y crea una API key en Dashboard → API Keys. Cópiala (sólo se muestra una vez).

2. Añade el servidor MCP:

claude mcp add ipfs-ninja \
  --transport stdio \
  -e IPFS_NINJA_API_KEY=bws_tu_api_key_completa_aqui \
  -- npx -y @ipfs-ninja/mcp-server
Enter fullscreen mode Exit fullscreen mode

O añádelo manualmente a tu .claude/settings.json:

{
  "mcpServers": {
    "ipfs-ninja": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@ipfs-ninja/mcp-server"],
      "env": {
        "IPFS_NINJA_API_KEY": "bws_tu_api_key_completa_aqui"
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

3. Reinicia Claude Code. Escribe /mcp para confirmar que ipfs-ninja está conectado.

El paquete npm es @ipfs-ninja/mcp-server — sin instalación global, se ejecuta vía npx. Requiere Node.js 18+.

Setup en Cursor / Windsurf

En Settings → MCP Servers, añade:

Setting Valor
Name ipfs-ninja
Transport stdio
Command npx
Args -y @ipfs-ninja/mcp-server
Environment IPFS_NINJA_API_KEY=bws_...

Cómo se siente en la práctica

Una vez instalado, simplemente le hablas al asistente:

Tú: Sube mi README.md a IPFS
Tú: Lista mis archivos recientes
Tú: ¿Cuánto almacenamiento estoy usando?
Tú: Pinea bafyabc123... desde la red IPFS
Tú: Crea una carpeta llamada "project-assets"
Enter fullscreen mode Exit fullscreen mode

El modelo elige la herramienta correcta, llama a nuestra API y devuelve un CID + una URL pública de gateway tipo https://ipfs.ninja/ipfs/<CID>. Sin copiar comandos curl, sin cambiar de ventana.

Workflows reales que esto desbloquea

Deploy de un sitio estático a IPFS desde Claude Code:

Tú: Sube el contenido de mi carpeta dist/ a IPFS
Claude: [sube cada archivo, devuelve CIDs]
Tú: ¿Cuál es el CID de index.html?
Claude: [llama a ipfs_get] → QmXyz... — https://ipfs.ninja/ipfs/QmXyz...
Enter fullscreen mode Exit fullscreen mode

Pipeline de metadata para NFTs:

Tú: Crea una carpeta "my-collection" y sube este JSON de metadata
Claude: [llama a ipfs_folders_create, luego ipfs_upload_json]
        → Carpeta: my-collection
        → CID: QmAbc... — URL permanente lista para tu smart contract
Enter fullscreen mode Exit fullscreen mode

Monitorizar uso sin salir del editor:

Tú: ¿Estoy cerca del límite de almacenamiento?
Claude: [llama a ipfs_profile]
        → Plan: Bodhi, Almacenamiento: 45.2 MB / 100 GB (0.04%)
Tú: Muéstrame mi ancho de banda esta semana
Claude: [llama a ipfs_analytics con days=7]
        → 2.3 MB de banda, 45 requests en 3 días
Enter fullscreen mode Exit fullscreen mode

Pinear contenido existente de la red:

Tú: Pinea el readme de IPFS en QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG
Claude: [llama a ipfs_pin] → ¡Pin iniciado! Estado: pinning
Tú: ¿Ya terminó?
Claude: [llama a ipfs_pin_status] → Estado: pinned, Tamaño: 0.008 MB
Enter fullscreen mode Exit fullscreen mode

Troubleshooting (los tres problemas que de verdad ocurren)

  • IPFS_NINJA_API_KEY environment variable is required — al bloque env de tu MCP config le falta la clave.
  • API error 402: not enough storage — has alcanzado el límite de almacenamiento del plan. Haz upgrade o borra archivos no usados.
  • El servidor no aparece en /mcp — olvidaste reiniciar el editor tras añadirlo. Comprueba también que node --version ≥ 18.

Pruébalo

  • Documentación del MCP Server (en español): ipfs.ninja/docs/es/api/mcp-server
  • Paquete npm: @ipfs-ninja/mcp-server
  • Regístrate gratis: ipfs.ninja (Plan Dharma: 1 GB de almacenamiento, 5 GB de banda/mes, todas las features)

Si construyes algo interesante con esto (auto-pinning de assets de blog en cada commit, flujos de mint de NFT desde la IA, etc.), me encantaría que lo cuentes en los comentarios. Lo leemos todo.

— Nacho, equipo BWS

Top comments (0)