Story Protocol MCP server

Integrates with Story Protocol's Python SDK to enable blockchain-based intellectual property management, including minting, registering, and licensing IP assets.
Back to servers
Setup instructions
Provider
Story Protocol
Release date
Feb 25, 2025
Language
Python
Stats
14 stars

The Story Protocol MCP Hub is a central platform for Model Context Protocol (MCP) servers that allow AI agents to interact with Story Protocol's blockchain ecosystem. These servers provide tools for blockchain data queries and SDK interactions, enabling seamless integration with the Story Protocol environment.

Installation

Prerequisites

  • Python 3.12 or higher
  • UV package manager

Setup Steps

  1. Install the UV package manager:
curl -LsSf https://astral.sh/uv/install.sh | sh
  1. Clone the repository:
git clone https://github.com/piplabs/story-mcp-hub.git
cd story-mcp-hub
  1. Install dependencies using UV:
uv sync
  1. Configure environment variables for each server:

For StoryScan MCP:

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

For Story SDK MCP:

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

Using the MCP Servers

Starting the Servers

To run the StoryScan MCP Server:

cd storyscan-mcp
uv run mcp dev server.py

To run the Story SDK MCP Server:

cd story-sdk-mcp
uv run mcp dev server.py

Available MCP Services

StoryScan MCP Server

This server provides blockchain data query tools:

  • get_transactions: Retrieve recent transactions for an address
  • get_stats: Get current blockchain statistics
  • get_address_overview: Get comprehensive address information
  • get_token_holdings: View all ERC-20 token holdings for an address
  • get_nft_holdings: View all NFT holdings for an address
  • interpret_transaction: Get human-readable blockchain transaction details

Story SDK MCP Server

This server offers tools for interacting with Story Protocol's SDK:

IPFS & Metadata Tools
  • upload_image_to_ipfs: Upload images to IPFS via Pinata
  • create_ip_metadata: Create and upload NFT and IP metadata to IPFS
License Management Tools
  • get_license_terms: Retrieve license terms by ID
  • get_license_minting_fee: Get the minting fee for a license
  • get_license_revenue_share: Get commercial revenue share percentage
  • mint_license_tokens: Mint license tokens for an IP
  • predict_minting_license_fee: Calculate license minting fees
IP Asset Management Tools
  • register: Register an NFT as IP
  • attach_license_terms: Attach license terms to an IP asset
  • mint_and_register_ip_with_terms: Mint and register an IP with terms
NFT Collection Tools
  • create_spg_nft_collection: Create a new SPG NFT collection
  • get_spg_nft_minting_token: Get the required minting fee
Revenue & Royalty Tools
  • pay_royalty_on_behalf: Pay royalties between IP assets
  • claim_all_revenue: Claim revenue from child IPs
Dispute Tools
  • raise_dispute: Raise a dispute against an IP asset
Token Management Tools
  • deposit_wip: Wrap IP to WIP and deposit to wallet
  • transfer_wip: Transfer WIP tokens
  • get_erc20_token_balance: Check ERC20 token balances
  • mint_test_erc20_tokens: Mint test tokens for development

Integrating with MCP Clients

Cursor Integration

Cursor offers built-in MCP client functionality:

  1. Navigate to Cursor Settings > Features > MCP
  2. Click + Add New MCP Server
  3. Configure the server:
    • Select transport type
    • Enter a server nickname
    • Enter the command or URL for the server
    • For command-line transport, use: uv --directory ~/path/to/story-mcp-hub/storyscan-mcp run server.py

Project-Specific Configuration

Create a .cursor/mcp.json file with this structure:

{
  "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"
      ]
    }
  }
}

Claude Desktop Integration

  1. Edit the Claude Desktop configuration file:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
  1. Add the MCP server configuration:
{
  "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. Restart Claude Desktop to apply the changes.

Example query: use storyscan to check balance of 0x95A13F457C76d10A40D7e8497eD4F40c53F4d04b

Troubleshooting

If you encounter issues:

  • Verify environment variables are correctly set for each server
  • Check network connectivity to external APIs (StoryScan, IPFS)
  • Confirm you're using Python 3.12+
  • Ensure all dependencies are installed with uv sync

How to install this MCP server

For Claude Code

To add this MCP server to Claude Code, run this command in your terminal:

claude mcp add-json "storyscan-mcp" '{"command":"uv","args":["--directory","~/path/to/story-mcp-hub/storyscan-mcp","run","server.py"]}'

See the official Claude Code MCP documentation for more details.

For Cursor

There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json file so that it is available in all of your projects.

If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json file.

Adding an MCP server to Cursor globally

To add a global MCP server go to Cursor Settings > Tools & Integrations and click "New MCP Server".

When you click that button the ~/.cursor/mcp.json file will be opened and you can add your server like this:

{
    "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"
            ]
        }
    }
}

Adding an MCP server to a project

To add an MCP server to a project you can create a new .cursor/mcp.json file or add it to the existing one. This will look exactly the same as the global MCP server example above.

How to use the MCP server

Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.

The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.

You can also explicitly ask the agent to use the tool by mentioning the tool name and describing what the function does.

For Claude Desktop

To add this MCP server to Claude Desktop:

1. Find your configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

2. Add this to your configuration file:

{
    "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"
            ]
        }
    }
}

3. Restart Claude Desktop for the changes to take effect

Want to 10x your AI skills?

Get a free account and learn to code + market your apps using AI (with or without vibes!).

Nah, maybe later