返回市场
索拉纳-MCP服务器

索拉纳-MCP服务器

作者:openSVM53 星标更新:2025-09-27

项目介绍

Solana MCP 服务器

这是一个通过 Cline 提供全面访问 Solana 区块链数据的 Model Context Protocol (MCP) 服务器。该服务器实现了广泛的 Solana RPC 方法,使得可以直接通过自然语言对话查询区块链信息。

🚀 使用模式

Solana MCP 服务器支持两种操作模式:

📡 标准输入输出模式(默认)

用于与 Claude Desktop 和其他 MCP 客户端集成:

solana-mcp-server stdio  # 或者:solana-mcp-server

🌐 Web 服务模式

用于 HTTP API 访问和与 Web 应用程序集成:

# 在默认端口 3000 上运行
solana-mcp-server web

# 在自定义端口上运行
solana-mcp-server web --port 8080

Web 服务端点:

  • POST /api/mcp - MCP JSON-RPC API
  • GET /health - 健康检查
  • GET /metrics - Prometheus 指标

📖 完整的 Web 服务文档

快速安装(单行命令)

🚀 通过一个命令安装 Solana MCP 服务器以供 Claude Desktop 使用:

curl -fsSL https://raw.githubusercontent.com/opensvm/solana-mcp-server/main/scripts/install.sh | bash

这将:

  • 下载预构建的二进制文件(如果可用)或从源代码构建
  • 自动配置 Claude Desktop
  • 设置正确的环境变量
  • 备份现有的配置

替代安装方法:

# 使用 wget
wget -qO- https://raw.githubusercontent.com/opensvm/solana-mcp-server/main/scripts/install.sh | bash

# 手动下载并运行
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 Intel: solana-mcp-server-macos-amd64
    • macOS Apple Silicon: solana-mcp-server-macos-arm64
    • Windows: solana-mcp-server-windows-amd64.exe
  3. 将二进制文件设置为可执行(Linux/macOS):
    chmod +x solana-mcp-server-*
    
  4. 配置 Claude Desktop:
    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

然后使用 target/release/solana-mcp-server 的路径来配置 Claude Desktop。

快速部署

🚀 适用于所有平台的一行脚本部署:

# 本地开发
./scripts/deploy-local.sh

# Docker 容器
./scripts/deploy-docker.sh

# Kubernetes 自动扩展
./scripts/deploy-k8s.sh

# AWS Lambda
./scripts/deploy-lambda.sh

# Google Cloud Functions
./scripts/deploy-gcf.sh

# Vercel Edge Functions
./scripts/deploy-vercel.sh

请参阅 scripts/README.md 获取每个部署选项的详细使用说明和需求。

⚡ 自动扩展和监控

Solana MCP 服务器支持动态扩展以高效处理变化负载:

功能

  • Prometheus 指标/metrics 端点暴露
  • Kubernetes HPA 使用 CPU、内存和自定义指标
  • Docker 扩展指南和自动化脚本
  • 健康检查/health 端点
  • MCP JSON-RPC API 用于 Web 服务集成

Web 服务 API

服务器现在同时支持传统的标准输入输出传输和 HTTP JSON-RPC 模式:

# 作为标准输入输出传输运行(默认)
solana-mcp-server stdio

# 作为 Web 服务运行
solana-mcp-server web --port 3000

API 端点:

  • POST /api/mcp - 完整的 MCP JSON-RPC 2.0 API
  • GET /health - 带有功能信息的健康检查
  • GET /metrics - Prometheus 指标

📚 完整的 MCP JSON-RPC API 文档

暴露的指标

  • solana_mcp_rpc_requests_total - 按方法和网络统计的总 RPC 请求
  • solana_mcp_rpc_request_duration_seconds - 请求延迟直方图
  • solana_mcp_rpc_requests_failed_total - 按错误类型统计的失败请求
  • 标准资源指标(CPU、内存)

快速启动自动扩展

# 使用 Kubernetes 自动扩展部署
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/hpa.yaml

# 查看自动扩展状态
kubectl get hpa solana-mcp-server-hpa --watch

# 访问指标
kubectl port-forward svc/solana-mcp-service 8080:8080
curl http://localhost:8080/metrics

📊 完整的自动扩展文档 | 🐳 Docker 扩展指南

可用的 RPC 方法

账户方法

  • getAccountInfo: 返回提供的 Pubkey 账户的所有相关信息

    • 输入:pubkey(字符串)- 要查询的账户的 Pubkey,以 base-58 编码的字符串形式
    • 返回:账户数据、余额、拥有者和其他元数据
  • getMultipleAccounts: 返回一组 Pubkeys 的账户信息

    • 输入:pubkeys(字符串数组)- 要查询的 Pubkeys 列表
    • 返回:账户信息数组
  • getProgramAccounts: 返回由提供的程序 Pubkey 拥有的所有账户

    • 输入:programId(字符串)- 要查询的程序 Pubkey
    • 返回:拥有的账户及其数据的数组
  • getBalance: 返回一个账户的 SOL 余额

    • 输入:pubkey(字符串)- 要查询的账户的 Pubkey
    • 返回:以 lamports 表示的余额(1 SOL = 1,000,000,000 lamports)
  • getLargestAccounts: 返回按 lamports 余额排序的 20 个最大账户

    • 输入:可选 filter(字符串)- 按账户类型过滤(circulating|nonCirculating)
    • 返回:带有余额的账户数组
  • getMinimumBalanceForRentExemption: 返回租金豁免所需的最小余额

    • 输入:dataSize(整数)- 账户数据大小(字节)
    • 返回:所需最小 lamports 数量以豁免租金

区块方法

  • getBlock: 返回已确认区块的身份和交易信息

    • 输入:slot(整数)- 要查询的槽位编号
    • 返回:包括哈希值、父块和交易的区块数据
  • getBlocks: 返回两个槽位之间的已确认区块列表

    • 输入:start_slot(整数),end_slot(整数)
    • 返回:区块槽位数组
  • getBlocksWithLimit: 返回从给定槽位开始的已确认区块列表

    • 输入:start_slot(整数),limit(整数)
    • 返回:最多达到限制的区块槽位数组
  • getBlockTime: 返回一个区块的估计生产时间

    • 输入:slot(整数)
    • 返回:Unix 时间戳(自纪元以来的秒数)
  • getBlockHeight: 返回当前区块高度

    • 输入:无
    • 返回:当前区块高度
  • getBlockCommitment: 返回特定区块的承诺

    • 输入:slot(整数)
    • 返回:区块承诺信息
  • getBlockProduction: 返回最近的区块生产信息

    • 输入:可选 identity(字符串)- 验证者身份,range(对象)
    • 返回:区块生产统计数据
  • getSlot: 返回节点正在处理的当前槽位

    • 输入:可选 commitment(字符串)- 承诺级别
    • 返回:当前槽位
  • getSlotLeaders: 返回给定槽位范围内的槽位领导者

    • 输入:startSlot(整数),limit(整数)
    • 返回:验证者身份公钥数组
  • getFirstAvailableBlock: 返回最低的仍可用的已确认区块

    • 输入:无
    • 返回:第一个可用的区块槽位
  • getGenesisHash: 返回账本的创世哈希

    • 输入:无
    • 返回:作为字符串的创世哈希

系统方法

  • getHealth: 返回节点当前的健康状况

    • 输入:无
    • 返回:如果健康则返回 "ok",否则返回错误
  • getVersion: 返回当前 Solana 版本

    • 输入:无
    • 返回:包括功能集的版本信息
  • getIdentity: 返回当前节点的身份公钥

    • 输入:无
    • 返回:节点身份公钥
  • getClusterNodes: 返回有关所有集群节点的信息

    • 输入:无
    • 返回:节点信息数组
  • getLeaderSchedule: 返回一个时期的领导者计划

    • 输入:可选 slot(整数),identity(字符串)
    • 返回:按验证者身份划分的领导者计划
  • getVoteAccounts: 返回所有投票账户的信息和质押

    • 输入:可选 votePubkey(字符串),配置参数
    • 返回:当前和违约的投票账户

时期和通胀方法

  • getEpochInfo: 返回当前时期的有关信息

    • 输入:无
    • 返回:包括槽位和区块高度的时期信息
  • getEpochSchedule: 返回时期计划信息

    • 输入:无
    • 返回:时期计划参数
  • getInflationGovernor: 返回当前通胀治理者

    • 输入:无
    • 返回:通胀参数
  • getInflationRate: 返回当前时期的特定通胀值

    • 输入:无
    • 返回:通胀率
  • getInflationReward: 返回一系列地址的通胀奖励

    • 输入:addresses(字符串数组),可选 epoch(整数)
    • 返回:通胀奖励数组

代币方法

  • getTokenAccountBalance: 返回 SPL Token 账户的代币余额

    • 输入:accountAddress(字符串)- 要查询的代币账户
    • 返回:带小数的代币数量
  • getTokenAccountsByDelegate: 返回由批准的委托人拥有的所有代币账户

    • 输入:delegateAddress(字符串)
    • 返回:代币账户数组
  • getTokenAccountsByOwner: 返回由代币所有者拥有的所有代币账户

    • 输入:ownerAddress(字符串)
    • 返回:代币账户数组
  • getTokenLargestAccounts: 返回某种代币类型的 20 个最大账户

    • 输入:mint(字符串)- 要查询的代币铸造
    • 返回:最大的代币账户数组
  • getTokenSupply: 返回某种 SPL Token 类型的总供应量

    • 输入:mint(字符串)- 要查询的代币铸造
    • 返回:带小数的总供应量

交易方法

  • getTransaction: 返回已确认交易的详细信息

    • 输入:signature(字符串)- 交易签名
    • 返回:交易信息和状态
  • getSignaturesForAddress: 返回地址的交易签名

    • 输入:address(字符串),可选 limit(整数)
    • 返回:交易签名数组
  • getSignatureStatuses: 返回一系列签名的状态

    • 输入:signatures(字符串数组)
    • 返回:交易状态数组
  • getTransactionCount: 返回当前的交易计数

    • 输入:无
    • 返回:交易计数
  • simulateTransaction: 模拟发送交易

    • 输入:transaction(字符串)- 编码的交易
    • 返回:模拟结果
  • sendTransaction: 发送交易

    • 输入:transaction(字符串)- 已签名编码的交易
    • 返回:交易签名

其他方法

  • getFeeForMessage: 获取消息的费用

    • 输入:message(字符串)- 编码的消息
    • 返回:以 lamports 表示的费用
  • getLatestBlockhash: 返回最新的区块哈希

    • 输入:无
    • 返回:区块哈希和最后一个有效槽位
  • isBlockhashValid: 返回一个区块哈希是否仍然有效

    • 输入:blockhash(字符串)
    • 返回:有效性状态
  • getStakeMinimumDelegation: 返回质押的最小委托

    • 输入:无
    • 返回:以 lamports 表示的最小质押委托
  • getSupply: 返回有关当前供应的信息

    • 输入:无
    • 返回:包括总供应和流通供应的供应信息
  • requestAirdrop: 请求向一个 Pubkey 分发 lamports

    • 输入: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:(可选)承诺级别(processed|confirmed|finalized)。默认为 "confirmed"。
  • SOLANA_PROTOCOL_VERSION:(可选)MCP 协议版本。默认为最新版本。

开发

前提条件

  • Rust 和 Cargo
  • Solana CLI 工具(可选,用于测试)

构建

cargo build

运行

cargo run

许可证

MIT 许可证