mcpField
S
Story MCP Hub

Story MCP Hub

本地服务
github.com/piplabs金融数据1654 周前更新

关于 Story MCP Hub

Story MCP Hub 汇集 Story Protocol 的 StoryScan 和 SDK MCP 服务,面向需要查询链上数据或执行 IP 资产操作的 AI Agent。它涵盖从交易与持仓查询到许可、版税和争议管理的工具。

主要功能

  1. 01查询余额、交易和链上统计
  2. 02读取 ERC-20 与 NFT 持仓
  3. 03调用 Story Protocol SDK 管理 IP 资产
  4. 04处理许可、版税和争议操作
  5. 05上传图像及元数据到 IPFS

适用场景

  1. 01查看地址交易、余额和代币持仓
  2. 02将 NFT 注册为 IP 并附加许可条款
  3. 03铸造许可代币或收取版税
  4. 04查询交易含义及链上统计

MCP 相关

该项目包含 StoryScan 和 Story SDK 两个 MCP 服务,向 MCP 客户端提供链上查询及 Story Protocol SDK 操作工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Story MCP Hub

此仓库是 Story Protocol 的 Model Context Protocol(MCP)服务中心。它提供统一的环境,用于运行和管理各种 MCP 服务,让 AI Agent 能够与 Story Protocol 生态系统交互。

项目结构

story-mcp-hub/
├── storyscan-mcp/       # MCP server for blockchain data queries via StoryScan
├── story-sdk-mcp/       # MCP server for Story Protocol SDK interactions
├── utils/               # Shared utilities for MCP servers
├── .venv/               # Python virtual environment
├── pyproject.toml       # Project dependencies and configuration
├── .python-version      # Python version specification
└── README.md            # This file
graph TD
    subgraph "MCP Hub"
        style MCP Hub fill:#F5F5FF,stroke:#9999CC,stroke-width:2px,rx:10,ry:10
        Agent["AI Agent<br>(Claude, IDEs, Tools)"]
        style Agent fill:#E6E6FA,stroke:#9370DB,stroke-width:2px,rx:8,ry:8
    end

    subgraph "StoryScan MCP Server"
        style StoryScan MCP Server fill:#F0F8FF,stroke:#87CEFA,stroke-width:2px,rx:10,ry:10
        StoryscanService["StoryScan Service"]
        style StoryscanService fill:#E6E6FA,stroke:#9370DB,stroke-width:2px,rx:8,ry:8

        subgraph "StoryScan Tools"
            style StoryScan Tools fill:#F0FFFF,stroke:#5F9EA0,stroke-width:2px,rx:10,ry:10
            StoryscanToolset["Blockchain Data<br>get_transactions,<br>get_address_overview,<br>get_token_holdings,<br>get_nft_holdings,<br>get_stats,<br>interpret_transaction"]
            style StoryscanToolset fill:#E0FFFF,stroke:#5F9EA0,stroke-width:2px,rx:8,ry:8
        end
    end

    subgraph "Story SDK MCP Server"
        style Story SDK MCP Server fill:#F5FFFA,stroke:#98FB98,stroke-width:2px,rx:10,ry:10
        StoryService["Story Service"]
        style StoryService fill:#E6E6FA,stroke:#9370DB,stroke-width:2px,rx:8,ry:8

        subgraph "Story SDK Tools"
            style Story SDK Tools fill:#F0FFF0,stroke:#90EE90,stroke-width:2px,rx:10,ry:10
            IPFSTools["IPFS & Metadata<br>upload_image_to_ipfs<br>create_ip_metadata"]
            style IPFSTools fill:#E0FFFF,stroke:#5F9EA0,stroke-width:2px,rx:8,ry:8
            LicenseTools["License Management<br>get_license_terms,<br>mint_license_tokens,<br>get_license_minting_fee,<br>predict_minting_license_fee"]
            style LicenseTools fill:#E0FFFF,stroke:#5F9EA0,stroke-width:2px,rx:8,ry:8
            IPTools["IP & NFT Management<br>register, attach_license_terms,<br>mint_and_register_ip_with_terms,<br>create_spg_nft_collection"]
            style IPTools fill:#E0FFFF,stroke:#5F9EA0,stroke-width:2px,rx:8,ry:8
            TokenTools["Token & Revenue<br>deposit_wip, transfer_wip,<br>pay_royalty_on_behalf,<br>claim_all_revenue,<br>raise_dispute"]
            style TokenTools fill:#E0FFFF,stroke:#5F9EA0,stroke-width:2px,rx:8,ry:8
        end
    end

    subgraph "External Resources"
        style External Resources fill:#FFF0F5,stroke:#FFB6C1,stroke-width:2px,rx:10,ry:10
        IPFS[(IPFS/Pinata<br>Storage)]
        style IPFS fill:#FFE4E1,stroke:#DB7093,stroke-width:2px,rx:15,ry:15
        Blockchain[(Story Protocol<br>Blockchain)]
        style Blockchain fill:#E0F8E0,stroke:#90EE90,stroke-width:2px,rx:15,ry:15
        StoryScan[(StoryScan/Blockscout<br>API)]
        style StoryScan fill:#E6F3FF,stroke:#87CEFA,stroke-width:2px,rx:15,ry:15
    end

    Agent <--MCP Protocol--> StoryService
    Agent <--MCP Protocol--> StoryscanService
    StoryscanService --> StoryscanToolset
    StoryService --> IPFSTools
    StoryService --> LicenseTools
    StoryService --> IPTools
    StoryService --> TokenTools

    StoryscanToolset <--API Calls--> StoryScan
    IPFSTools <--API Calls--> IPFS
    LicenseTools <--RPC Calls--> Blockchain
    IPTools <--RPC Calls--> Blockchain
    TokenTools <--RPC Calls--> Blockchain

MCP 服务

StoryScan MCP 服务

提供用于查询区块链数据的工具,包括地址余额、交易和区块链统计数据。

工具:

  • get_transactions:获取某个地址的近期交易
  • get_stats:获取当前区块链统计数据
  • get_address_overview:全面了解某个地址,包括余额、代币信息和区块链活动
  • get_token_holdings:获取某个地址持有的所有 ERC-20 代币,包括详细的代币信息和余额
  • get_nft_holdings:获取某个地址持有的所有 NFT,包括系列信息和单个代币的元数据
  • interpret_transaction:获取易于理解的区块链交易说明
Story SDK MCP 服务

提供用于与 Story Protocol 的 Python SDK 交互的工具。

工具:

IPFS 和元数据工具(需要 PINATA_JWT):

  • upload_image_to_ipfs:使用 Pinata API 将图像上传到 IPFS,并返回 URI
  • create_ip_metadata:创建 NFT 和 IP 元数据,并将其上传到 IPFS

许可管理工具:

  • get_license_terms:检索指定 ID 的许可条款
  • get_license_minting_fee:获取指定许可条款 ID 的铸造费用
  • get_license_revenue_share:获取指定许可条款 ID 的商业收入分成比例
  • mint_license_tokens:为指定 IP 和许可条款铸造许可代币(自动批准 WIP 代币)
  • predict_minting_license_fee:预先计算指定 IP、许可条款和数量对应的许可铸造费用

IP 资产管理工具:

  • register:将 NFT 注册为 IP,并创建相应的 IP 记录
  • attach_license_terms:为 IP 资产附加许可条款
  • mint_and_register_ip_with_terms:铸造并注册带有许可条款的 IP

NFT 系列工具:

  • create_spg_nft_collection:创建新的 SPG NFT 系列,用于铸造和注册 IP 资产
  • get_spg_nft_minting_token:获取 SPG NFT 合约要求的铸造费用

收入和版税工具:

  • pay_royalty_on_behalf:代表付款方 IP 资产向接收方 IP 资产支付版税(自动批准代币)
  • claim_all_revenue:领取祖先 IP 的所有子级 IP 收入,可选择自动转账

争议工具:

  • raise_dispute:对某个 IP 资产提出争议(自动批准 WIP 保证金代币)

代币管理工具:

  • deposit_wip:将 IP 包装为 WIP 并存入钱包
  • transfer_wip:向接收方转账 WIP 代币
  • get_erc20_token_balance:获取某个账户持有的任意 ERC20 代币余额
  • mint_test_erc20_tokens:如果合约具有公开的铸造或水龙头功能,则铸造测试用 ERC20 代币

设置

先决条件
  • Python 3.12+
  • UV 包管理器
安装
  1. 安装 UV 包管理器并安装环境:
curl -LsSf https://astral.sh/uv/install.sh | sh
  1. 克隆此仓库:
git clone https://github.com/piplabs/story-mcp-hub.git
cd story-mcp-hub
  1. 使用 UV 安装依赖项:
uv sync
  1. 为每个服务设置环境变量:

StoryScan MCP:

cd storyscan-mcp
cp .env.example .env
# Edit .env with your StoryScan API endpoint

Story SDK MCP:

cd story-sdk-mcp
cp .env.example .env
# Edit .env with your wallet private key, RPC provider URL, etc.

运行服务

StoryScan MCP 服务 Inspector
cd storyscan-mcp
uv run mcp dev server.py
Story SDK MCP 服务
cd story-sdk-mcp
uv run mcp dev server.py

与 MCP 客户端配合使用

按照以下说明,将 MCP 服务连接到各种兼容 MCP 的客户端。

Cursor

Cursor 实现了一个 MCP 客户端,支持通过 stdio 和 sse 传输方式连接任意数量的 MCP 服务。

在 Cursor 中添加 MCP 服务
  1. 前往 Cursor Settings > Features > MCP
  2. 点击 + Add New MCP Server 按钮
  3. 填写表单:
    • 在 Type 下选择传输方式
    • 在 Name 字段中输入服务的昵称
    • 根据传输方式,输入要运行的命令或服务的 URL
    • 我们将使用 uv 命令运行服务,因此请务必添加 --directory 标志,并指定服务的路径(示例:uv --directory ~/path/to/story-mcp-hub/storyscan-mcp run server.py)

2025-03-10 下午 2:50:48 截图

项目专用 MCP 配置

你可以使用 .cursor/mcp.json 配置项目专用的 MCP 服务。该文件采用以下格式:

{
  "mcpServers": {
    "storyscan-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "~/path/to/story-mcp-hub/storyscan-mcp",
        "run",
        "server.py"
      ]
    },
    "story-sdk-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "~/path/to/story-mcp-hub/story-sdk-mcp",
        "run",
        "server.py"
      ]
    }
  }
}
在 Cursor 中使用 MCP 工具

如果 Composer Agent 判断 MCP 设置页面 Available Tools 下列出的 MCP 工具与当前任务相关,就会自动使用这些工具。若要主动调用工具,只需告诉 Agent 使用该工具,并通过名称或描述指明工具。

当 Agent 想要使用 MCP 工具时,会显示一条消息,请求你批准。

Claude Desktop

你可以通过编辑配置文件,将 Claude Desktop 配置为使用 MCP 服务。

在 Claude Desktop 中添加 MCP 服务
  1. 打开 Claude Desktop 配置文件:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
  1. 添加 MCP 服务配置:
{
  "mcpServers": {
    "storyscan-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "~/path/to/story-mcp-hub/storyscan-mcp",
        "run",
        "server.py"
      ]
    },
    "story-sdk-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "~/path/to/story-mcp-hub/story-sdk-mcp",
        "run",
        "server.py"
      ]
    }
  }
}
  1. 保存文件并重启 Claude Desktop,使更改生效。

2025-03-10 下午 2:57:24 截图

示例查询:use storyscan to check balance of 0x95A13F457C76d10A40D7e8497eD4F40c53F4d04b

开发

要向 hub 添加新的 MCP 服务:

  1. 为服务创建一个新目录
  2. 在服务中实现 MCP 协议
  3. 将所需依赖项添加到根目录的 pyproject.toml
  4. 更新此 README,添加有关服务的信息

测试

运行测试

项目包含一个测试运行脚本(run_tests.py),用于处理环境设置和测试执行。运行测试的步骤如下:

  1. 安装测试依赖项:
uv sync --extra test
  1. 运行所有测试:
uv run python run_tests.py
  1. 运行指定类别的测试:
# Run unit tests only
uv run python run_tests.py -t tests/unit/

# Run integration tests only
uv run python run_tests.py -t tests/integration/

# Run with verbose output
uv run python run_tests.py -v
  1. 运行单个测试文件:
uv run python run_tests.py -t tests/unit/story_sdk_mcp/test_story_service.py
  1. 查看可用选项的帮助信息:
uv run python run_tests.py --help
测试环境设置

测试使用包含模拟凭据的 .env.test 文件。测试运行器会自动加载此文件。

设置测试环境:

  1. 复制示例文件,创建自己的 .env.test:
cp .env.test.example .env.test
  1. 编辑 .env.test 文件,填入你的测试凭据:
# For example, update the private key for blockchain interactions
nano .env.test  # or use your preferred text editor

有关测试的详细信息,请参阅测试指南。

故障排除

如果遇到问题:

  1. 确认每个服务的环境变量均已正确设置
  2. 检查与外部 API(StoryScan、IPFS 等)的网络连接
  3. 确认使用的是正确的 Python 版本(3.12+)
  4. 检查是否已使用 uv sync 安装所有依赖项

许可证

MIT 许可证

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。