要搭跟 Solana 交互的 AI 应用,你最终会撞到 MCP(Model Context Protocol)。它是连语言模型到外部工具的标准——Solana 上意味着 MCP 服务器是让 AI agent 查链状态、模拟交易、提交交易的那个东西。
这篇过一遍 Solana MCP 服务器是什么、暴露什么、把"玩具演示"和"生产级部署"分开的基础设施决定。
MCP 简短版
Model Context Protocol (MCP) 是给语言模型调外部工具用的协议。你定义模型能用的工具;模型决定何时调;协议处理调用/响应握手。
Solana 这块,MCP 服务器可能暴露这种工具:
get_account_info(address)—— 查账户状态get_token_balance(wallet, mint)—— 查代币持仓get_pool_state(pool_address)—— 查 DEX 池子储备simulate_swap(input, output, amount)—— 返回预期输出submit_transaction(serialized_tx)—— 执行交易query_recent_transactions(address)—— 最近活动
Agent 在推理过程中用这些工具。执行流程:
- Agent 决定它需要某个信息
- Agent 调对的 MCP 工具
- MCP 服务器执行工具、返回结果
- Agent 用结果决定下一步做什么
比把原始 RPC 调用嵌进 prompt 干净得多。结构上约束 agent 能做什么;能扩到很多能力但不让 prompt 膨胀。
为什么 MCP 适合 Solana
几个理由 MCP 适合 Solana agent 用:
Solana RPC 信息丰富。 很多方法、很多账户类型、很多可能的查询。MCP 给 agent 整理出子集。
动作延迟重要。 Solana 有快 slot;agent 工具该也快。MCP 结构化调用比让 agent 解析 prompt 输出方法快。
可组合。 Solana 程序交互复杂。MCP 工具能把多个 RPC 调用组合成对 agent 有用的操作。
类型安全。 MCP 支持结构化输入/输出。Agent 拿到干净数据结构、不是原始 JSON。
Solana 上的 agent 应用——交易 agent、研究 agent、链上分析 agent——MCP 在架构上就是对的那个原语。
生产 Solana MCP 服务器要什么
搭一个直接;做生产级更难。零件:
稳健的 RPC 后端。 每次 MCP 工具调用最终翻译成 RPC 调用。MCP 服务器质量被 RPC 质量限制。
合适地方做缓存。 不是所有数据每个 slot 都变。缓存变化慢的状态(代币元数据、程序所有者),避免重复查询。
限流。 Agent 能很啰嗦。无限流的 agent 循环能很快撞到 RPC 限。
认证。 生产 agent 不该有不受限访问。每 agent 一个 API key、每工具授权。
日志。 每次工具调用都该带完整上下文记日志。Debug agent 行为这是必需的。
错误处理。 Solana 错误有时隐晦。翻译成 agent 友好响应。
交易安全。 提交交易的工具要额外护栏——仓位规模限、日损失限、白名单目标程序。
值得暴露的工具
一个合理的起步工具集:
# 读工具(低风险)
get_balance(address) -> SOL 余额
get_token_balance(wallet, mint) -> 代币余额
get_account_info(address) -> 账户数据(尽量解码)
get_recent_transactions(address, limit) -> 最近活动
get_pool_state(pool_address) -> 储备、最近交易
get_token_info(mint) -> 元数据、持有人分布
# 模拟工具(低风险)
simulate_swap(input, output, amount) -> 预期输出、价格冲击
estimate_priority_fee() -> 当前网络状态推荐 priority fee
# 动作工具(高风险——要护栏)
submit_swap(input, output, amount, slippage) -> 签名
submit_transaction(serialized_tx) -> 签名
sign_message(message) -> 签名
# 专门
get_smart_money_signals() -> 值得监视的钱包/代币
动作工具,硬护栏强制:仓位规模限、允许程序列表、日交易上限。Agent 不该能通过聪明 prompt 绕过这些。
搭 MCP 服务器常见错误
暴露太多。 "提交任何交易"太宽。约束到具体操作。
没限流。 Agent 会循环。循环能快速调工具。无限的话你超 RPC 配额。
返回原始 RPC 错误。 "InstructionError [3, 'Custom: 0x1771']"对 LLM 没用。翻译。
只有同步工具调用。 一些 Solana 操作慢(交易确认)。合适地方提供异步模式。
没认证。 暴露在互联网上、没认证的 MCP 服务器会被滥用。最少每 agent 一个 key。
没工具版本管理。 工具签名变化时 agent 行为崩。版本化工具、提供迁移路径。
日志不够。 Agent 做奇怪事时你要知道它调了什么、拿到了什么。一切都记。
RPC 选择怎么影响 MCP 性能
每次 MCP 工具调用最终调 RPC。RPC 属性会传播:
- RPC 延迟加到工具延迟——慢 RPC = 慢 agent
- RPC 可靠性变成工具可靠性——不稳 RPC = 不稳 agent
- RPC 方法支持决定工具能力——RPC 能做的就是工具能做的
- RPC 层 Anti-MEV 意味着 agent 交易不被夹——没它,agent 的 submit_transaction 工具是三明治被夹目标
提交交易的 agent,写 RPC 必须有 Anti-MEV 路由和亚秒级确认。读量大的 agent,读 RPC 必须有慷慨限流和好性能。
架构模式
典型生产 MCP-Solana 配置:
AI Agent (任何 MCP 兼容的语言模型)
↓ MCP 协议
MCP 服务器
↓ HTTPS
读 RPC(给查询)
写 RPC(给发送、带 Anti-MEV)
↓
Solana 网络
MCP 服务器是编排层。处理工具调用、合适地方缓存、应用限流和认证、路由到对的 RPC。
交易聚焦的 agent,写 RPC 是关键部分。那是交易实际变成现实的地方。
这周可以做什么
搭一个 Solana MCP 服务器:
- 从只读工具开始。 加动作能力前搭好 agent 集成。
- 挑一个好的 RPC 后端。 MCP 服务器质量被 RPC 限。
- 第一天就加限流。 Agent 循环会让你惊讶。
- 错误翻译有用。 别给 LLM 传原始 RPC 错误。
- 动作工具上搭护栏。 仓位限、白名单操作、日上限。
- 每个工具调用都记日志。 Debug 时必需。
- 用真实 agent 负载测。 不只合成调用——真 LLM 驱动流量。
BoltTx 当 MCP 服务器写后端
提交交易的 agent 应用:
import { Connection } from "@solana/web3.js";
const writeConnection = new Connection(
"https://bolttx.io/?api-key=YOUR_API_KEY",
"processed"
);
async function submitTransaction(serializedTx) {
const tx = VersionedTransaction.deserialize(serializedTx);
const signature = await writeConnection.sendTransaction(tx, {
skipPreflight: true,
maxRetries: 0,
});
return signature;
}
原生 Anti-MEV 路由保护 agent 驱动的交易不被夹。亚秒级确认让 agent 感觉灵敏。每笔签名级别遥测让你 debug agent 实际做了什么。
免费档注册——评估和小规模生产够用。
常见问题
MCP 跟普通 API 区别? MCP 给 LLM 工具用做了结构化。普通 API 给人编写客户端用。MCP 让 agent 的调用/响应循环干净。
只能用某一家的 LLM 才能用 MCP 吗? 协议是开放的。任何实现了 MCP 的系统都能用这些工具——不限模型厂商。
要从零写 MCP 服务器吗? 现成的 SDK 帮你处理协议层,Python、TypeScript 都有。Solana 这块,在 SDK 之上写自定义工具定义是典型做法。
动作工具该有人在环吗? 高价值或高风险动作,是。Agent 提议;人批。低风险动作(小仓位交易、信息查询)能在护栏内全自主。
怎么处理 agent 跑飞循环? Agent 框架里设迭代限。MCP 服务器里限流。交易 agent 设日损失上限。多层。