Pinata

Interactúa con IPFS público y privado a través de la API de Pinata. Requiere una cuenta de Pinata y una clave de API.

Documentación

pinata-mcp

Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona a Claude acceso a Pinata. Esta integración permite que Claude interactúe con IPFS Público y Privado a través de la API de Pinata.

Configuración

Requisitos previos

  • Node.js 18+ instalado
  • Una cuenta de Pinata con una clave de API (JWT)
  • Una URL de puerta de enlace de Pinata

Instalación

La instalación dependerá de si estás usando Claude Code o Claude Desktop.

Claude Code

Ejecuta claude mcp add y sigue las indicaciones con la siguiente información:

Server Name: pinata
Server Scope: Project or Global
Server Command: npx
Command Arguments: pinata-mcp /path/to/allowed/directory
Environment Variables: PINATA_JWT=<YOUR_JWT>,GATEWAY_URL=example.mypinata.cloud

Claude Desktop

Agrega la siguiente configuración a claude_desktop_config.json:

{
  "mcpServers": {
    "pinata": {
      "command": "npx",
      "args": [
        "pinata-mcp",
        "/path/to/allowed/directory",
        "/another/allowed/directory"
      ],
      "env": {
        "PINATA_JWT": "<YOUR_JWT>",
        "GATEWAY_URL": "example.mypinata.cloud"
      }
    }
  }
}

Nota: Los argumentos de directorio son opcionales. Si no se proporcionan, el servidor solo permitirá el acceso al directorio de trabajo actual. Puedes especificar múltiples directorios para permitir el acceso a archivos desde varias ubicaciones.

Herramientas Disponibles

Autenticación

HerramientaDescripción
testAuthenticationVerifica que tu JWT de Pinata sea válido y funcione

Operaciones de Archivos

HerramientaDescripción
uploadFileSube un archivo a Pinata (IPFS público o privado)
searchFilesBusca archivos por nombre, CID o tipo MIME
getFileByIdObtén información detallada de un archivo por ID
updateFileActualiza metadatos de archivos (nombre, pares clave-valor)
deleteFileElimina un archivo de Pinata

Acceso a Contenido

HerramientaDescripción
createLinkCrea un enlace de puerta de enlace para archivos públicos o privados
createPrivateDownloadLinkGenera un enlace de descarga temporal para archivos privados
fetchFromGatewayObtén contenido de IPFS a través de la puerta de enlace de Pinata

Operaciones de Grupos

HerramientaDescripción
listGroupsLista grupos con filtrado opcional
createGroupCrea un nuevo grupo para organizar archivos
getGroupObtén detalles de un grupo por ID
updateGroupActualiza información de un grupo
deleteGroupElimina un grupo
addFileToGroupAgrega un archivo a un grupo
removeFileFromGroupElimina un archivo de un grupo

Instrucciones de Pago x402

Herramientas para la monetización de contenido mediante el protocolo x402:

HerramientaDescripción
createPaymentInstructionCrea requisitos de pago para contenido restringido
listPaymentInstructionsLista/filtra instrucciones de pago existentes
getPaymentInstructionObtén detalles de una instrucción de pago específica
updatePaymentInstructionModifica la configuración de instrucciones de pago
deletePaymentInstructionElimina una instrucción de pago
listPaymentInstructionCidsLista los CIDs asociados con una instrucción de pago
addCidToPaymentInstructionAsocia un CID con una instrucción de pago
removeCidFromPaymentInstructionElimina una asociación de CID

Firmas CID

Herramientas para la verificación criptográfica de contenido mediante firmas EIP-712:

HerramientaDescripción
addSignatureAgrega una firma criptográfica a un CID
getSignatureObtén detalles de firma por CID
deleteSignatureElimina una firma

URLs de Subida Firmadas

HerramientaDescripción
createSignedUploadUrlCrea una URL prefirmada para subidas desde el lado del cliente

Pin por CID

HerramientaDescripción
pinByCidFija un CID existente de la red IPFS
queryPinRequestsConsulta el estado de las solicitudes de fijación
cancelPinRequestCancela una solicitud de fijación pendiente

Vectorize (Búsqueda IA/Semántica)

HerramientaDescripción
vectorizeFileVectoriza un archivo para búsqueda semántica
deleteFileVectorsElimina vectores de un archivo
queryVectorsConsulta archivos vectorizados mediante búsqueda semántica

Utilidades

HerramientaDescripción
listAllowedDirectoriesLista los directorios a los que el servidor puede acceder para operaciones de archivos

Desarrollo Local

Para probar el servidor MCP localmente durante el desarrollo:

1. Clonar e instalar dependencias

git clone https://github.com/PinataCloud/pinata-mcp.git
cd pinata-mcp
npm install

2. Compilar el proyecto

npm run build

3. Configurar variables de entorno

Crea un archivo .env en la raíz del proyecto (opcional, también puedes pasarlos en la configuración de MCP):

PINATA_JWT=your_pinata_jwt_here
GATEWAY_URL=your-gateway.mypinata.cloud

4. Configurar Claude para usar la compilación local

Claude Code

Ejecuta claude mcp add con la ruta local:

Server Name: pinata-dev
Server Scope: Project
Server Command: node
Command Arguments: /path/to/pinata-mcp/dist/index.js /path/to/allowed/directory
Environment Variables: PINATA_JWT=<YOUR_JWT>,GATEWAY_URL=example.mypinata.cloud

Claude Desktop

Actualiza claude_desktop_config.json para que apunte a tu compilación local:

{
  "mcpServers": {
    "pinata-dev": {
      "command": "node",
      "args": [
        "/path/to/pinata-mcp/dist/index.js",
        "/path/to/allowed/directory"
      ],
      "env": {
        "PINATA_JWT": "<YOUR_JWT>",
        "GATEWAY_URL": "example.mypinata.cloud"
      }
    }
  }
}

5. Probar cambios

Después de realizar cambios en el código:

  1. Recompila: npm run build
  2. Reinicia Claude Code o Claude Desktop para aplicar los cambios

Pruebas con MCP Inspector

Usa el MCP Inspector para probar el servidor:

Interfaz Web (depuración interactiva)

npx @modelcontextprotocol/inspector \
  -e PINATA_JWT=your_jwt \
  -e GATEWAY_URL=your-gateway.mypinata.cloud \
  -- node dist/index.js

Esto abre una interfaz de navegador donde puedes listar herramientas interactivamente, llamarlas con parámetros e inspeccionar las respuestas.

Modo CLI (para scripting/CI)

# List all available tools
npx @modelcontextprotocol/inspector --cli --method tools/list \
  -e PINATA_JWT=your_jwt \
  -e GATEWAY_URL=your-gateway.mypinata.cloud \
  -- node dist/index.js

# Call a specific tool
npx @modelcontextprotocol/inspector --cli --method tools/call \
  --tool-name testAuthentication \
  -e PINATA_JWT=your_jwt \
  -e GATEWAY_URL=your-gateway.mypinata.cloud \
  -- node dist/index.js

Ejemplos de Indicaciones para Claude

Test my Pinata connection:
"Test my Pinata authentication to make sure everything is working"

Upload an image to Pinata:
"Upload this image to my Pinata account as a private file named 'My Example Image'"

Search for files:
"Search my Pinata account for all PNG files"

Create a group and add files:
"Create a new group called 'Project Assets' on Pinata, then find all my JSON files and add them to this group"

Fetch content from IPFS:
"Fetch the content with CID QmX... from IPFS"

Create a payment instruction for content monetization:
"Create a payment instruction called 'Premium Content' that requires 0.01 USDC on Base to access"

Pin an existing CID:
"Pin the CID bafkreih5aznjvttude6c3wbvqeebb6rlx5wkbzyppv7garjiubll2ceym4 to my account"

Vectorize files for AI search:
"Vectorize the file with ID abc123 so I can search it semantically"

Query vectorized content:
"Search my vectorized files in group xyz for 'machine learning concepts'"