mcpField
P
Parano1d node

Parano1d node

本地服务
github.com金融数据05 天前更新

关于 Parano1d node

parano1d-mcp 是连接客户端与本地 Parano1d 节点的 stdio MCP 服务,以只读模式为默认设置,并提供受权限控制和额度限制的写入模式;交易由节点钱包签名,服务不接触密钥。

主要功能

  1. 01提供节点 JSON-RPC 方法的类型化工具
  2. 02默认只读,另有钱包和管理模式
  3. 03按调用限制支出并设置激活门槛
  4. 04运行时检测节点方法版本
  5. 05仅连接环回地址上的 RPC

适用场景

  1. 01查看节点状态和能力
  2. 02监控本地 Parano1d 节点
  3. 03规划并执行有额度限制的钱包操作
  4. 04通过管理工具运维节点

MCP 相关

它通过 stdio 将 MCP 客户端连接到同一台机器上的 Parano1d 节点,并将 JSON-RPC API 映射为类型化工具。服务会执行访问模式和支出安全限制。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
cargoparano1d-mcp0.1.5

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

parano1d-mcp

CI License: Apache-2.0 Rust 1.96+ MCP Status: pre-release

parano1d-mcp — an unofficial MCP server for a local Parano1d node

面向 Parano1d 节点的非官方 MCP 服务。通过 stdio 提供 18 个工具,默认只读。由节点的钱包签名;服务本身从不接触私钥。

非官方社区项目,与 Parano1d Core 团队无关。

parano1d-mcp 将 MCP 客户端——编辑器、桌面应用或任何通过 stdio 使用 Model Context Protocol 的 Agent——连接到同一台计算机上的 Parano1d 节点。它将节点的 JSON-RPC API 映射为类型化工具,并在代码中强制实施访问模式、支出上限和激活门槛。

它的存在是因为原始 RPC 访问要么全有、要么全无:任何能访问节点的客户端也能从节点钱包中支出。此服务将支出设为独立、明确且有上限的操作,同时保持读取不受限制。

状态

v0.1.5,预发布版。 只读模式是受支持的部署方式。钱包模式需主动启用并设有上限;管理模式以及合约/原生写入尚未在主网上测试(发送、归集、合约和原生写入已在私有测试网络上测试)。此服务尚未经过独立审计。

安全概览

  • 默认只读。wallet 和 admin 模式需主动启用。
  • 不包含密钥材料和签名代码。由节点的钱包签名。
  • HTTP 仅限环回地址。不支持远程 RPC,不使用 TLS,不开放监听端口。
  • 每笔支出都需要设置单次调用上限。NOID 发送还需要一次性计划和准确确认;归集和原生写入需要一次性计划;合约注资和调用需要明确的费用,并会与节点的预览结果进行核对。
  • 写入操作绝不重试。

它是什么

  • 面向单个 Parano1d 节点的本地 stdio MCP 服务。每个节点对应一个进程。
  • 提供节点 RPC 的类型化视图:节点 v2.1.0 有 79 个方法,v2.0.4 有 68 个方法,运行时检测版本。
  • 防护层:模式门控、单次调用支出上限、报价绑定的发送、原生操作激活门控,以及只读 RPC 直通。
  • 单个 Rust 二进制文件。无运行时、无 TLS 协议栈、无遥测、无文件系统访问。

它不是什么

  • 不是钱包或签名器。不持有密钥,不包含签名代码,也无法创建或导出种子。在钱包模式下,它可在上限范围内请求节点钱包发送。
  • 不是节点、矿工或进程管理器。它不会启动、重启或管理节点。唯一的控制调用是仅限管理员使用的优雅 stop。
  • 不是远程或多用户服务。它不开放端口、不提供身份验证,并拒绝非环回 RPC URL。
  • 不是 HTTP MCP 服务。仅使用 stdio 传输。
  • 不是沙箱。任何能访问 127.0.0.1:9601 的本地进程,无论是否使用此服务,都已拥有节点的所有者权限范围。
  • 不是通用区块链工具。它面向 Parano1d 的 RPC,并跟踪其方法范围。
  • 未经过审计。

要求

  • Parano1d 节点 v2.0.4 或 v2.1.0,RPC 地址为 http://127.0.0.1:9601(默认值)。还没有节点?请参阅 获取 Parano1d 节点。
  • 构建需要 Rust 1.96;预编译二进制文件无需工具链。
  • 服务必须与节点运行在同一台主机上,因为 RPC URL 被限制为环回地址。

获取 Parano1d 节点

parano1d-mcp 是一个桥接工具:每个工具都会从运行在同一台机器上的 Parano1d 节点读取数据,或通过它写入数据。如果没有节点,每个工具(以及 --check)都会返回 *“No Parano1d node answered at http://127.0.0.1:9601. Install and start one: https://parano1d.org (Downloads), then retry.”*从 Parano1d 官方项目获取节点;本仓库提供了指向它的链接,但不会重新分发它。

桌面应用(最简单)。 从 parano1d.org(Downloads)下载适用于你电脑的 GUI 钱包:Windows x86-64、macOS(Apple Silicon 或 Intel)或 Debian/Ubuntu(x86-64 或 ARM64)。该应用会运行自己的完整节点,并在 127.0.0.1:9601 上提供 JSON-RPC 服务,这是本服务的默认地址,因此无需配置;使用 MCP 服务期间,请保持应用打开。请使用同一版本的 SHA256SUMS 校验下载文件。

无头模式(服务器、自动化)。 从官方发行版下载适用于你平台的 Core 归档文件(parano1d-core-vVERSION-<platform>,包含 parano1d、parano1d-cli 和 parano1d-miner),以及 SHA256SUMS: git.parano1d.org/ignotusnemo/parano1d/releases (规范来源),或 GitHub 镜像 github.com/proof-native/parano1d/releases。 提取前请校验摘要,然后:

./parano1d --check-hardware                          # must end with: NODE READY
./parano1d --mode node --rpc-listen 127.0.0.1:9601   # an ordinary, non-mining node

在另一个终端中,运行 ./parano1d-cli status 查看节点,运行 parano1d-mcp --check 查看本服务能检测到什么。127.0.0.1:9601 是节点默认的 RPC 监听地址;请将其限制在环回接口上,切勿暴露 9601 端口。首次启动时,节点会创建 ~/.parano1d/parano1d.toml 和 ~/.parano1d/data/(--data-dir PATH 可指定其他目录)。要将其作为服务运行,请参阅上游的 在 Linux 上运行节点。如果节点在环回接口上的其他地址监听,请设置 PARANOID_RPC_URL(参见配置)。

节点的要求。

  • CPU: x86-64,支持 SSE4.1 和 PCLMULQDQ;或 ARM64,支持 NEON 和 PMULL。--check-hardware 可进行确认;即使宿主机较新,虚拟机也可能隐藏这些指令。
  • 内存: 上游在 4 个 CPU 核心和 8 GiB RAM 上验证了节点,在满负载下峰值为 1.65 GiB。v2.1.0 主网节点也曾在 1 GB RAM 虚拟机上持续跟上链尖端。
  • 磁盘: 没有固定要求:节点会保留紧凑头部、当前 UTXO State 和最近 42 个区块的内容,因此存储需求随 State 增长,而非随链的时间增长。请预留一个暂存快照所需的空间。2026-11-06 测得桌面节点的数据目录约为 45 MB(du -sh ~/.parano1d/data)。请使用 SSD。
  • 同步: 新节点通过证明引导:它会验证当前 State,并校验近期区块,而不是重放完整历史记录。
  • 网络: 持久的出站 TCP 连接;只有公共节点才需要开放入站 TCP 9600。

快速开始

从 crates.io 安装
cargo install parano1d-mcp --locked

此命令使用锁定的依赖项集合从源代码构建服务,并将 parano1d-mcp 安装到 ~/.cargo/bin。MCP 客户端随后可通过名称(或完整路径)运行它。预构建二进制文件见下文。

从仓库构建
git clone https://github.com/noidium/parano1d-mcp
cd parano1d-mcp
cargo build --release --locked

二进制文件位于 target/release/parano1d-mcp(运行 cargo install 后则位于 ~/.cargo/bin/parano1d-mcp)。它会读取环境变量,并通过 stdin/stdout 使用 MCP 通信。--check、--version 和 --help 是诊断入口;本项目没有配置文件。

./target/release/parano1d-mcp --check

--check 会探测节点、打印其功能并退出,成功时返回 0(无法读取节点时返回 1)。它不会启动 MCP 服务。

注册到 MCP 客户端

添加一个运行该二进制文件的 stdio 服务条目。Cursor(.cursor/mcp.json)和 VS Code(.vscode/mcp.json)都接受这种格式;VS Code 使用包含 "type": "stdio" 的 servers 对象,并传递相同字段。

{
  "mcpServers": {
    "parano1d": {
      "command": "/absolute/path/to/parano1d-mcp",
      "env": { "PARANOID_MCP_MODE": "read" }
    }
  }
}

启动新会话,并请求查看节点概览。node_overview 会返回 mode: "read"、链顶,以及节点的合约和原生功能。任何能够启动进程并通过 stdio 使用 MCP 通信的客户端都适用。

预构建二进制文件

每个版本都会附带 macOS(arm64)、Linux(x86_64)和 Windows(x86_64)的压缩包、SHA-256 校验和文件以及构建来源证明。运行下载文件前请先验证:

sha256sum -c SHA256SUMS                       # or: shasum -a 256 -c SHA256SUMS
gh attestation verify parano1d-mcp-v0.1.5-macos-arm64.tar.gz --repo noidium/parano1d-mcp

这些二进制文件使用 cargo auditable 构建,因此 cargo audit bin <binary> 也会审计随该版本发布的确切依赖集。

配置

所有配置均通过环境变量设置。不需要密钥,也没有配置文件。

变量默认值含义
PARANOID_RPC_URLhttp://127.0.0.1:9601节点 RPC。仅接受环回 IP 字面量(127.0.0.1、::1)。启动时会拒绝诸如 localhost 这样的主机名、URL 中的凭据、远程主机和非 HTTP 协议。
PARANOID_MCP_MODEreadread、wallet 或 admin。别名:ro/read-only、write/rw。
PARANOID_MCP_MAX_SEND_MICRONOID未设置任何 NOID 支出都必须设置。每次调用的 金额 + 手续费 硬上限(原生操作的扣款 + 手续费)。1 NOID = 1,000,000 μNOID。
PARANOID_MCP_MAX_FEE_MICRONOID未设置发送、合并、合约和原生写入操作可选的额外手续费上限。
PARANOID_MCP_ALLOW_RAW_INTENT未设置设置为 1 以允许调用 tx_submit,该方法会提交已签名的意图。默认关闭。
PARANOID_MCP_MAX_RESULT_BYTES524288超出此大小的结果会被替换为截断摘要。最小值为 1024。
RUST_LOGwarn日志输出到 stderr。stdout 是 MCP 传输通道,必须保持干净。

更改模式需要重启服务。

模式

模式增加的功能适用场景
read(默认)所有非更改状态的方法、钱包读取和发送规划监控、分析、Agent 问答
walletwalletSend、合并、地址更改、合约注资和调用、原生提交,以及设置 PARANOID_MCP_ALLOW_RAW_INTENT=1 后的原始已签名意图由你运行且配有小额热钱包的节点
adminstop、getBlockTemplate、submitBlock节点运维和外部矿工配置

模式会累积生效,并按 src/manifest.rs 中的配置逐个方法执行。如果当前模式不允许某个工具调用,该工具会返回错误,不会静默地什么也不做。

工具

方法语义遵循节点的 JSON-RPC API。src/manifest.rs 中编译生成的清单是已公开方法、访问类别和激活门控的权威列表。

工具模式功能
node_overview读取一次批量调用:链顶端、节点和 P2P 状态、挖矿、内存池、合约、原生协议、钱包状态、能力、模式、RPC 方法数量
chain_query读取22 项操作:区块数量、链信息、节点状态、区块哈希/区块头/详情/区块、按高度或哈希查询区块头、历史步进终点、交易、槽位、按所有者查询槽位、活跃槽位数量、状态信息和映射、近期交易、纪元锚点、收据验证、槽位提示
mempool_query读取info、size、stats、entry
fee_estimate读取estimateFee 和 estimateFeeDetailed;输入 1-1020 个,输出 1-256 个
address_validate读取验证并规范化 o1... 地址
wallet_read读取status、balance、address、list_addresses、active_address、utxos、utxo_snapshot、history、receipts、query_receipts(v2.1)、mined_blocks、export_receipt
wallet_plan_send读取为活跃地址的 NOID 转账报价;返回有效期 120 秒的 plan_id,并绑定来源、网络、目标地址、金额和手续费
wallet_send钱包从活跃地址发送 NOID。需要匹配的 plan_id、最新报价、精确的确认字符串和支出上限;可选的 from_index 必须与活跃索引相同;报告节点的 network
tx_submit钱包提交已签名的意图。需要设置 PARANOID_MCP_ALLOW_RAW_INTENT=1,且 confirm = "SUBMIT SIGNED INTENT"。支出上限无法检查已签名的意图
wallet_maintenance钱包scan、discover_addresses、next_address、set_active_address(需要 confirm = SET ACTIVE ADDRESS <index>)、plan_consolidation、consolidate;plan_consolidation 是读取操作,在读取模式下可用
contract_read读取protocol、preview_call、status、instances、get_opening、list_states、list_receipts、export_receipt、verify_receipt
contract_write钱包create、fund、call、watch、import_receipt。fund 和 call 需要明确指定非零手续费;使用 contract_read preview_call 或 fee_estimate 获取手续费。call 会先预览完全相同的请求,并对节点将释放的内容设定上限
native_read读取v2.1 原生功能:protocol、catalog、market、holdings、wallet_holdings、pending、preview
native_write钱包提交已预览的操作(需要启用原生功能),或执行 dismiss_pending(需要 v2.1 节点)
peer_report读取节点提供的对等节点数量以及所有聚合 P2P/仲裁组指标。明确说明不存在可查询单个对等节点 IP、端口或延迟的 RPC
mining读取/管理员在读取模式下可使用 info 和 peers;block_template 和 submit_block 需要管理员权限
node_control管理员优雅停止 stop,并绑定到 STOP AT HEIGHT <current height>
rpc_call读取对清单中的任意方法进行只读透传。拒绝所有写入和控制方法

输入架构由 Rust 类型生成,可通过 tools/list 获取。所有接受参数对象的工具都会拒绝未知字段(additionalProperties: false),因此,像用 amount 代替 amount_micronoid 这样的拼写错误会导致报错,而不会被静默忽略。返回文本超过 PARANOID_MCP_MAX_RESULT_BYTES 的结果会被替换为摘要;节点错误消息限制为 2,000 个字符;原始区块十六进制数据需在每次调用时选择启用。

安全模型

默认只读。 PARANOID_MCP_MODE=read 是默认模式,也是推荐的注册模式。rpc_call 无法绕过模式限制:它会拒绝所有归类为钱包或管理员的方法。 不持有密钥材料。 服务不持有任何密钥、令牌或凭据。它绝不会读取 ~/.parano1d、wallet.key、p2p_identity.key、wallet.receipts 或任何节点文件;不包含文件系统代码,也不包含签名代码。交易由节点的钱包签名。

仅限环回地址。 RPC URL 必须使用 HTTP,且地址为 127.0.0.1 或 ::1。启动时会拒绝包含凭据、主机名或远程主机的 URL。节点将环回地址视为本地所有者范围,而此服务没有可用于向远程节点出示的凭据。

发送绑定。 wallet_plan_send 会记录当前源密钥索引和地址,以及节点网络(从 getNodeStatus.testnet 获取的 mainnet 或 testnet)。wallet_send 要求存在该计划,且目标地址、金额和手续费参数完全一致,当前源地址相同、报价仍然有效,并且确认文本必须精确为 SEND <amount_micronoid> MICRONOID TO <address>。如果让节点自行选择手续费,请将 0 作为手续费参数传入;报价中的手续费会显示供审核,但它不是绑定参数。可选的 from_index 必须与当前索引一致。钱包签名操作会在单个 MCP 进程内串行执行;如果另一个进程或 GUI 在计划生成后切换了当前地址,发送会被拒绝,必须重新报价。wallet_maintenance set_active_address 要求确认文本为 SET ACTIVE ADDRESS <index>,因为它会更改签名地址和挖矿奖励接收地址。计划只能使用一次,并会在 120 秒后过期;调用一旦进入计划校验阶段,就会消耗计划,即使源地址、目标地址、金额或手续费不匹配。报价中的手续费会传回节点,因此节点无法在重新报价与写入之间选择更高的手续费。wallet_send 会重新读取网络信息;如果网络发生变化,就会拒绝操作,因此在一条链上报价的计划绝不会提交到另一条链上。如果节点未报告 testnet,则会拒绝操作,而不会猜测网络。

支出上限。 每次支出写入都必须设置 PARANOID_MCP_MAX_SEND_MICRONOID。此上限约束每次调用的总额——金额加手续费(或原生资产扣款加手续费)——因此,即使金额很小、手续费很高,也无法绕过上限。可选的手续费上限是额外的纯手续费约束,对节点选择的报价手续费和显式指定的手续费同样生效。上限按次调用计算,不是累计预算。合约注资和调用必须显式指定非零手续费,因为零手续费会要求节点选择最低手续费,而 MCP 无法验证该数值。合约调用会使用完全相同的请求进行预览,并将支出上限设为预览中的支付金额加手续费,因为终结(terminal)调用没有支付金额字段,但会根据合约条款将全部合约余额释放给接收方。原生交易只对边界值签名,而实际成交由交易所在区块决定,因此支出上限取报价金额与签名金额中的较大值:买入时为 gross_input + fee_limit,卖出时为 fee_limit;手续费上限适用于 fee_limit。其他所有原生操作的上限均为准确扣款额加手续费。每种类型最多保留 64 个尚未兑换的计划;超出时优先丢弃最早的计划。

写入不重试。 读取操作遇到传输错误时会重试一次。写入操作绝不重试,因为重试可能导致重复发送。如果写入响应丢失(超时、连接重置或回复无法读取),节点可能已经接受了该操作:工具会报告结果未知并说明需要检查的内容,而不会简单报告失败,也不会重新发送。

激活门控。 在节点报告原生协议将在下一块激活,或链尖端已达到激活高度之前,会拒绝原生 v2.1 写入。服务通过 getNativeProtocol 和 getContractProtocol 读取此信息;不会将节点版本写死。激活后,native_write 无需重新构建或重启即可解锁。

高度绑定的停止操作。 node_control 仅限管理员使用,并要求确认文本为 STOP AT HEIGHT <current height>,以防过时命令停止节点。服务绝不会启动、重启或监控节点。

信任边界

节点的 RPC 未经过身份验证。任何能够访问 127.0.0.1:9601 的本地进程,无论是否运行此服务,都拥有相同的所有者权限范围。parano1d-mcp 可防止意外支出和由 Agent 驱动的支出;它不是访问控制层,也不是沙箱。

由此会产生两个后果:

  1. 请在单用户机器上运行。不要将节点的 RPC 端口暴露到网络,也不要在不受信任的用户可以连接到本地回环地址的环境中运行此服务。
  2. 将链上数据视为不受信任的输入。代币名称、内存池条目、合约元数据和 RPC 错误字符串都会进入模型的上下文;攻击者可以在其中植入指令。请检查写入调用,不要自动批准钱包或管理工具。

工具定义已编译到二进制文件中,不会在运行时获取,因此遭到入侵的节点无法更改客户端看到的描述。但节点仍可返回恶意数据,因此第二点依然成立。

此工具无法防护的情况
  • 能访问节点 RPC 的恶意或遭到入侵的本地进程。
  • 会自动批准 wallet_send 或 node_control 的 MCP 客户端。
  • 启用钱包模式时设置了高于自身风险承受意愿的上限的用户。
  • 链上数据中的提示词注入。
  • 节点、钱包或链中的漏洞。
  • 累计支出:上限针对每次调用,而非预算。

限制

  • 对等节点详情。 节点会公开对等节点数量以及 P2P/quorum 的整体健康状况,但不提供每个对等节点的 IP、端口、连接方向或延迟 RPC。peer_report 会报告现有信息,并说明缺少哪些信息。它不会读取 peers.json,也不会进行猜测。
  • 主网上的原生 v2.1。 激活前即可进行原生读取,并会返回激活状态和空目录。节点报告已激活之前,会拒绝原生写入。在本次发布时,主网的激活高度为 279,370。
  • 管理模式和合约/原生写入未经实测。 钱包模式有上限且受计划约束,但尚未在主网上运行管理模式、合约写入和原生写入。在生产环境中,请使用只读模式,直到你已在一个可以承受其故障损失的节点上测试过所需模式。
  • 没有按地址发送的 RPC。 节点的 walletSend 只会使用当前活动地址的 UTXO 进行支出。若要从其他本地地址发送,请通过 wallet_maintenance set_active_address(已确认)将其切换为活动地址,然后再发送;MCP 不会自动切换。
  • 上限不是预算。 PARANOID_MCP_MAX_SEND_MICRONOID 适用于每次调用,包括手续费。能够调用 wallet_send 的 Agent 每次都可以支出至上限。请使用余额较小的专用钱包。
  • 不支持远程 RPC、TLS 或身份验证。 这是有意设计;见上文。
  • 不支持 HTTP 传输。 仅支持 stdio。无法启动进程的客户端无法使用此工具。
  • 每个进程只能运行一个节点。 每个节点运行一个实例。
  • 没有 Docker 镜像。 容器中的仅限本地回环地址的服务无法访问主机的本地回环地址,除非使用主机网络,而这取决于平台。请使用发布的二进制文件或从源代码构建。
  • 未经审计。 src/safety.rs、src/manifest.rs 和 src/config.rs 包含与安全相关的逻辑;这些文件体量较小,便于阅读。

架构

MCP client (any stdio client)
        |  MCP over stdio (JSON-RPC on stdin/stdout)
        v
  parano1d-mcp
        |  HTTP JSON-RPC, loopback, no TLS
        v
  127.0.0.1:9601  parano1d-node
        |
        +-- owns the wallet and signs
        +-- owns the chain data
  • src/manifest.rs:每个 RPC 方法对应一个条目,包含访问类别、版本和激活门槛。添加节点方法只需一行修改。
  • src/capabilities.rs:在一次批处理调用中探测 getNativeProtocol 和 getContractProtocol,因此激活状态由节点读取。
  • src/safety.rs:发送、整合和原生计划存储、TTL 及确认字符串。
  • src/rpc.rs:用于单次和批量调用的 HTTP 客户端,带有超时设置,且写入操作不会重试。
  • src/tools/:18 个 MCP 工具,按领域分组。

TLS 不会编译进程序,这是有意为之。连接不会离开主机,因此 TLS 协议栈只会增加依赖和攻击面,不会改变信任边界。

兼容性

节点RPC 方法说明
v2.1.079新增 10 个原生方法和 walletQueryReceipts;原生写入操作需激活后才能使用
v2.0.468链、钱包、合约、内存池、挖矿、控制

服务会在启动时和每次调用时检测功能。它不会硬编码节点版本;如果清单中缺少某个方法,服务会明确报错并拒绝请求,而不会盲目转发。

平台支持

平台运行时要求说明
macOS 13+ arm64 / x86_64执行权限未签名的二进制文件可能触发 Gatekeeper;可在本地构建或使用已签名的发行版
Linux x86_64 / arm64(glibc)执行权限无需 OpenSSL、CMake 或 NASM
Windows 10/11 x86_64执行权限SmartScreen 可能会对未签名的二进制文件显示提示

无需管理员或 root 访问权限、防火墙规则、完全磁盘访问权限、Keychain 访问权限或本地网络权限。服务不会打开监听套接字。

CI 在 Ubuntu x86_64、macOS arm64 和 Windows x86_64 上运行。macOS x86_64 和 Linux arm64 从源代码构建;目前尚未通过 CI 测试。

测试

cargo test --locked
cargo clippy --all-targets --locked -- -D warnings
cargo fmt --all -- --check
cargo build --release --locked

单元测试涵盖配置验证(包括拒绝环回地址)、方法清单(访问类别、方法数量、危险方法不会被归类为读取操作)、计划绑定与确认字符串、上限解析、结果截断和 CLI 标志。

tests/hostile_rpc.rs 无需节点,并会在每个平台的常规 cargo test 中运行。它会启动真实二进制文件,通过临时环回端口(绝不使用节点端口)连接到模拟的恶意 JSON-RPC 对端,并检查超大数据流、虚报的 content-length、无效的 UTF-8/JSON、深度嵌套的 JSON、响应 ID 不匹配、批处理 ID 顺序错乱/缺失/重复、重定向、4xx/5xx、连接关闭和停滞、非整数金额、未知字段、每一种写入拒绝、发送前来源、报价或网络发生变化的计划、已取消的发送,以及拒绝发送或停止操作永远不会到达节点。每个写入工具都经过检查,确保已标注为破坏性操作且不是只读操作。

集成测试会启动真实二进制文件,并通过标准输入/输出进行 MCP 通信。测试需要正在运行的节点,并且默认不启用:

PARANOID_MCP_LIVE_TEST=1 cargo test --locked --test stdio_live -- --test-threads=1

端点可通过 PARANOID_MCP_LIVE_URL(默认 http://127.0.0.1:9601)和 PARANOID_MCP_LIVE_TESTNET_URL(默认 http://127.0.0.1:19821)配置。实时测试套件针对带有钱包的 v2.1 节点编写。它只测试读取和拒绝路径,不会发送交易。CI 中不会运行此套件,因为 CI 环境没有节点。

开发

  • Rust 1.96,edition 2024,由 rust-toolchain.toml 固定版本。
  • cargo build --release --locked 用于发布构建。
  • CI 会运行一次格式检查和 clippy,然后在 Ubuntu、macOS 和 Windows 上运行测试并进行发布构建。每次运行和每周都会由 cargo-deny 检查安全公告、许可证和来源。
  • 已提交 Cargo.lock;这是一个二进制程序,不是库。

注册表

注册表条目将此服务描述为默认只读;除非你明确启用受限钱包模式,否则发送功能保持禁用。

请求与错误报告

请使用错误报告或功能请求表单提交 issue。表单会询问节点版本、网络(mainnet 或 testnet)、相关工具和 JSON-RPC 方法,因此无论由用户还是 Agent 提交,都无需来回沟通即可处理。切勿粘贴钱包密钥、助记词或节点数据文件。

安全问题(绕过防护、模式或支出上限)请通过私密漏洞报告提交,不要公开创建 issue。请参阅 SECURITY.md。

安全

请私下报告漏洞。请参阅 SECURITY.md。请勿公开提交绕过防护或绕过支出上限的问题。

贡献

请参阅 CONTRIBUTING.md。对 src/manifest.rs、src/safety.rs 或任何可能花费 NOID 的内容所做的更改,都需要同时测试拒绝路径和正常路径。

维护者

由 Mathias Cordeiro 维护 — GitHub 上的 @Mathias-SaaS,X 上的 @Mathias_SaaS。

许可证

Apache-2.0。请参阅 LICENSE。Parano1d 节点也采用 Apache-2.0 许可证。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。