README
🚀 LayerZero OFT MCP 服务器
LayerZero OFT MCP 是一个用 TypeScript/Node.js 编写的模型上下文协议(MCP)服务器,用于在多个区块链上创建、部署和桥接 跨链可替代代币(OFT)。交互主要通过 ethers.js 进行管理,利用 LayerZero 合约和协议实现跨链通信。
该 MCP 通过提供一个结构化、上下文感知的层来抽象跨链代币创建和跨链交互的复杂性,用于发起、管理和桥接 OFT。它旨在方便与需要安全可靠地访问去中心化跨链功能的大语言模型(LLM)代理、机器人或应用程序集成。
确定性跨链合约地址
MCP 使用 Solidity 的 CREATE2 操作码在每个链上的相同地址部署 OFT 合约。
该地址由字节码和一个固定的盐派生而来,目前盐中包含 代币名称和符号。部署时请确保使用唯一的标识符,因为不能使用同一个工厂两次创建相同的代币(相同的名称和符号)。
这是一个可行的起点。你可以引入自己的 OFT 合约,并通过自定义功能或代币逻辑对其进行扩展。该系统在设计上是开放且可扩展的。
✨ 主要特性
此 MCP 服务器提供以下交互工具:
1. deploy-and-configure-oft-multichain
- 描述:将跨链可替代代币(OFT)合约部署到一个或多个指定的支持 LayerZero 的链上。部署成功后,它会将每个新的 OFT 合约配置为与集合中所有其他新部署的 OFT 成为对等合约。它还会在每个合约上设置标准强制选项(例如,设置 gas 限制),以实现向其对等合约的跨链转移。
- 参数:
tokenName(字符串):代币名称(例如,"MyToken")。tokenSymbol(字符串):代币符号(例如,"MYT")。initialTotalSupply(字符串):以人类可读格式表示的代币总供应量(例如,"1000000")。这将使用decimals值进行解析。decimals(数字,可选,默认值:18):代币的小数位数。targetChains(字符串数组):要在其上部署和配置 OFT 的链名称列表(来自utils.ts中配置的NETWORKS,例如,["Arbitrum sepolia", "baseSepolia"])。必须至少选择一个。要实现对等连接,必须指定至少两条链并确保部署成功。owner(字符串,可选):部署合约的以太坊地址。如果未提供,则默认为.env文件中设置的OWNER_ADDRESS。
- 输出:详细说明每个目标链上部署的成功或失败情况、它们之间的对等状态以及设置强制选项的状态。
2. bridge-oft
- 描述:使用 LayerZero 将 OFT 代币从一个链桥接到另一个链。
- 参数:
tokenAddress(字符串):源链上 OFT 合约的地址。amount(字符串):要桥接的代币数量(例如,"100")。假设使用 18 位小数进行解析;如有必要,请确保你的代币使用此设置或修改该工具。fromChain(字符串):源链名称(例如,"Arbitrum sepolia")。toChain(字符串):目标链名称(例如,"baseSepolia")。receiverAddress(字符串):目标链上接收代币的地址。extraOptions(字符串,可选,默认值:"0x"):LayerZero 消息执行的额外选项。
- 输出:桥接交易的详细信息,包括交易哈希。
📚 详细文档
⚠️ 重要提示
在运行服务器之前,你必须将这些路径替换为你的合约工件的绝对路径。
// --- index.ts ---
// 将这些路径替换为你的 OFT 合约的实际 ABI 和字节码 JSON 文件路径(例如,来自 MyOFT.sol)
const oftPath = resolve(
"D:\\Dev\\layerzero-mcp\\artifacts\\MyOFT\\MyOFT.json"
);
// 工厂合约同理
// 这应该指向 CREATE2Factory 的 ABI 和字节码 JSON 文件
const factoryPath = resolve(
"D:\\Dev\\layerzero-mcp\\artifacts\\factory\\CREATE2Factory.json"
);
// --- --- ---
如果不这样做,在尝试使用 deploy-and-configure-oft-multichain 工具时将导致错误。bridge-oft 工具也需要正确设置 OFT_ABI 才能与现有合约进行交互。
📦 安装指南
前提条件
安装步骤
- 克隆仓库:
git clone https://github.com/your-username/layerzero-oft-mcp.git
cd layerzero-oft-mcp
- 安装依赖:
npm install
# 或者
yarn install
- 创建
.env文件: 复制.env.example(如果提供)或在项目根目录中创建一个新的.env文件,并使用你的详细信息填充它:
PRIVATE_KEY="your_hex_encoded_private_key_here"
OWNER_ADDRESS="your_owner_ethereum_address_here"
ARBITRUM_SEPOLIA_RPC_URL="your_Arbitrum sepolia_testnet_rpc_url_here"
BASE_SEPOLIA_RPC_URL="your_base_sepolia_testnet_rpc_url_here"
ARBITRUM_FACTORY_ADDRESS="0x754a2643Ce68e0e34510B1E246254f93946AE3a1"
BASE_FACTORY_ADDRESS="0x754a2643Ce68e0e34510B1E246254f93946AE3a1"
# 如果你在 utils.ts 中配置了更多网络,请添加其他 RPC URL 环境变量
安全注意事项:切勿将包含私钥的 .env 文件提交到公共仓库。
-
更新 ABI 和字节码: 如上面“重要提示”部分所述,打开
layerzero-mcp.ts并将OFT_ABI和OFT_BYTECODE占位符替换为你的实际合约详细信息。 -
构建项目(如果使用 TypeScript 编译):
npm run build
# 或者
yarn run build
(此命令假设你的 package.json 中有一个 build 脚本,用于将 TypeScript 编译为 JavaScript,例如,tsc)
为 Claude for Desktop 配置 MCP(示例)
将 MCP 配置添加到你的 Claude for Desktop 配置文件中(在 Windows 上通常位于 C:\Users\{User}\AppData\Roaming\Claude\claude_desktop_config.json):
{
"layerzero-oft-mcp": {
"command": "node",
"args": [
"<PROJECT_ABSOLUTE_FILEPATH>/build/index.js"
],
"env": {
"PRIVATE_KEY": "your_hex_encoded_private_key_here",
"OWNER_ADDRESS": "your_owner_ethereum_address_here",
"ARBITRUM_SEPOLIA_RPC_URL": "your_Arbitrum_sepolia_testnet_rpc_url_here",
"BASE_SEPOLIA_RPC_URL": "your_base_sepolia_testnet_rpc_url_here",
"ARBITRUM_FACTORY_ADDRESS": "0x754a2643Ce68e0e34510B1E246254f93946AE3a1",
"BASE_FACTORY_ADDRESS": "0x754a2643Ce68e0e34510B1E246254f93946AE3a1"
}
}
}
- 将
<PROJECT_ABSOLUTE_FILEPATH>替换为你的项目目录的实际绝对路径。 - 确保此处的
env变量与你的服务器所需的变量相匹配,或者如果你的 Node.js 设置加载了这些变量(脚本中的dotenv.config()调用应该处理这个问题),则确保它们能正确从.env文件中获取。对于 Claude Desktop,需要在claude_desktop_config.json中显式设置这些变量。
遵循官方 MCP 指南,获取有关使用 Claude for Desktop 进行测试的更多详细信息。
运行应用程序及示例用法
配置完成(包括 ABI/字节码和环境变量)后,MCP 服务器将在需要时由主机应用程序(例如,Claude for Desktop)启动。
如果你使用大语言模型,可以使用自然语言提示与它进行交互。例如:
部署并配置新的 OFT:
"在 Arbitrum sepolia 和 Base Sepolia 测试网上部署一个名为 'OmniCoin'(OMC)、总供应量为 500,000 个代币的新 OFT。"
这将使用 deploy-and-configure-oft-multichain 工具。
桥接现有 OFT 代币:
"将 50 个 MyOFT 从 Arbitrum sepolia 桥接到 Base Sepolia 的地址 0x123...abc。该代币部署在 Arbitrum sepolia 的地址 0xabc...123 上。"
这将使用 bridge-oft 工具。
⚠️ 重要提示
请确保与你的 PRIVATE_KEY 关联的账户在相应链上有足够的 gas 代币(例如,测试网 ETH 或 MATIC),以支付部署和桥接交易费用。
🖼️ 示例截图
部署 OFT

桥接 OFT

Scan to join WeChat group