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

推荐订阅源

I
InfoQ
博客园 - 司徒正美
爱范儿
爱范儿
F
Fortinet All Blogs
J
Java Code Geeks
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 三生石上(FineUI控件)
腾讯CDC
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
SegmentFault 最新的问题
Microsoft Security Blog
Microsoft Security Blog
T
The Blog of Author Tim Ferriss
V
V2EX
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
云风的 BLOG
云风的 BLOG
T
Tailwind CSS Blog
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
A
About on SuperTechFans
有赞技术团队
有赞技术团队
Y
Y Combinator Blog

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