资产协议服务

AssetMCP 是一个为 UluOS 提供的标准化资产读取和未签名交易负载生成服务,支持 Algorand 和 Voi 主网上的 ASA、ARC-200 和 ARC-72 资产。

  • by NautilusOSS
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 NautilusOSS/AssetMCP

使用说明

资产MCP

标准 模型上下文协议 服务器 UluOS:标准化 美国麻醉医师协会, ARC-200,以及 ARC-72 阅读+ 无符号 交易有效载荷 Algorand主网 和 我的主网.

签名和广播故意超出范围——使用 UluWalletMCP 和 Ulu广播MCP (或您的钱包)从该服务获取base64 txn组后。

服务摘要(适用于UluOS文档)

字段 值
名字 asset-mcp
运输 站立
版本 0.1.0
网络 algorand-mainnet, voi-mainnet
堆栈 @modelcontextprotocol/sdk, algosdk (ASA), ulujs → arccjs (ARC-200/ARC-72模拟)
输出 JSON文本内容;BigInts作为字符串;二进制为base64;txn建设者返回订购 transactions: string[] (base64无符号字节)

设置

npm install
npm start
# or: node /absolute/path/to/AssetMCP/index.js

节点: >=20.9(要求 ulujs).

配置

默认使用 节点免费层 Algod+索引器端点(Algorand主网: *.4160.nodely.dev;这是主网: *.voi.nodely.dev).不需要API密钥。用环境变量覆盖:

图案: ASSET_MCP_<NETWORK>_<SUFFIX> 哪里 <NETWORK> 是 ALGORAND_MAINNET 或 VOI_MAINNET,以及 <SUFFIX> 是以下之一:

  • ALGOD_URL
  • ALGOD_TOKEN
  • INDEXER_URL
  • INDEXER_TOKEN

例子:

export ASSET_MCP_ALGORAND_MAINNET_ALGOD_URL="https://..."
export ASSET_MCP_ALGORAND_MAINNET_ALGOD_TOKEN="..."

响应形状

成功的工具调用返回JSON:

{
  "ok": true,
  "network": "algorand-mainnet",
  "standard": "asa",
  "method": "asa_get_asset",
  "assetId": 31566704,
  "data": { }
}

交易构建器添加 txCount 并将base64未签名交易置于 data.transactions (数组顺序是签名顺序)。

错误:

{
  "ok": false,
  "error": {
    "code": "malformed_address",
    "message": "...",
    "details": null
  }
}

工具(按命名空间)

asa_* (算法/AVM)

工具 目的
asa_get_asset ASA参数(按ID)
asa_get_holding ASA的一个账户余额/冻结标志
asa_search_holdings 索引器:分页馆藏;可选的 assetId 过滤器
asa_transfer_txn 未签名 axfer
asa_optin_txn 未签名的选择加入(0金额自转账)
asa_closeout_txn 未签名的转账+ closeRemainderTo (供应充足 amount)

arc200_* (ulujs ARC-200)

工具 目的
arc200_get_metadata name, symbol, decimals, totalSupply
arc200_balance_of 平衡(基本单位,JSON格式的字符串)
arc200_allowance 津贴
arc200_has_balance hasBalance (ulujs双ABI助手)
arc200_has_allowance hasAllowance (ulujs双ABI助手)
arc200_get_events getEvents → 转账+审批流
arc200_transfer_txn 模拟转账→ 未签名txn组
arc200_transfer_from_txn 模拟 transferFrom
arc200_approve_txn 模拟 approve

arc72_* (ulujs ARC-72)

工具 目的
arc72_get_metadata totalSupply;与 tokenId: owner, tokenURI, approved;可选 supportsInterface 通过 interfaceSelectorHex
arc72_owner_of 所有者
arc72_balance_of NFT计数
arc72_get_approved 令牌的批准地址
arc72_is_approved_for_all 操作员标志
arc72_token_uri 令牌URI
arc72_total_supply 总供应量
arc72_get_events 转移/批准/批准全部
arc72_transfer_txn transferFrom(from, to, tokenId) (签字人必须经过授权)
arc72_approve_txn 批准以下支出 tokenId
arc72_set_approval_for_all_txn setApprovalForAll 通过 arccjs (ulujs包装器上游损坏)

光标MCP配置

此回购包括 .cursor/mcp.json 所以 资产mcp 当您将repo作为工作区文件夹打开时,该选项可用。重新加载窗口或在更改后重新启动Cursor。

要手动添加或合并到另一个项目中,请执行以下操作:

{
  "mcpServers": {
    "asset-mcp": {
      "command": "node",
      "args": ["${workspaceFolder}/index.js"]
    }
  }
}

机器可读能力

看 examples/capabilities.json.

现场演示: 从回购根开始, npm run demo (或 node examples/demo.mjs)通过stdio生成MCP服务器并调用 asa_get_asset (Algorand USDC), arc200_get_metadata (Voi wVOI),以及 arc72_total_supply (样本ARC-72采集)。

实现说明

  • stdout卫生: ulujs / arccjs 呼叫 console.log 在模拟过程中。除非 ASSET_MCP_DEBUG 设置, console.log 被重定向到 标准错误 因此stdout上的MCP JSON-RPC保持有效。
  • ARC txn字节: 通过模拟构建 simulate: true 并从返回未签名的组 arccjs (txns 阵列)。可能会出现额外的组事务(例如箱子/资源共享)——对整个有序组进行签名。
  • ARC-200/ARC-72显示: 使用ulujs Contract 与公共模拟发送者(oneAddress 来自ulujs)用于只读ABI调用。
  • 事件筛选器: address 以以下方式转发给索引器 sender (arccjs API)。
  • ARC-72 setApprovalForAll: 已实施 contractInstance.arc72_setApprovalForAll 因为 ulujs safe_arc72_setApprovalForAll 引用未定义的变量(上游错误)。

许可证

麻省理工学院(见 许可证).