Solana区块链数据查询服务

Solana MCP Server是一个通过Cline提供全面Solana区块链数据访问的协议服务器,实现了多种Solana RPC方法,支持通过自然语言对话直接查询区块链信息。

  • by openSVM
  • Rust
  • 本地部署
  • 64 星标
  • 更新于
在 GitHub 查看 openSVM/solana-mcp-server

使用说明

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 API
  • GET /health -健康检查
  • GET /metrics -普罗米修斯指标

📖 完整的Web服务文档

快速安装(单层)

🚀 只需一个命令即可为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数据!

手动安装(高级)

使用预构建的二进制文件

  1. 转到 发布 页
  2. 下载适合您系统的二进制文件:
    • Linux: solana-mcp-server-linux-amd64
    • macOS英特尔: solana-mcp-server-macos-amd64
    • macOS苹果硅: solana-mcp-server-macos-arm64
    • 窗户: solana-mcp-server-windows-amd64.exe
  3. 使二进制文件可执行(Linux/macOS):
    chmod +x solana-mcp-server-*
    
  4. 配置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 API
  • GET /health -带有能力信息的健康检查
  • GET /metrics -普罗米修斯指标

📚 完整的MCP JSON-RPC API文件

暴露的指标

  • 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参考,请参阅:

📚 完整的文件

🚀 开发人员入职指南 - 如果你是这个项目的新手,就从这里开始吧!

环境变量

  • 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许可证