模型上下文协议服务器

MIDL MCP Server 是一个生产就绪的模型上下文协议服务器,使大型语言模型能够安全、可检查且以AI原生方式与比特币交互,并将智能合约部署到MIDL L2(比特币锚定的EVM)上。

  • by Svector-anu
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 Svector-anu/midl-mcp

使用说明

MIDL MCP服务器

一个生产就绪的模型上下文协议(MCP)服务器,用于 MIDL.js 生态系统。使LLM能够与比特币交互,并以安全、可检查和AI原生的方式将智能合约部署到MIDL L2(比特币锚定EVM)。

快速开始

  1. 安装依赖项:
git clone https://github.com/Svector-anu/midl-mcp.git
cd midl-mcp
pnpm install
  1. 配置Claude桌面 用你的助记符(见 配置 在......下面

  2. 获取测试BTC 从 MIDL水龙头 (右)

  3. 开始部署: 只需让克劳德部署一份合同!

完整部署指南: 部署_执行时间.md 测试指南: 功能_估计_ GIDE.md 实例: 示例_部署.md


特性

智能合约操作

  • deploy-contract-source -编译和部署Solidity(自动解析OpenZeppelin导入)
  • call-contract -调用已部署合约的功能(处理BTC锚定)
  • verify-contract -在Blockscout浏览器上验证源代码

比特币钱包操作

  • get-wallet-balance -检查BTC余额
  • prepare-btc-transfer -为传输创建未签名的PSBT
  • broadcast-transaction -广播签名交易
  • estimate-btc-transfer-fee -计算交易成本

区块链信息

  • get-address-transactions -查看交易历史记录
  • get-blockchain-info -网络状态和信息
  • decode-psbt -检查PSBT详细信息
  • validate-bitcoin-address -验证地址格式

资源(只读)

  • midl://balance/{address} -当前BTC余额
  • midl://utxos/{address} -未用交易产出
  • midl://fee-rates -当前网络费用
  • midl://block-height -当前块高度
  • midl://network -网络配置
  • midl://account -已连接帐户信息

配置

Claude桌面设置

将此添加到您的 claude_desktop_config.json:

MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json 窗户: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "midl-bitcoin": {
      "command": "npx",
      "args": ["-y", "tsx", "/path/to/midl-mcp/src/index.ts"],
      "env": {
        "MIDL_NETWORK": "regtest",
        "MIDL_MNEMONIC": "your twelve word mnemonic phrase here"
      }
    }
  }
}

配置变量

变量 描述 示例 必填
MIDL_NETWORK 比特币网络 regtest, testnet, mainnet 是的
MIDL_MNEMONIC 你的钱包助记符(12或24个单词) word1 word2 word3 ... 是的
MIDL_RPC_URL 可选自定义RPC端点 https://mempool.space/testnet 没有

特征:

  • 自动交易签名
  • 合同部署
  • 合同互动
  • BTC转账
  • 完全读/写访问

**安全提示:**您的助记符永远不会离开您的机器。它仅由本地MCP服务器用于签署交易。MCP协议确保Claude不能直接访问环境变量。

重要设置步骤

  1. 替换 /path/to/midl-mcp 使用您的实际安装路径
  2. 使用你真正的助记符 来自Xverse或其他比特币钱包
  3. 重新启动克劳德桌面 完全(Mac上的Cmd+Q,然后重新打开)
  4. 获得测试资金 从 https://faucet.regtest.midl.xyz (右)

用法示例

部署合约

问克劳德:

Deploy this contract:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Counter {
    uint256 public count;
    function increment() public { count++; }
}

与合同互动

问克劳德:

Call increment() on contract 0xYourContractAddress

查询余额

问克劳德:

What's my BTC balance?

估算费用

问克劳德:

How much would it cost to send 0.001 BTC to bcrt1q...?

看 功能_估计_ GIDE.md 12个完整的测试场景。


建筑

MIDL L2部署流程

MIDL是一个以比特币为基础的EVM。合同部署需要:

  1. BTC交易 -将操作锚定到比特币
  2. EVM交易 -包含合约字节码
  3. BIP322签名 -将EVM tx链接到BTC txId
  4. 合并提交 -两者均通过发送 eth_sendBTCTransactions

MCP服务器自动处理此完整流程!

运作原理

┌─────────────┐
│   Claude    │  "Deploy this contract"
└──────┬──────┘
       │
       v
┌─────────────────────┐
│   MCP Server        │
│  1. Compile Solidity │ (resolves @openzeppelin imports)
│  2. Create BTC tx    │ (anchors to Bitcoin)
│  3. Sign EVM tx      │ (with BIP322)
│  4. Submit both      │ (eth_sendBTCTransactions)
│  5. Verify contract  │ (on Blockscout)
└──────┬──────────────┘
       │
       v
┌─────────────────────┐
│  MIDL L2 Network    │
│  Bitcoin + EVM      │
└─────────────────────┘

测试

运行测试套件:

pnpm test

使用Claude Desktop进行手动测试:

# Follow the testing guide
cat FEATURE_TESTING_GUIDE.md

网络资源

重新测试(测试)

测试网


安全

设计原则

  • 内存中没有私钥: 服务器从不存储私钥
  • 基于记忆的签名: 用途 @midl/node 用于安全交易签名
  • 循环中的人类: 所有操作都需要通过Claude进行明确的用户确认
  • 先测试网: 默认为testnet/regtest以确保安全
  • 透明操作: 所有交易都是人类可读的

安全架构

服务器使用 预连接钱包配置模型:

  • 外部建立的钱包连接(通过助记符)
  • 服务器在查询的只读执行上下文中运行
  • 写操作需要显式的工具调用
  • MCP协议阻止直接访问环境变量

最佳实践

  1. 首先使用testnet/regtest 在主网之前
  2. 查看所有交易 确认前
  3. 确保你的助记符安全 永远不要分享
  4. 使用专用测试钱包 为了发展
  5. 验证合同地址 论区块探险家

文档


故障排除

“未连接帐户”

解决方案: 检查 MIDL_MNEMONIC 在Claude桌面配置中

“资金不足”

解决方案: 从获取测试BTC https://faucet.regtest.midl.xyz

合同未出现在资源管理器上

解决方案: 等待1-2分钟以确认比特币区块

签名上“找不到方法”

解决方案: 确保您正在使用 MIDL_MNEMONIC 在您的配置中

克劳德没有看到工具

解决方案: 完全重新启动克劳德桌面(Mac上的Cmd+Q,然后重新打开)


贡献

欢迎投稿!拜托:

  1. 分叉存储库
  2. 创建要素分支
  3. 为新功能添加测试
  4. 提交拉取请求

许可证

麻省理工学院


链接


**专为midl.xyz打造**