资产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__ 哪里 ` 是 ALGORAND_MAINNET 或 VOI_MAINNET,以及 ` 是以下之一:
ALGOD_URLALGOD_TOKENINDEXER_URLINDEXER_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"]
}
}
}机器可读能力
现场演示: 从回购根开始, 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因为ulujssafe_arc72_setApprovalForAll引用未定义的变量(上游错误)。
许可证
麻省理工学院(见 许可证).
