MCP IPFS Server logo

MCP IPFS Server

by AleksanStark

The MCP IPFS Server facilitates interaction between models, agents, and contextual data using the Model Context Protocol (MCP) and IPFS for decentralized data storage. It allows users to upload, retrieve, pin, and unpin files on IPFS through MCP requests.

View on GitHub

Last updated: N/A

MCP Server

1. What is MCP (Model Context Protocol)?

Model Context Protocol (MCP) is a standard for interaction between models, agents, and contextual data. It is developed and maintained by the community. More details can be found in the official repository: MCP GitHub.

2. What is IPFS?

InterPlanetary File System (IPFS) is a distributed file system that enables decentralized data storage and sharing. It is used in MCP for storing and interacting with data, ensuring reliability and fault tolerance.

3. MCP Server Architecture Overview

Components:

  • MCP Node — the core server component that processes MCP requests.
  • IPFS — a decentralized storage system for handling content.
  • Client — interacts with the MCP server to send and receive data.
  • Claude AI — used for processing and enhancing MCP interactions.

Component Interaction:

  1. The client sends a request to the MCP node.
  2. The MCP node processes the request and interacts with IPFS if necessary.
  3. Claude AI assists in processing and optimizing responses.
  4. The response is returned to the client.

4. Deploying the MCP Server

Requirements:

  • Node.js (recommended version 18+)
  • NPM or Yarn

Installation

Installation will depend on whether you are using Claude Code or Claude Desktop

Claude Code

Run claude mcp add and follow the prompts with the following information:

Server Name: mcp-ipfs
Server Command: node
Command Arguments: node /ABSOLUTE/PATH/TO/PARENT/FOLDER/mcp-ipfs-server/build/index.js

Claude Desktop

Add the following config to claude_desktop_config.json

  {
  "mcpServers": {
    "ipfs-mcp": {
      "command": "node",
      "args": [
        "/Absolute/path/to/mcp-ipfs-server/build/index.js"
      ]
    }
  }
}

Automated Installation And Deployment

Use the following bash script to automate the server deployment:

#!/bin/bash

sudo apt update
sudo apt install -y wget tar git npm

wget https://github.com/ipfs/kubo/releases/download/v0.34.1/kubo_v0.34.1_linux-amd64.tar.gz

tar -xvzf kubo_v0.34.1_linux-amd64.tar.gz

cd kubo
sudo bash install.sh

ipfs init

sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 4001/tcp
sudo ufw allow 8080/tcp
sudo ufw allow 22/tcp
sudo ufw allow 5001/tcp
sudo ufw enable
sudo ufw status




# Clone the MCP server repository
git clone https://github.com/AleksanStark/mcp-ipfs-server.git
cd mcp-ipfs-server

# Install dependencies
npm install
npm install @modelcontextprotocol/sdk zod
npm install -D @types/node typescript
# Build the project
npm run build
ipfs daemon

Usage

To start using the MCP start up Claude Code with the command claude or start Claude Desktop. Below are the available operations:

File Operations

  • upload-file to IPFS
  • get-file by CID
  • pin-file by CID
  • list-folder get list of directory by CID
  • unpin-file- by CID

Example Prompts for Claude

Here are some examples of how to instruct Claude to use ipfs-mcp:

Upload an image to IPFS:
"Please upload the file at ~/Pictures/example.jpg to my Pinata account as a private file named 'My Example Image'"

Get a file from IPFS:
"Get the file from IPFS using the CID""

Pin a file to IPFS:
"Pin the file by it's CID"

Unpin a file to IPFS:
"Unpin the file based on the CID"

Questions

Send us an email with any issues you may encounter!