LayerZero OFT MCP服务器
LayerZero OFT MCP是一个Types/Node.js模型上下文协议(MCP)服务器,用于创建、部署和桥接 全链可替换代币(OFT) 跨多个区块链。交互主要通过以下方式进行管理 ethers.js,利用LayerZero合同和协议进行跨链通信。
该MCP通过提供一个结构化的、上下文感知的层来启动、管理和桥接OFT,抽象了全链令牌创建和跨链交互的复杂性。它旨在与LLM代理、机器人或需要安全可靠地访问去中心化跨链功能的应用程序轻松集成。
确定性跨链合约寻址\ MCP使用Solidity的CREATE2操作码在每个链上的同一地址部署OFT合约。 地址来源于字节码和一个固定的salt,其中包括当前的 令牌名称和符号。请确保在部署时使用唯一标识符,因为您不能使用同一工厂创建两次相同的令牌(相同的名称和符号)(如果您想避免这种情况,也可以使用其他类型的盐)。
这是一个工作起点。您可以携带自己的OFT合约,并使用自定义功能或令牌逻辑对其进行扩展。该系统具有开放性和可扩展性。
功能和工具
此MCP服务器公开了以下交互工具:
1. deploy-and-configure-oft-multichain
- 描述:将全链可替换令牌(OFT)合约部署到一个或多个指定的LayerZero支持的链上。成功部署后,它将每个新的OFT合约配置为与集合中所有其他新部署的OFT对等。它还为每份合同设定了标准强制选项(例如,天然气限制),以实现向同行的跨链转移。
- 参数:
- tokenName (string):令牌的名称(例如,“MyToken”)。 - tokenSymbol (string):令牌的符号(例如“MYT”)。 - initialTotalSupply (string):人类可读格式的令牌总供应量(例如,“1000000”)。这将使用 decimals 价值。 - decimals (number,可选,默认值:18):令牌的小数位数。 - targetChains (字符串数组):链名称列表(来自配置的 NETWORKS 在……里面 utils.ts例如。, ["Arbitrum sepolia", "baseSepolia"])要在上部署和配置OFT。必须至少选择一个。为了实现对等连接,必须至少指定两个链,并成功部署。 - owner (string,可选):作为已部署合约所有者的以太坊地址。如果未提供,则默认为 OWNER_ADDRESS 设置在 .env 文件。
- 输出:详细说明每个目标链上部署的成功或失败、它们之间的对等状态以及设置强制选项的状态。
2. bridge-oft
- 描述:使用LayerZero将OFT令牌从一个链连接到另一个链。
- 参数:
- tokenAddress (string):源链上OFT合约的地址。 - amount (string):要桥接的令牌数量(例如,“100”)。这是假设18位小数进行解析的;确保您的令牌使用此工具,或在必要时修改该工具。 - fromChain (string):源链名称(例如,“Arbitrum sepolia”)。 - toChain (string):目标链名称(例如“baseSepolia”)。 - receiverAddress (string):在目标链上接收令牌的地址。 - extraOptions (字符串,可选,默认值:“0x”):LayerZero消息执行的额外选项。
- 输出:桥接事务的详细信息,包括事务哈希。
重要提示:配置ABI和字节码
在运行服务器之前,您 必须 用合约工件的绝对路径替换这些路径
//---索引ts---
// Replace these paths with the actual ABI and Bytecode JSON file of your OFT contract (e.g., from MyOFT.sol)
const oftPath = resolve(
"D:\\Dev\\layerzero-mcp\\artifacts\\MyOFT\\MyOFT.json"
);
// Same here for the factory contract
// This should point to the CREATE2Factory ABI and Bytecode JSON file
const factoryPath = resolve(
"D:\\Dev\\layerzero-mcp\\artifacts\\factory\\CREATE2Factory.json"
);
// --- --- --- 如果不这样做,将导致在尝试使用时出错 deploy-and-configure-oft-multichain 工具。这 bridge-oft 工具还需要 OFT_ABI 正确设置以与现有合同交互。
设置
先决条件
- (建议使用v16或更高版本)
- 或 纱线
- 访问可以通过模型上下文协议进行通信的LLM或应用程序(例如,Claude for Desktop)。
安装
- 克隆存储库:
git clone https://github.com/your-username/layerzero-oft-mcp.git
cd layerzero-oft-mcp- 安装依赖项:
npm install
# or
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"
# Add other RPC URL env variables if you configure more networks in utils.ts安全说明: 永远不要承诺你的 .env 包含私钥的文件到公共存储库。
- 更新ABI和字节码:
如上文“重要”部分所述,打开 layerzero-mcp.ts 并替换 OFT_ABI 和 OFT_BYTECODE 带有实际合同详细信息的占位符。
- 构建项目(如果使用TypeScript编译):
npm run build
# or
yarn run build(此命令假定您有 build 脚本在你的 package.json 它将TypeScript编译为JavaScript。, tsc)
为桌面版的Claude配置MCP(示例)
将MCP配置添加到Claude for Desktop配置文件中(通常位于 C:\Users\{User}\AppData\Roaming\Claude\claude_desktop_config.json 在Windows上):
{
"layerzero-oft-mcp": {
"command": "node",
"args": [
"
/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"
}
}
}- 替换 `
` 使用项目目录的实际绝对路径。
- 确保
env这里的变量与您的服务器所需的变量相匹配,或者它们是从您的服务器中正确提取的.env如果你的Node.js安装程序加载了这些文件(dotenv.config()脚本中的调用应该处理这个问题)。对于Claude Desktop,明确地将其设置为claude_desktop_config.json是必需的。
有关使用Claude for Desktop进行测试的更多详细信息,请参阅MCP官方指南。
运行应用程序和示例用法
一旦配置(包括ABI/Bytecode和环境变量),MCP服务器将在需要时由主机应用程序(例如,用于桌面的Claude)启动。
如果使用LLM,则可以使用自然语言提示与它进行交互。例如:
要部署和配置新的OFT: “部署一个名为‘OmniCoin’(OMC)的新OFT,在Arbitrum sepolia和Base sepolia测试网络上总共供应50万个代币。”
这将使用 deploy-and-configure-oft-multichain 工具。
要桥接现有的OFT令牌: “从Arbitrum sepolia到Base sepolia的桥接50 MyOFT,地址为0x123…abc。令牌部署在Arbitrum sepolia上的0xabc…123。”
这将使用 bridge-oft 工具。
注: 确保您在相应的链上有足够的gas代币(例如,testnet ETH或MATIC)与您的账户关联 PRIVATE_KEY 以支付部署和桥接交易费用。
