mcpField
S
Solana Rpc

Solana Rpc

远程服务
pipeworx.io金融数据05 周前更新

关于 Solana Rpc

Solana Rpc 是面向链上数据查询的 MCP 服务,可读取 SOL 余额、SPL 代币持仓、交易及代币持有人信息。它无需 API 密钥,并通过多个公共 JSON-RPC 端点处理不同方法的可用性限制。

主要功能

  1. 01查询 SPL 代币持仓与 SOL 余额
  2. 02查看钱包交易及交易详情
  3. 03查询代币最大持有人
  4. 04探测 RPC 端点和方法状态
  5. 05公共端点故障切换与分页

适用场景

  1. 01检查 Solana 钱包余额与代币资产
  2. 02追踪地址近期交易
  3. 03查看 SPL 代币持有人分布

MCP 相关

向 MCP 客户端提供 Solana 链上查询工具,可通过 Pipeworx 网关远程连接,也可作为本地 stdio MCP 服务运行。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://gateway.pipeworx.io/solana-rpc/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

@pipeworx/solana-rpc

查询任意 Solana 地址的 SPL 代币持仓、SOL 余额和交易历史,以及任意 SPL 代币铸币地址的最大持有者;数据实时读取自公开的 Solana JSON-RPC 端点,无需 API 密钥。

这是 Pipeworx 的一部分——一个将 AI Agent 连接到 1679+ 个实时数据源的 MCP 网关。

工具

  • solana_wallet_tokens(wallet, limit?, offset?, min_amount?, include_zero?, program?) — 钱包持有的每一项 SPL 代币:铸币地址、余额、小数位数、代币账户地址,涵盖 SPL Token 和 Token-2022 两个程序。剔除零余额,按余额从大到小排序,并支持分页。
  • solana_wallet_balance(wallet) — 原生 SOL 余额,以 lamport 和 SOL 为单位,并附带读取时的 slot。
  • solana_wallet_transactions(wallet, limit?, before?, until?) — 最近的签名,包含区块时间、slot、 成功/失败状态和 memo,按时间从新到旧排列;使用 next_before 可向更早的记录分页。
  • solana_transaction(signature) — 汇总单笔交易:手续费、状态、签名者、调用的程序和指令类型、 SOL 余额变化、交易前后的 SPL 代币余额,以及开头的日志行。
  • solana_token_holders(mint, limit?) — SPL 代币铸币地址下余额最大的代币账户,按余额排名;每项包含其所有者钱包、 代币账户地址、原始余额和小数余额,以及占总供应量的百分比;另附铸币地址的供应量、小数位数,以及返回的持有者合计控制的份额。大多数 端点最多返回 20 个持有者;节点允许时最多返回 100 个。
  • solana_rpc_health() — 实时探测各端点、各方法的连通性。当查询结果为空,且你需要区分端点屏蔽与钱包无活动时,可使用此工具。

身份验证

无需密钥。

数据源

使用前值得了解的事项

能在你的笔记本电脑上正常工作的端点,不一定能在生产环境中正常工作。 api.mainnet-beta.solana.com 在本地返回 200,但从 Cloudflare Worker 访问时返回 HTTP 403 "Your IP or provider is blocked from this endpoint"。我们通过已部署的 Worker 测试了 12 个免费 RPC 端点;ankr、 rpcpool 和 mainnet-beta 返回 403,drpc 对付费计划返回 400,blockeden 返回 402,onfinality 和 omniatech 返回 429,grove 返回 1016,public-rpc 返回 526,shyft 返回 401。最终只有两个端点可用,而且两者都不支持所有方法:

端点从 Cloudflare 访问
solana-rpc.publicnode.comgetSignaturesForAddress、getBalance、getTransaction、getSlot 返回 200;getTokenAccountsByOwner 返回 -32602 "Request blocked"(方法允许列表)
solana.leorpc.com/?api_key=FREEgetTokenAccountsByOwner 返回 200(一个包含 4,513 个账户的钱包产生 2.37 MB 数据);签名查询间歇性返回 -32603

因此,故障转移是架构本身,而非安全网。调用会按顺序遍历 PROVIDERS,在遇到瞬时故障时重试一次,并跳过明确拒绝该方法的服务提供方(-32601/-32602/-32000/403)。每个 isolate 都会记住拒绝情况,因此后续调用会直接访问支持该方法的端点;瞬时故障不会被记住,因为故障可能会恢复。每个响应都会包含 providers_tried,记录每次跳转的结果和延迟,让调用方确切了解答案来自何处。 响应大小是另一个限制。 某个钱包通过单次 getTokenAccountsByOwner 返回了 4,513 个 Token 账户/2,376,758 字节。原样返回这些数据会超出响应预算和 Worker CPU 限制,因此 solana_wallet_tokens 会丢弃余额为零的账户(该钱包的 4,513 个账户中有 2,605 个保留),按余额排序并返回一页,同时报告 total_token_accounts、holdings_with_balance 和 upstream_bytes,让调用方了解哪些数据未返回。

公共节点会裁剪历史记录。 solana_wallet_transactions 返回空结果,往往意味着「超出此节点的保留期限」,而非「没有活动」——该工具会在 note 中说明这一点,而不是暗示钱包没有活动。要获取完整历史记录,需要使用归档端点(helius 或 solscan 工具包,并提供你自己的密钥)。

实体归属是另一类产品。 「哪些钱包属于 <person/company/exchange>」无法通过 RPC 解答——RPC 只按公钥处理。将名称作为 wallet 传入会导致 base58 验证失败,并返回 {found: false, reason: 'not_an_address'},同时提示使用 Arkham/Nansen 类的标注服务,而不是悄悄返回一个相近结果。

Token 持有者查询需要第三方提供方。 getTokenLargestAccounts 是两家原始提供方都拒绝支持的唯一方法——publicnode 返回 -32602 "Request blocked",api.mainnet-beta.solana.com 即使在首次调用时也返回 429 "Too many requests for a specific RPC call"——而「谁持有此 Token」正是通过这个方法查询的。在 2026-09-03 探测的约 50 个公共端点中,rpc.magicblock.app/mainnet 是唯一无需密钥且支持此方法的端点(返回最大 100 个账户,而验证器默认值为 20 个)。因此,solana_token_holders 会按单独的提供方顺序依次尝试,优先使用 MagicBlock,然后通过 getMultipleAccounts 查询每个 Token 账户的所有者,并根据 getTokenSupply 计算百分比。如果 MagicBlock 日后屏蔽数据中心的出口流量,该工具会降级为 {found: false, reason: 'upstream_unavailable'},并列出需要密钥的替代方案——在密钥存在之前,网关不会声明专用端点(PLATFORM_SOLANA_RPC_URL),这是有意为之,因为声明了但未设置密钥会被记作我们的配置缺口。

-32602 有两种不同的含义。 publicnode 用它表示「此方法不在允许列表中」(提供方级别,会在 isolate 中记住);每个节点也会用它表示「Invalid param: not a Token mint」(调用方级别)。Walker 会根据错误消息区分两者:Invalid param 会直接作为调用方的问题抛回,不会导致该提供方的此方法被标记为不可用。

Mint 返回的数据不含其他信息。 Solana RPC 不提供 Token 名称、符号或价格;birdeye、solscan 和 helius 可通过密钥提供 Token 元数据。

快速开始

添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):

{
  "mcpServers": {
    "solana-rpc": {
      "url": "https://gateway.pipeworx.io/solana-rpc/mcp"
    }
  }
}
此端点实际提供的内容

https://gateway.pipeworx.io/solana-rpc/mcp 上的 tools/list 会返回上表中的工具,以及 Pipeworx 共享元工具——ask_pipeworx、 discover_tools、search_within、remember/recall 和其他网关级工具。因此,你看到的工具数量会多于表中所列:目前,单个工具包端点除了列出该工具包自己的工具,还会列出大约 30 个共享工具。连接的 initialize 响应会说明其确切范围,是当天情况的权威依据。

这是有意为之,并非意外的多路复用。借助这些元工具,限定范围的连接也能回答本工具包未涵盖的问题——通过 ask_pipeworx 在整个目录中进行路由——无需再添加第二个 MCP 服务。目前无法挂载不含这些元工具的工具包端点;如果额外的架构定义占用的上下文多于路由带来的收益,不如只连接一次完整网关,而不是连接多个工具包端点。

或者,连接完整的 Pipeworx 网关,直接列出每个工具包的工具,而不仅是此工具包的工具:

{
  "mcpServers": {
    "pipeworx": {
      "url": "https://gateway.pipeworx.io/mcp"
    }
  }
}

两个 URL 都连接到同一个网关和相同的 1679+ 个数据源。唯一的区别是哪些工具会被直接列出;无论连接哪个端点,ask_pipeworx 都能访问所有工具。

没有 MCP 客户端?通过 HTTP 调用

curl -X POST https://gateway.pipeworx.io/v1/tools/solana_wallet_tokens \
  -H 'Content-Type: application/json' \
  -d '{"wallet":"Gf9XgdmvNHt8fUTFsWAccNbKeyDXsgJyZN8iFJKg5Pbd","limit":10}'

首次调用无需账号。检查任意工具:GET https://gateway.pipeworx.io/v1/tools/solana_wallet_tokens。查找工具:POST https://gateway.pipeworx.io/v1/tools/search_packs,并传入 {"query":"..."}。

独立运行(无需网关账号)

此软件包也可以作为本地 stdio MCP 服务运行——无需 Pipeworx 账号,也无需通过网关往返:

{
  "mcpServers": {
    "solana-rpc": {
      "command": "npx",
      "args": ["-y", "@pipeworx/mcp-solana-rpc"]
    }
  }
}

也可以直接运行,确认服务能够启动:

npx -y @pipeworx/mcp-solana-rpc

它通过 stdin/stdout 使用 MCP 协议,并对 initialize/tools/list/tools/call 作出响应,只提供此工具包的工具——不包含上方网关连接额外提供的共享元工具。来源相同,工具相同,但不支持 ask_pipeworx 路由。

使用 ask_pipeworx

你可以用通俗易懂的英语提问,而不是直接调用工具——此功能既适用于上方的工具包端点,也适用于完整网关:

ask_pipeworx({ question: "your question about Solana Rpc data" })

网关会自动选择合适的工具并填入参数。

更多信息

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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