惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
大猫的无限游戏
大猫的无限游戏
H
Help Net Security
G
Google Developers Blog
D
Docker
阮一峰的网络日志
阮一峰的网络日志
A
About on SuperTechFans
aimingoo的专栏
aimingoo的专栏
博客园 - 聂微东
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
云风的 BLOG
云风的 BLOG
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
腾讯CDC
T
The Blog of Author Tim Ferriss
Microsoft Security Blog
Microsoft Security Blog
WordPress大学
WordPress大学
I
InfoQ
Engineering at Meta
Engineering at Meta
Stack Overflow Blog
Stack Overflow Blog
Google DeepMind News
Google DeepMind News

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Pinea archivos en IPFS desde Claude Code, Cursor y Windsu...
Nacho Coll · 2026-04-25 · via DEV Community

¡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