原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

Solfleet

作者:sanjeevkkansal版本 0.1.1i★ –i在你的电脑上运行
注册名称io.github.sanjeevkkansal/solfleet

安装

概览

作者提供的说明(英文原文)

Agent-safe fleet management for independent Solana validators and RPC nodes

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 加密货币与区块链

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

  • 基础检查:1 项中通过 1 项
  • 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
  • 注册中心没有列出需要填写的密钥。

你需要

  • PyPI已安装 Python 的 uv(用于 uvx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "solfleet": {
      "command": "uvx",
      "args": [
        "solfleet",
        "--from",
        "solfleet",
        "solfleet-mcp"
      ]
    }
  }
}

在终端中运行这条命令

claude mcp add solfleet -- uvx solfleet --from solfleet solfleet-mcp

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "solfleet": {
      "command": "uvx",
      "args": [
        "solfleet",
        "--from",
        "solfleet",
        "solfleet-mcp"
      ]
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "solfleet": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "solfleet",
        "--from",
        "solfleet",
        "solfleet-mcp"
      ]
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月9日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 sanjeevkkansal 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“加密货币与区块链”中的其他服务器比较i

  • 星标数多于此分类中其他 1625 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 1625 个服务器的 24% 更新
  • 基础检查结果等于或优于此分类中其他 1625 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

Solfleet 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.1.1)于4个月前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。

有什么可以替代它?

同一分类中有:Agoreum, Web3 Systemic Agent, Highwire

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Agoreum

Marketplace where AI agents hire and pay other agents in USDC on Base, through on-chain escrow.

作者:agoreum.xyz起步阶段今天更新

在云端运行✓ agoreum.xyz

Web3 Systemic Agent

Web3 security, DEX honeypot detector, and DAO governance auditor for Base & EVM chains.

作者:RafaCoelho33起步阶段今天更新

在云端运行

Highwire

Trade, launch and research higher.fun coins on Solana, from any AI agent. Unsigned or policy-signed.

作者:HigherMaestro正在增长↓ 1729/周今天更新

电脑或云端✓ highwire.fun

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

solfleet

Agent-safe fleet management for independent Solana validators and RPC nodes. One config file describes your fleet across devnet, testnet, and mainnet. An MCP server (and a CLI) exposes Solana-aware status, safe in-place upgrades, and health-driven DNS failover to Claude or any MCP client. Every operation that changes a node is dry-run by default, policy-gated, and audited. solfleet never reads or moves your keypairs.

See PLAN.md for the roadmap and design notes.

Architecture

solfleet runs on the operator's machine (or a small VM). It talks to the fleet over JSON-RPC (read) and SSH/scp (act), builds artifacts on a separate build host, computes slot lag against each cluster's reference RPC, and manages failover records at the DNS provider. Every mutation flows through one gate and is written to a SQLite audit log.

flowchart TB

claude["Claude / any MCP client"]

subgraph operator["operator machine"] mcp["solfleet-mcp (stdio)"] cli["solfleet CLI"] core["core: probe · safety gate · executor · dns"] audit[("audit log (SQLite)")] claude -->|MCP| mcp mcp --> core cli --> core core --> audit end

builder["build host (agave + geyser from source)"] ref["cluster reference RPC"] dns["DNS provider (Cloudflare / Route53)"]

subgraph fleet["fleet: devnet / testnet / mainnet"] rpc["RPC nodes"] val["voting validators"] end

core -->|JSON-RPC :8899| rpc core -->|JSON-RPC :8899| val core -->|SSH / scp| rpc core -->|SSH / scp| val core -->|SSH build, fetch artifacts| builder builder -. "artifact set + sha256" .-> core core -->|slot lag / delinquency| ref core -->|eject / restore A records| dns

How an in-place upgrade runs
sequenceDiagram

actor Op as Claude / operator participant SF as solfleet participant B as build host participant N as node participant R as reference RPC Op->>SF: upgrade node to version (confirm) SF->>SF: gate, policy + preflight (else stop) SF->>B: build agave + geyser (or reuse cache) B-->>SF: artifact set + sha256 SF->>N: scp artifacts as dest.solfleet-new SF->>N: sha256 on node matches builder (else abort) alt RPC node SF->>N: systemctl stop SF->>N: atomic swap (binary + geyser + marker) SF->>N: systemctl start else voting validator SF->>N: atomic swap (binary + geyser + marker) SF->>N: agave-validator exit (leader-aware), systemd relaunches end loop until healthy and caught up SF->>R: getSlot SF->>N: getHealth / getSlot end SF->>SF: verify reported version, write audit entry

How failover runs
sequenceDiagram

participant SF as solfleet watch participant N as pool members participant R as reference RPC participant D as DNS provider loop every interval SF->>N: getHealth / getSlot SF->>R: getSlot (cluster head) SF->>SF: per member: unhealthy, lag over limit, or delinquent alt every member failing SF->>SF: keep current records (never empty the pool) else at least one healthy SF->>D: ensure TXT ownership marker SF->>D: remove A record of each failing member SF->>D: add A record of each recovered member SF->>SF: write audit entry end end

Why

  • Solana-aware health. A generic health check sees HTTP 200; a Solana node can be 500 slots behind and still return 200. solfleet checks slot lag against the cluster, delinquency, and version drift.
  • Build-and-distribute. Agave v3.0 dropped prebuilt validator binaries, so every operator now has to build from source. solfleet builds once on a dedicated builder node (with the ABI-matched Yellowstone geyser .so), caches it, and distributes the artifact set to the fleet.
  • Leader-aware restarts. Restarting a voting validator during its own leader slots skips blocks. solfleet restarts validators via a leader-aware safe-exit; RPC nodes cycle via systemctl.
  • Safe failover. The watch loop pulls lagging/unhealthy nodes out of DNS and restores them on recovery, and refuses to ever empty a pool.

Status

v1. Built and unit-tested (91 tests, CI on Python 3.11-3.13). Most paths are also proven live against a disposable devnet node and a real Cloudflare zone.

Proven live:

  • read path: status, validate, vote-status, inspect
  • restart (RPC via systemctl; validator via leader-aware safe-exit)
  • in-place upgrade end to end (build agave from source on a builder, distribute, sha256-verify on the target, atomic swap, catch-up) for both RPC and voting-validator nodes
  • bootstrap-builder (toolchain + deps on a bare builder)
  • provision a voting validator from bare disks (format NVMe, install, render the voting unit, start, catch up, vote)
  • DNS driver plus dns status / eject / restore and last-member protection, against a live Cloudflare zone

Unit-tested but not yet run live:

  • the autonomous watch loop (probe -> decide -> act); its decision logic is unit-tested and it reuses the now-proven Cloudflare driver
  • the Route53 driver (no AWS zone to point at yet)

Not built yet: HTTP transport (MCP is stdio-only today). See PLAN.md (M6).

Install

pipx install solfleet            # not yet published; for now:

pipx install git+https://github.com/sanjeevkkansal/solfleet pipx install 'solfleet[route53]' # if you use Route53 for DNS

Quick start

cp fleet.example.yaml fleet.yaml     # edit with your nodes

cp policy.example.yaml policy.yaml # optional; sane defaults if absent solfleet status # probe the fleet solfleet status --watch # refreshing live table solfleet validate # structural + live readiness check solfleet vote-status mn-val-1 # voting health: credits, balance, delinquency, leader solfleet inspect mn-val-1 # read-only SSH detail for one node solfleet bootstrap-builder b1 # install build toolchain on a builder; --confirm solfleet provision rpc-1 4.1.0 # dry-run bring-up plan; --confirm to run solfleet plan-upgrade mn-val-1 4.1.0 # dry-run upgrade plan solfleet upgrade mn-val-1 4.1.0 # dry-run; add --confirm to execute solfleet watch --dry-run # DNS failover loop, decide-only

MCP (Claude Code):

claude mcp add solfleet -- solfleet-mcp

Example session

Pointed at a small devnet fleet. With no flags, commands are read-only or dry-run.

Fleet health is Solana-aware, not just an HTTP 200:

$ solfleet status

CLUSTER NODE ROLE HEALTH VERSION SLOT LAG VOTE devnet rpc-1 rpc ok 4.1.0-rc.1 0 - devnet rpc-2 rpc ok 4.1.0-rc.1 0 -

An upgrade is dry-run by default. It returns the ordered plan and the gate decision and changes nothing until you pass --confirm:

$ solfleet plan-upgrade rpc-1 4.1.0

{ "decision": { "operation": "upgrade", "cluster": "devnet", "node": "rpc-1", "mode": "dry-run", "allowed": true, "plan": [ "on builder 'build-1': build agave 4.1.0 from source", "distribute artifact set to rpc-1; checksum-verify each (abort on mismatch)", "stop solana-validator, swap, start", "swap /usr/local/bin/agave-validator + geyser .so + version marker atomically", "wait until healthy + caught up to https://api.devnet.solana.com", "verify reported version == 4.1.0; record before/after" ], "reasons": [ "dry-run: preflight checks pass; pass confirm=true to execute" ] }, "target_version": "4.1.0" }

Over MCP, the same operations are tools (fleet_status, plan_node_upgrade, upgrade, ...). Claude gets that same plan back and has to pass confirm=true to execute, so an agent cannot mutate a node by accident.

Tools

Read-only: fleet_status, node_detail, version_drift, vote_status, leader_schedule, validate, plan_node_upgrade, dns_pool_status, audit_log.

Gated (dry-run by default; confirm=true to execute): bootstrap_builder_host, provision, restart, upgrade, dns_pool_eject, dns_pool_restore.

Every mutation is dry-run by default, checked against policy.yaml (allowed versions, disk floor, leader-window minimum), and written to a SQLite audit log. The watch loop is the one autonomous mutator; it is bounded by the same audit log and the never-empty-a-pool rule.

Safety model

  • Dry-run by default. Mutations return their ordered plan and preflight unless called with confirm=true.
  • Policy gate. Per-cluster policy.yaml: allowed version globs, disk floor, and require_leader_window_minutes for validators.
  • Checksum-verified distribution. Upgrade artifacts are sha256-checked on the target against the builder before any swap.
  • No keys, ever. solfleet does not read, move, or generate identity/vote keypairs. Voting-validator identity failover is out of scope by design (double-signing risk).
  • Audit log. Every dry-run and execute is recorded in SQLite.

Development

uv venv && uv pip install -e '.[dev]'

uv run pytest

MCP registry

Published to the MCP Registry.

mcp-name: io.github.sanjeevkkansal/solfleet

问 PopNx