Skip to main content
Glama
README.md
# 🪐 MCP IPFS Server (storacha.network) šŸ›°ļø

![Screenshot](https://raw.githubusercontent.com/alexbakers/mcp-ipfs/refs/heads/main/mcp-ipfs.png?neon-game)

[![Publish Docker](https://github.com/alexbakers/mcp-ipfs/actions/workflows/publish-docker.yml/badge.svg)](https://github.com/alexbakers/mcp-ipfs/actions/workflows/publish-docker.yml) [![Publish NPM](https://github.com/alexbakers/mcp-ipfs/actions/workflows/publish-npm.yml/badge.svg)](https://github.com/alexbakers/mcp-ipfs/actions/workflows/publish-npm.yml) [![npm version](https://badge.fury.io/js/mcp-ipfs.svg)](https://badge.fury.io/js/mcp-ipfs)
[![smithery badge](https://smithery.ai/badge/@alexbakers/mcp-ipfs)](https://smithery.ai/server/@alexbakers/mcp-ipfs)

A Node.js server implementing the [Model Context Protocol (MCP)](https://github.com/ModelContextProtocol/specification) for interacting with the [storacha.network](https://storacha.network/) platform via the `w3` command-line interface (`@web3-storage/w3cli`).

This server empowers language models šŸ¤– and other MCP clients to manage storacha.network spaces, upload/download data, manage delegations, and perform various other tasks by seamlessly wrapping `w3` commands.

## ✨ Features

- Wraps the `w3` CLI for native integration with storacha.network.
- Provides MCP tools covering a wide range of `w3` functionality:
  - šŸ”‘ **Authentication & Agent:** `w3_login`, `w3_reset`, `w3_account_ls` (for checking authorization)
  - šŸ“¦ **Space Management:** `w3_space_ls`, `w3_space_use`, `w3_space_info`, `w3_space_add`, `w3_space_provision` (Note: `w3_space_create` must be run manually due to interactive prompts)
  - šŸ’¾ **Data Management:** `w3_up`, `w3_ls`, `w3_rm`
  - šŸ”— **Sharing:** `w3_open` (generates w3s.link URL)
  - šŸ¤ **Delegations & Proofs:** `w3_delegation_create`, `w3_delegation_ls`, `w3_delegation_revoke`, `w3_proof_add`, `w3_proof_ls`
  - šŸ” **Keys & Tokens:** `w3_key_create`, `w3_bridge_generate_tokens`
  - āš™ļø **Advanced Storage (`w3 can ...`):** Blob, CAR, Upload, Index, Access Claim, Filecoin Info management
  - šŸ’³ **Account & Billing:** `w3_plan_get`, `w3_coupon_create`, `w3_usage_report`

## šŸ› ļø Prerequisites

- **Node.js:** Version 22.0.0 or higher (`node -v`).
- **`w3` CLI:** The server executes `w3` commands directly. Ensure `@web3-storage/w3cli` is installed globally and configured:
  ```bash
  npm install -g @web3-storage/w3cli
  w3 login <your-email@example.com>
  # Follow email verification steps
  ```
- **Environment Variable:** The `w3_login` tool requires the `W3_LOGIN_EMAIL` environment variable to be set to the same email used for `w3 login`.

## šŸ—ļø Project Structure

The codebase is organized as follows:

```
src/
ā”œā”€ā”€ index.ts          # Main server entry point, MCP setup, request routing
ā”œā”€ā”€ schemas.ts        # Zod schemas defining input arguments for each tool
ā”œā”€ā”€ tool_handlers.ts  # Implementation logic for each MCP tool
ā”œā”€ā”€ utils.ts          # Helper functions (e.g., running w3 commands, parsing JSON)
└── utils/
    └── logger.ts     # Basic logger configuration
```

## šŸš€ Usage with MCP Clients

This server can be used with any MCP-compatible client. You need to configure your client to connect to this server.

### Example: NPX (Recommended for simple local use)

This assumes `npm` and the prerequisites are met.

```json
{
  "mcpServers": {
    "ipfs": {
      "command": "npx",
      "args": ["-y", "mcp-ipfs"],
      "env": {
        "W3_LOGIN_EMAIL": "your-email@example.com"
      }
    }
  }
}
```

### Example: Docker

Build the image first (see Build section) or use the pre-built image `alexbakers/mcp-ipfs`.

```json
{
  "mcpServers": {
    "mcp-ipfs": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "/path/to/your/project:/path/to/your/project",
        "-e",
        "W3_LOGIN_EMAIL",
        "alexbakers/mcp-ipfs"
      ],
      "env": {
        "W3_LOGIN_EMAIL": "your-email@example.com"
      }
    }
  }
}
```

#### šŸ“ Note on Paths:

Several `w3` commands require **absolute filesystem paths** (e.g., `w3_up`, `w3_delegation_create --output`, `w3_proof_add`, `w3_can_blob_add`, `w3_can_store_add`).

- **NPX:** Provide absolute paths from your host machine.
- **Docker:** Provide absolute paths _inside the container_. If interacting with files from your host (e.g., uploading), you **must** mount the relevant host directory into the container using the `-v` flag (e.g., `-v /Users/me/project:/Users/me/project`) and then use the _container path_ (e.g., `/Users/me/project/my_file.txt`) in the tool arguments.

## šŸ“¦ Build

Clone the repository and install dependencies:

```bash
git clone https://github.com/alexbakers/mcp-ipfs.git
cd mcp-ipfs
npm install
```

Build the TypeScript code:

```bash
npm run build
```

You can then run the server directly:

```bash
# Ensure W3_LOGIN_EMAIL is set in your environment
export W3_LOGIN_EMAIL="your-email@example.com"
node dist/index.js
```

Or publish it (if you have the rights):

```bash
npm publish
```

### 🐳 Docker Build

Build the Docker image:

```bash
# Build locally (replace with your username/repo and desired tag)
docker build -t alexbakers/mcp-ipfs .
```

## šŸ“œ License

This MCP server is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.

TDQS

C2.6/5.0

Scored across 35 tools

Disambiguation3/5

The tools have overlapping purposes that could cause confusion, such as w3_can_blob_add and w3_can_store_add both handling file storage with similar requirements, and w3_key_create and w3_up both generating key pairs. However, descriptions provide some clarity, and many tools target distinct resources like accounts, spaces, and uploads, reducing ambiguity.

Naming Consistency4/5

Most tools follow a consistent w3_ prefix with snake_case and verb_noun patterns like w3_account_ls, w3_space_create, and w3_can_blob_add. Minor deviations exist, such as w3_up being less descriptive and some tools having vague names like w3_ls or w3_open, but overall naming is predictable and readable.

Tool Count2/5

With 35 tools, the count is excessive for the apparent scope of IPFS and account management, making it heavy and potentially overwhelming. A more focused set of 10-20 tools would be more appropriate, as many tools like w3_can_index_add and w3_can_upload_rm are marked as advanced use, suggesting unnecessary complexity.

Completeness4/5

The toolset provides comprehensive coverage for IPFS operations, including account management, file storage, space handling, and advanced features like CAR file management. Minor gaps exist, such as limited error handling tools or missing interactive commands like w3_space_create, but core workflows are well-supported with CRUD-like operations for blobs, stores, and uploads.

Maintenance

ActivityInactive
ResponsivenessUnresponsive