关于 Solana Rpc
Solana Rpc 是面向链上数据查询的 MCP 服务,可读取 SOL 余额、SPL 代币持仓、交易及代币持有人信息。它无需 API 密钥,并通过多个公共 JSON-RPC 端点处理不同方法的可用性限制。
主要功能
- 01查询 SPL 代币持仓与 SOL 余额
- 02查看钱包交易及交易详情
- 03查询代币最大持有人
- 04探测 RPC 端点和方法状态
- 05公共端点故障切换与分页
适用场景
- 01检查 Solana 钱包余额与代币资产
- 02追踪地址近期交易
- 03查看 SPL 代币持有人分布
MCP 相关
向 MCP 客户端提供 Solana 链上查询工具,可通过 Pipeworx 网关远程连接,也可作为本地 stdio MCP 服务运行。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://gateway.pipeworx.io/solana-rpc/mcpclaude mcp add --transport http pipeworx-io-solana-rpc https://gateway.pipeworx.io/solana-rpc/mcp{"mcpServers":{"pipeworx-io-solana-rpc":{"type":"http","url":"https://gateway.pipeworx.io/solana-rpc/mcp"}}}在 Cursor 中打开{"servers":{"pipeworx-io-solana-rpc":{"type":"http","url":"https://gateway.pipeworx.io/solana-rpc/mcp"}}}在 VS Code 中打开{"mcpServers":{"pipeworx-io-solana-rpc":{"type":"http","url":"https://gateway.pipeworx.io/solana-rpc/mcp"}}}{"mcpServers":{"pipeworx-io-solana-rpc":{"serverUrl":"https://gateway.pipeworx.io/solana-rpc/mcp"}}}命令在终端中运行;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()— 实时探测各端点、各方法的连通性。当查询结果为空,且你需要区分端点屏蔽与钱包无活动时,可使用此工具。
身份验证
无需密钥。
数据源
- https://solana-rpc.publicnode.com — 由 PublicNode/Allnodes 运营的 Solana 主网 JSON-RPC。
- https://solana.leorpc.com/?api_key=FREE — 由 LeoRPC 运营的 Solana 主网 JSON-RPC(免费共享密钥)。
- https://rpc.magicblock.app/mainnet — 由 MagicBlock 运营的 Solana 主网 JSON-RPC(公开端点)。这是
唯一一个无需密钥且支持
getTokenLargestAccounts的端点;处理铸币级调用时优先使用,处理钱包调用时作为最后 手段。
使用前值得了解的事项
能在你的笔记本电脑上正常工作的端点,不一定能在生产环境中正常工作。
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.com | getSignaturesForAddress、getBalance、getTransaction、getSlot 返回 200;getTokenAccountsByOwner 返回 -32602 "Request blocked"(方法允许列表) |
solana.leorpc.com/?api_key=FREE | getTokenAccountsByOwner 返回 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
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。