使用说明
Solana MCP服务器
一个模型上下文协议(MCP)服务器,通过Cline提供对Solana区块链数据的全面访问。该服务器实现了广泛的Solana RPC方法,使得通过自然语言对话直接查询区块链信息变得容易。
🚀 使用模式
Solana MCP服务器支持两种操作模式:
📡 标准模式(默认)
要与Claude Desktop和其他MCP客户端集成:
solana-mcp-server stdio # or just: solana-mcp-server
🌐 Web服务模式
对于HTTP API访问和与web应用程序的集成:
# Run on default port 3000
solana-mcp-server web
# Run on custom port
solana-mcp-server web --port 8080
Web服务端点:
POST /api/mcp-MCP JSON-RPC APIGET /health-健康检查GET /metrics-普罗米修斯指标
快速安装(单层)
🚀 只需一个命令即可为Claude Desktop安装Solana MCP服务器:
curl -fsSL https://raw.githubusercontent.com/opensvm/solana-mcp-server/main/scripts/install.sh | bash
这将:
- 下载预构建的二进制文件(如果可用)或从源代码构建
- 自动配置克劳德桌面
- 设置适当的环境变量
- 备份现有配置
替代安装方法:
# Using wget
wget -qO- https://raw.githubusercontent.com/opensvm/solana-mcp-server/main/scripts/install.sh | bash
# Manual download and run
curl -fsSL https://raw.githubusercontent.com/opensvm/solana-mcp-server/main/scripts/install.sh -o install.sh
chmod +x install.sh
./install.sh
安装完成后,重启Claude Desktop,直接开始查询Solana数据!
手动安装(高级)
使用预构建的二进制文件
- 转到 发布 页
- 下载适合您系统的二进制文件:
- Linux:
solana-mcp-server-linux-amd64 - macOS英特尔:
solana-mcp-server-macos-amd64 - macOS苹果硅:
solana-mcp-server-macos-arm64 - 窗户:
solana-mcp-server-windows-amd64.exe
- Linux:
- 使二进制文件可执行(Linux/macOS):
chmod +x solana-mcp-server-* - 配置Claude桌面:
CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/claude" mkdir -p "$CONFIG_DIR" echo "{\"mcpServers\":{\"solana\":{\"command\":\"$PWD/solana-mcp-server-*\",\"env\":{\"SOLANA_RPC_URL\":\"https://api.mainnet-beta.solana.com\"}}}}" > "$CONFIG_DIR/config.json"
从源头构建
git clone https://github.com/opensvm/solana-mcp-server.git
cd solana-mcp-server
cargo build --release
然后使用以下路径配置Claude Desktop target/release/solana-mcp-server.
快速部署
🚀 适用于所有平台的单行部署脚本:
# Local development
./scripts/deploy-local.sh
# Docker container
./scripts/deploy-docker.sh
# Kubernetes with autoscaling
./scripts/deploy-k8s.sh
# AWS Lambda
./scripts/deploy-lambda.sh
# Google Cloud Functions
./scripts/deploy-gcf.sh
# Vercel Edge Functions
./scripts/deploy-vercel.sh
# Netlify (Documentation Site)
./scripts/deploy-netlify.sh
看 scripts/README.md 了解每个部署选项的详细用法和要求。
📚 Netlify部署指南 -将文档部署到Netlify的完整指南
⚡ 自动缩放和监控
Solana MCP服务器支持动态扩展,以高效处理可变负载:
特性
- 普罗米修斯指标 暴露在
/metrics端点 - Kubernetes HPA 具有CPU、内存和自定义指标
- Docker扩展 指导方针和自动化脚本
- 健康检查 在
/health端点 - MCP JSON-RPC API 用于web服务集成
- 自动RPC缓存 具有可配置的TTL,可提高性能
RPC缓存
服务器包括一个用于RPC响应的智能缓存层,以减少延迟并提高性能:
- 基于TTL的缓存:每种方法的可配置生存时间
- 特定方法的TTL:不同数据类型的缓存持续时间不同
- 普罗米修斯指标:跟踪缓存命中率/未命中率
- 线程安全:使用DashMap进行并发访问
- 大小限制:达到容量时自动驱逐
看 缓存文档 有关配置和使用的详细信息。
Web服务API
服务器现在支持传统的stdio传输和HTTP JSON-RPC模式:
# Run as stdio transport (default)
solana-mcp-server stdio
# Run as web service
solana-mcp-server web --port 3000
API终点:
POST /api/mcp-完整MCP JSON-RPC 2.0 APIGET /health-带有能力信息的健康检查GET /metrics-普罗米修斯指标
暴露的指标
solana_mcp_rpc_requests_total-按方法和网络列出的RPC请求总数solana_mcp_rpc_request_duration_seconds-请求延迟直方图solana_mcp_rpc_requests_failed_total-按错误类型列出的失败请求solana_mcp_cache_hits_total-按方法缓存命中率solana_mcp_cache_misses_total-按方法缓存未命中solana_mcp_cache_size-当前缓存大小- 标准资源指标(CPU、内存)
快速开始自动缩放
# Deploy with Kubernetes autoscaling
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/hpa.yaml
# Check autoscaling status
kubectl get hpa solana-mcp-server-hpa --watch
# Access metrics
kubectl port-forward svc/solana-mcp-service 8080:8080
curl http://localhost:8080/metrics
📊 完成自动缩放文档 | 🐳 Docker扩展指南
可用的RPC方法
方法
-
getAccountInfo:返回与所提供Pubkey帐户相关的所有信息- 输入:
pubkey(string)-要查询的帐户的公钥,作为base-58编码字符串 - 返回:账户数据、余额、所有者和其他元数据
- 输入:
-
getMultipleAccounts:返回Pubkey列表的帐户信息- 输入:
pubkeys(字符串数组)-要查询的Pubkey列表 - 返回:帐户信息数组
- 输入:
-
getProgramAccounts:返回所提供程序Pubkey拥有的所有帐户- 输入:
programId(string)-编程Pubkey进行查询 - 返回:拥有账户及其数据的数组
- 输入:
-
getBalance:返回账户的SOL余额- 输入:
pubkey(string)-要查询的帐户公钥 - 回报:灯口余额(1 SOL=1000000000灯口)
- 输入:
-
getLargestAccounts:按lamport余额返回20个最大的账户- 输入:可选
filter(string)-按帐户类型筛选(循环|非循环) - 返回:账户及其余额的数组
- 输入:可选
-
getMinimumBalanceForRentExemption:退还租金豁免的最低余额- 输入:
dataSize(整数)-帐户数据的大小(以字节为单位) - 回报:租金豁免所需的最低灯位
- 输入:
块方法
-
getBlock:返回已确认区块的身份和交易信息- 输入:
slot(整数)-要查询的插槽号 - 返回:阻止数据,包括哈希、父数据和事务
- 输入:
-
getBlocks:返回两个插槽之间已确认块的列表- 输入:
start_slot(整数),end_slot(整数) - 返回值:块槽数组
- 输入:
-
getBlocksWithLimit:返回从给定插槽开始的已确认块列表- 输入:
start_slot(整数),limit(整数) - 返回值:块槽数组上限
- 输入:
-
getBlockTime:返回块的估计生产时间- 输入:
slot(整数) - 返回:Unix时间戳(自纪元以来的秒数)
- 输入:
-
getBlockHeight:返回当前块高度- 输入:无
- 返回值:当前块高度
-
getBlockCommitment:返回特定区块的承诺- 输入:
slot(整数) - 返回:阻止承诺信息
- 输入:
-
getBlockProduction:返回最近的区块生产信息- 输入:可选
identity(string)-验证器身份,range(对象) - 返回:区块生产统计数据
- 输入:可选
-
getSlot:返回节点正在处理的当前插槽- 输入:可选
commitment(string)-承诺水平 - 返回:当前插槽
- 输入:可选
-
getSlotLeaders:返回给定插槽范围的插槽领导者- 输入:
startSlot(整数),limit(整数) - 返回:验证器身份公钥数组
- 输入:
-
getFirstAvailableBlock:返回仍然可用的最低确认块- 输入:无
- 返回:第一个可用块槽
-
getGenesisHash:返回分类账的起源哈希值- 输入:无
- 返回:Genesis哈希值为字符串
系统方法
-
getHealth:返回节点的当前运行状况- 输入:无
- 返回:如果健康,则返回“ok”,否则返回错误
-
getVersion:返回节点上运行的当前Solana版本- 输入:无
- 返回:包含功能集的版本信息
-
getIdentity:返回当前节点的标识pubkey- 输入:无
- 返回:节点标识pubkey
-
getClusterNodes:返回有关所有群集节点的信息- 输入:无
- 返回:节点信息数组
-
getLeaderSchedule:返回纪元的leader日程表- 输入:可选
slot(整数),identity(字符串) - 返回:按验证器身份列出的领导者日程
- 输入:可选
-
getVoteAccounts:返回所有投票账户的账户信息和赌注- 输入:可选
votePubkey(字符串),配置参数 - 回报:当前和拖欠的投票账户
- 输入:可选
时代与通货膨胀方法
-
getEpochInfo:返回当前纪元的信息- 输入:无
- 返回:纪元信息,包括插槽和区块高度
-
getEpochSchedule:返回纪元计划信息- 输入:无
- 返回:纪元计划参数
-
getInflationGovernor:返回当前通胀调节器- 输入:无
- 返回:通货膨胀参数
-
getInflationRate:返回当前历元的特定通货膨胀值- 输入:无
- 回报:通货膨胀率
-
getInflationReward:返回地址列表的通货膨胀奖励- 输入:
addresses(字符串数组),可选epoch(整数) - 回报:通货膨胀奖励数组
- 输入:
令牌方法
-
getTokenAccountBalance:返回SPL token帐户的token余额- 输入:
accountAddress(string)-要查询的令牌帐户 - 返回:带小数的代币金额
- 输入:
-
getTokenAccountsByDelegate:按批准的代理人返回所有令牌帐户- 输入:
delegateAddress(字符串) - 返回:令牌帐户数组
- 输入:
-
getTokenAccountsByOwner:按令牌所有者返回所有令牌帐户- 输入:
ownerAddress(字符串) - 返回:令牌帐户数组
- 输入:
-
getTokenLargestAccounts:返回令牌类型的20个最大帐户- 输入:
mint(string)-要查询的令牌造币厂 - 返回值:最大令牌帐户数组
- 输入:
-
getTokenSupply:返回SPL令牌类型的总供应量- 输入:
mint(string)-要查询的令牌造币厂 - 退货:总供应量(含小数)
- 输入:
交易方式
-
getTransaction:返回已确认交易的交易详细信息- 输入:
signature(string)-交易签名 - 返回:交易信息和状态
- 输入:
-
getSignaturesForAddress:返回地址交易的签名- 输入:
address(字符串),可选limit(整数) - 返回:交易签名数组
- 输入:
-
getSignatureStatuses:返回签名列表的状态- 输入:
signatures(字符串数组) - 返回:交易状态数组
- 输入:
-
getTransactionCount:从分类账中返回当前交易计数- 输入:无
- 返回:交易计数
-
simulateTransaction:模拟发送交易- 输入:
transaction(string)-编码交易 - 返回:模拟结果
- 输入:
-
sendTransaction:发送交易- 输入:
transaction(string)-已签名的编码交易 - 返回:交易签名
- 输入:
其他方法
-
getFeeForMessage:收取留言费- 输入:
message(string)-编码消息 - 回报:灯台费
- 输入:
-
getLatestBlockhash:返回最新的blockhash- 输入:无
- 返回:Blockhash和最后一个有效插槽
-
isBlockhashValid:返回blockhash是否仍然有效- 输入:
blockhash(字符串) - 退货:有效期状态
- 输入:
-
getStakeMinimumDelegation:返回最低股权委托- 输入:无
- 回报:灯台中的最低股权委托
-
getSupply:返回有关当前供应的信息- 输入:无
- 返回:供应信息,包括总量和流通量
-
requestAirdrop:请求将灯架空投到Pubkey- 输入:
pubkey(字符串),lamports(整数) - 返回:交易签名
- 输入:
使用示例
配置后,您可以通过Cline中的自然语言与Solana区块链进行交互。以下是一些示例查询:
基本查询
- “地址Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr的SOL余额是多少?”
- “显示当前插槽号”
- “获取有关最新区块的信息”
- “目前的通货膨胀率是多少?”
- “显示地址拥有的令牌帐户…”
多网络查询
- “列出所有可用的SVM网络”
- “为查询启用Eclipse主网”
- “检查所有启用网络上的SOL余额”
- “比较跨网络的交易计数”
高级操作
- “显示最大的USDC代币账户”
- “获取当前时代的领导者时间表”
- “查找SPL Token计划拥有的所有帐户”
- “检查验证器的块生产统计数据”
安全
该项目使用以下工具进行定期安全审计 cargo audit。我们的CI/CD管道会自动扫描漏洞并生成报告。
当前安全状态
- ✅ 主动监控:每周自动安全扫描
- ✅ 依赖关系更新:定期更新到最新的安全版本
- ⚠️ 已知的可接受风险:Solana生态系统的深层依赖性存在一些漏洞
- 📋 完整审计报告:可作为CI工件和
docs/security-audit.md
有关详细的安全信息、漏洞评估和风险分析,请参阅:
📋 安全审计文件
文档
有关全面的文档,包括体系结构、部署指南和完整的API参考,请参阅:
📚 完整的文件
🚀 开发人员入职指南 - 如果你是这个项目的新手,就从这里开始吧!
- 🏗️ 架构概述 -服务器内部和设计
- 🚀 部署指导 -本地、无服务器和端点部署
- 📖 API 参考 -完整的方法文档
- ⚙️ 配置指南 -配置选项和管理
- 💾 缓存指南 -RPC响应缓存配置和使用
- 💰 x402支付协议 -将MCP工具调用货币化(可选)
- 📘 x402集成教程 -分步集成指南
环境变量
SOLANA_RPC_URL:(可选)要使用的Solana RPC终结点。默认为“https://api.mainnet-beta.solana.com“如果没有具体说明。SOLANA_COMMITMENT:(可选)承诺级别(已处理|已确认|已最终确定)。默认为“已确认”。SOLANA_PROTOCOL_VERSION:(可选)MCP协议版本。默认为最新版本。
有关缓存配置,请参阅 config.json 或 缓存文档.
有关x402支付协议(可选,功能门控),请参阅:
发展
先决条件
- 锈蚀和货物
- Solana CLI工具(可选,用于测试)
建筑
cargo build
跑步
cargo run
许可证
MIT许可证