使用说明

项目简介

Storacha MCP存储服务器是一个实现了 Model Context Protocol (MCP) 的服务器,它允许AI应用通过标准化的接口与 Storacha 去中心化存储网络进行交互。该服务器提供文件上传、检索和身份管理等核心功能,旨在简化LLM应用与去中心化存储的集成。

主要功能点

  • 文件操作:
    • 上传文件到 Storacha 去中心化存储网络。
    • 通过 Storacha HTTP 网关检索文件。
  • 身份管理:
    • 获取 Storacha Agent 的 DID 密钥。
  • 双传输模式:
    • HTTP SSE (Server-Sent Events) 模式,用于远程通信。
    • Stdio 模式,用于本地集成。
  • 标准化接口:
    • 遵循 MCP 协议的 API,用于工具发现和调用。
    • JSON-RPC 消息处理。
  • 安全性:
    • Bearer Token 认证
    • CORS 配置
    • 输入验证
    • 安全的错误处理

安装步骤

  1. 克隆仓库

    git clone https://github.com/storacha/mcp-storage-server.git
    cd mcp-storage-server
  2. 安装依赖

    pnpm install
  3. 创建 '.env' 配置文件

    cp .env.example .env
  4. 配置服务器 修改 '.env' 文件,根据需要配置以下环境变量:

    # MCP 服务器配置
    MCP_SERVER_PORT=3001                # (可选) 服务器监听端口,默认为 3001
    MCP_SERVER_HOST=0.0.0.0             # (可选) 服务器绑定地址,默认为 0.0.0.0
    MCP_CONNECTION_TIMEOUT=30000        # (可选) 连接超时时间,单位毫秒,默认为 30000
    MCP_TRANSPORT_MODE=stdio            # (可选) 传输模式,可选 stdio 或 sse,默认为 stdio
    
    # 安全配置
    SHARED_ACCESS_TOKEN=                # (可选) 设置后上传文件需要 Bearer Token 认证
    
    # 存储客户端配置
    PRIVATE_KEY=                        # (必填) Storacha Agent 私钥,用于文件上传授权
    DELEGATION=                         # (可选) Base64 编码的 Delegation,授权 Agent 所有者上传文件。如未设置,则每次上传请求必须提供。
    GATEWAY_URL=https://storacha.link   # (可选) 自定义文件检索网关 URL,默认为 https://storacha.link
  5. 启动服务器

    • Stdio 模式 (推荐本地通信):
      pnpm start:stdio
    • SSE 模式 (推荐远程通信):
      pnpm start:sse

服务器配置 (MCP客户端)

MCP 客户端需要配置以下信息以连接到 Storacha MCP 服务器。以下是 Stdio 模式的配置示例:

{
  "serverName": "storacha-mcp-server",
  "command": "node",
  "args": [
    "dist/index.js"
  ],
  "env": {
    "MCP_TRANSPORT_MODE": "stdio",
    "PRIVATE_KEY": "<Your_Storacha_Agent_Private_Key>",
    "DELEGATION": "<Your_Storacha_Delegation>"
  }
}

配置参数说明:

  • 'serverName': 服务器名称,可以自定义。
  • 'command': 启动 MCP 服务器的命令,这里是 'node'。
  • 'args': 命令参数,指向服务器入口文件 'dist/index.js'。
  • 'env': 环境变量配置,需要设置 'MCP_TRANSPORT_MODE' 为 'stdio',并配置 Storacha Agent 的 'PRIVATE_KEY' 和 'DELEGATION'。

注意: 如果使用 SSE 模式,MCP 客户端需要配置服务器的 SSE 端点 URL,而不是启动命令。具体配置方式请参考 MCP 客户端 SDK 的文档。

基本使用方法

  1. 列出工具: 客户端连接服务器后,可以调用 'listTools' 方法列出服务器提供的工具,例如:

    const response = await client.listTools();
    console.log(response.tools.map(tool => tool.name));
    // 输出: ['identity', 'retrieve', 'upload']
  2. 获取 Agent DID: 调用 'identity' 工具获取 Storacha Agent 的 DID 密钥:

    const response = await client.callTool({
      name: 'identity',
      arguments: {}
    });
    console.log('Agent DID:', JSON.parse(response.content[0].text));
    // 输出:  {"id":"did:key:z6MkjiNpY1QhuULQUkF5thrDbVz2fZwg49zYMg4a7zY1KDr9"}
  3. 上传文件: 调用 'upload' 工具上传文件,文件内容需要 Base64 编码:

    const fileBuffer = new Uint8Array([1, 2, 3]);
    const base64File = Buffer.from(fileBuffer).toString('base64');
    const result = await client.callTool({
      name: 'upload',
      arguments: {
        file: base64File,
        name: 'example.txt',
        type: 'text/plain',
      }
    });
    console.log(result);
    // 输出: {"content":[{"type":"text","text":"{\"root\":\"bafk...123\",\"rootURL\":\"https://storacha.link/ipfs/bafk...123\",\"files\":[{\"name\":\"test.txt\",\"type\":\"text/plain\",\"url\":\"https://storacha.link/ipfs/bafk...123/test.txt\"}]}"}]}
  4. 检索文件: 调用 'retrieve' 工具检索文件,需要提供文件的 root CID:

    const retrieveResponse = await client.callTool({
      name: 'retrieve',
      arguments: {
        root: 'bafy...', // 替换为实际的 root CID
      },
    });
    console.log(retrieveResponse);
    // 输出文件内容 (Base64 编码) 和类型

信息

分类

数据库与文件