此仓库作为Story Protocol的模型上下文协议(MCP)服务器的中央枢纽。它提供了一个统一的环境来运行和管理各种MCP服务,这些服务使AI代理能够与Story Protocol生态系统进行交互。
story-mcp-hub/
├── storyscan-mcp/ # 通过StoryScan查询区块链数据的MCP服务器
├── story-sdk-mcp/ # 用于Story Protocol SDK交互的MCP服务器
├── utils/ # MCP服务器共享工具
├── .venv/ # Python虚拟环境
├── pyproject.toml # 项目依赖和配置
├── .python-version # Python版本规范
└── README.md # 本文件
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
提供了查询区块链数据的工具,包括地址余额、交易和区块链统计信息。
工具:
get_transactions: 获取地址的最近交易get_stats: 获取当前区块链统计信息get_address_overview: 获取地址的综合概述,包括余额、代币信息和区块链活动get_token_holdings: 获取地址持有的所有ERC-20代币,包括详细的代币信息和余额get_nft_holdings: 获取地址持有的所有NFT,包括集合信息和单个代币元数据interpret_transaction: 获取区块链交易的人类可读解释提供了与Story Protocol的Python SDK交互的工具。
工具:
IPFS及元数据工具(需要PINATA_JWT):
upload_image_to_ipfs: 使用Pinata API上传图像到IPFS并返回URIcreate_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: 铸造并注册带有条款的IPNFT集合工具:
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代币curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/piplabs/story-mcp-hub.git
cd story-mcp-hub
uv sync
对于StoryScan MCP:
cd storyscan-mcp
cp .env.example .env
# 编辑.env以包含您的StoryScan API端点
对于Story SDK MCP:
cd story-sdk-mcp
cp .env.example .env
# 编辑.env以包含您的钱包私钥、RPC提供程序URL等
cd storyscan-mcp
uv run mcp dev server.py
cd story-sdk-mcp
uv run mcp dev server.py
按照以下说明将MCP服务器连接到各种兼容MCP的客户端。
Cursor实现了一个支持任意数量MCP服务器的MCP客户端,使用stdio和sse传输方式。
Cursor设置 > 功能 > MCP+ 添加新MCP服务器按钮类型下选择传输方式名称字段中输入服务器的昵称uv命令运行服务器,因此确保包含--directory标志以及服务器路径(示例:uv --directory ~/path/to/story-mcp-hub/storyscan-mcp run server.py)您可以使用.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"
]
}
}
}
Composer Agent会自动使用MCP设置页面上列出的任何MCP工具,如果认为它们相关的话。要故意提示工具使用,只需告诉代理使用该工具,可以通过名称或描述引用它。
当Agent想要使用MCP工具时,它会显示一条消息请求您的批准。
Claude Desktop可以通过编辑其配置文件来配置使用MCP服务器。
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
{
"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"
]
}
}
}