Skip to main content
Glama

What is MCP-IPFS?

MCP-IPFS is a Model Context Protocol (MCP) server that enables Claude and other AI assistants to interact directly with IPFS (InterPlanetary File System). It provides a comprehensive suite of tools for content-addressed storage, peer-to-peer networking, and decentralized data management.

Built on Helia (the modern JavaScript IPFS implementation), with a pluggable architecture ready for Kubo and remote pinning services.

Why MCP-IPFS?

Without MCP-IPFS

With MCP-IPFS

Manual IPFS CLI commands

Claude handles IPFS operations directly

Copy-paste CIDs between tools

Seamless content-addressed workflows

No visibility into node status

Full observability of peers, bandwidth, DHT

Long operations block interaction

Background jobs with progress tracking

Single IPFS backend

Pluggable: Helia, Kubo, pinning services


Related MCP server: Filesystem MCP Server

๐Ÿš€ Quick Start

Prerequisites

  • Node.js 18+

  • Claude Code CLI or any MCP-compatible client

Installation

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

# Install dependencies
npm install

# Build
npm run build

Add to Claude Code

Add to your ~/.claude/claude_desktop_config.json:

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

Verify Installation

You: What's the IPFS node status?

Claude: [Uses node_status tool]
Node is running with peer ID QmXxx...
Connected to 12 peers
Repository size: 45.2 MB

โœจ Features

๐Ÿ“ฆ Content Operations

  • Add & retrieve text, JSON, files, directories

  • Pin management to prevent garbage collection

  • IPNS publishing for mutable names

  • MFS (Mutable File System) for familiar file operations

  • DAG operations for advanced IPLD data structures

๐Ÿ”ญ Node Monitoring

  • Node identity and health status

  • Peer connections with latency and direction

  • Bandwidth statistics total and per-protocol

  • Repository stats and garbage collection

  • DHT operations for peer/content discovery

โšก Background Jobs

  • Async operations for large files and slow networks

  • Progress tracking with real-time updates

  • Job management - list, poll, cancel

  • Auto-detection - small ops return immediately

๐Ÿ”Œ Pluggable Backends

  • Helia (embedded) - zero external dependencies

  • Kubo (planned) - connect to existing go-ipfs nodes

  • Pinning Services (planned) - Pinata, Web3.Storage


๐Ÿ›  Tools

Content Tools

Tool

Description

ipfs_add

Add text, JSON, or file to IPFS. Returns CID.

ipfs_get

Retrieve content by CID

ipfs_pin

Pin content to prevent garbage collection

ipfs_unpin

Unpin content

ipfs_pins_list

List all pinned CIDs

ipfs_add_directory

Add entire directory, returns root CID

ipfs_ls

List contents of directory CID

ipfs_get_file

Get specific file from directory by path

IPNS Tools

Tool

Description

ipns_publish

Publish CID to IPNS name

ipns_resolve

Resolve IPNS name to current CID

ipns_keys_list

List available IPNS keys

MFS Tools (Mutable File System)

Tool

Description

mfs_write

Write content to mutable path

mfs_read

Read content from MFS path

mfs_ls

List directory contents

mfs_mkdir

Create directory

mfs_rm

Remove file or directory

mfs_mv

Move/rename file or directory

mfs_flush

Flush MFS to get root CID

DAG Tools

Tool

Description

dag_put

Store IPLD data, returns CID

dag_get

Retrieve IPLD node, optionally traverse path

Node Tools

Tool

Description

node_id

Get peer ID, public key, versions

node_status

Quick health check

node_version

Detailed version info

peers_list

Connected peers with details

peers_count

Simple peer count

bandwidth_stats

Network bandwidth metrics

swarm_connect

Connect to peer by multiaddr

swarm_disconnect

Disconnect from peer

repo_stats

Repository statistics

repo_gc

Trigger garbage collection

DHT Tools

Tool

Description

dht_find_peer

Find addresses for peer ID via DHT

dht_find_providers

Find peers providing a CID (configurable limit)

dht_provide

Announce content availability to the network

Job Tools

Tool

Description

job_status

Get status of background job

jobs_list

List all jobs

job_cancel

Cancel running job


โš™๏ธ Configuration

Configuration File

Create mcp-ipfs.config.json in the project root:

{
  "backend": "helia",
  "persistence": {
    "enabled": true,
    "path": "./ipfs-data"
  },
  "helia": {
    "libp2p": {
      "addresses": ["/ip4/0.0.0.0/tcp/4002"],
      "bootstrap": true
    }
  },
  "jobs": {
    "maxConcurrent": 3,
    "defaultTimeout": 300000
  }
}

Environment Variables

Environment variables override config file settings:

Variable

Description

Default

MCP_IPFS_BACKEND

Backend to use

helia

MCP_IPFS_PERSISTENCE_ENABLED

Enable persistent storage

true

MCP_IPFS_DATA_PATH

Data directory path

./ipfs-data

MCP_IPFS_BOOTSTRAP

Connect to bootstrap nodes

true

MCP_IPFS_JOBS_MAX_CONCURRENT

Max concurrent jobs

3

MCP_IPFS_JOBS_TIMEOUT

Default job timeout (ms)

300000

Persistence Modes

Persistent (default):

  • Content survives server restarts

  • Uses LevelDB blockstore

  • Recommended for production

In-memory:

  • Content lost on restart

  • Faster for testing

  • Set persistence.enabled: false


๐Ÿ— Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                   Claude                         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                      โ”‚ MCP Protocol (JSON-RPC)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              MCP-IPFS Server                     โ”‚
โ”‚                                                  โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚  Content  โ”‚  โ”‚   Node    โ”‚  โ”‚    Job      โ”‚ โ”‚
โ”‚  โ”‚   Tools   โ”‚  โ”‚   Tools   โ”‚  โ”‚   Manager   โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”‚        โ”‚              โ”‚               โ”‚        โ”‚
โ”‚        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜        โ”‚
โ”‚                       โ”‚                         โ”‚
โ”‚           โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”            โ”‚
โ”‚           โ”‚    Backend Layer      โ”‚            โ”‚
โ”‚           โ”‚   (IPFSBackend)       โ”‚            โ”‚
โ”‚           โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                        โ”‚
          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”
    โ”‚  Helia   โ”‚  โ”‚   Kubo   โ”‚  โ”‚ Pinning  โ”‚
    โ”‚(embedded)โ”‚  โ”‚   API    โ”‚  โ”‚ Services โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โœ“           planned      planned

Key Components

Component

Responsibility

Content Tools

IPFS add/get/pin, IPNS, MFS, DAG operations

Node Tools

Status, peers, bandwidth, repo, DHT, config

Job Manager

Queue long operations, track progress, enable polling

Backend Layer

Abstract IPFS implementation details

Backend Interface

interface IPFSBackend {
  // Lifecycle
  start(): Promise<void>;
  stop(): Promise<void>;

  // Content
  add(content: Uint8Array, options?: AddOptions): Promise<CID>;
  get(cid: CID): Promise<Uint8Array>;
  pin(cid: CID): Promise<void>;
  unpin(cid: CID): Promise<void>;

  // Node info
  id(): Promise<PeerInfo>;
  peers(): Promise<PeerConnection[]>;
  // ... etc
}

๐Ÿ“ Project Structure

mcp-ipfs/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ index.ts              # Entry point
โ”‚   โ”œโ”€โ”€ server.ts             # MCP server setup
โ”‚   โ”œโ”€โ”€ tools/
โ”‚   โ”‚   โ”œโ”€โ”€ content.ts        # Content operations
โ”‚   โ”‚   โ”œโ”€โ”€ node.ts           # Node monitoring
โ”‚   โ”‚   โ””โ”€โ”€ jobs.ts           # Job management
โ”‚   โ”œโ”€โ”€ backends/
โ”‚   โ”‚   โ”œโ”€โ”€ interface.ts      # Backend abstraction
โ”‚   โ”‚   โ””โ”€โ”€ helia.ts          # Helia implementation
โ”‚   โ”œโ”€โ”€ jobs/
โ”‚   โ”‚   โ””โ”€โ”€ manager.ts        # Job queue
โ”‚   โ””โ”€โ”€ config.ts             # Configuration
โ”œโ”€โ”€ test/
โ”‚   โ”œโ”€โ”€ content.test.ts
โ”‚   โ”œโ”€โ”€ node.test.ts
โ”‚   โ””โ”€โ”€ jobs.test.ts
โ”œโ”€โ”€ docs/
โ”‚   โ””โ”€โ”€ plans/                # Design documents
โ”œโ”€โ”€ package.json
โ”œโ”€โ”€ tsconfig.json
โ””โ”€โ”€ mcp-ipfs.config.json

๐Ÿงช Development

# Install dependencies
npm install

# Run in development mode
npm run dev

# Run tests
npm test

# Build for production
npm run build

# Lint
npm run lint

๐Ÿค Contributing

Contributions are welcome! Please read our contributing guidelines before submitting PRs.

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request


Learn More

Community


๐Ÿ“œ License

MIT License - see LICENSE for details.


๐Ÿ™ Acknowledgments


Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server for Claude Desktop that provides structured memory management across chat sessions, allowing Claude to maintain context and build a knowledge base within project directories.
    6 npm
    6
    MIT
  • F
    license
    Not graded
    quality
    F
    maintenance
    A Model Context Protocol server that extends AI capabilities by providing file system access and management functionalities to Claude or other AI assistants.
    164 npm
    5
    -
  • F
    license
    A
    quality
    F
    maintenance
    A Model Context Protocol server that enables Claude to display and interact with images from the local filesystem, allowing users to view images directly in conversations and retrieve image metadata.
    3
    5
    -