Solana区块链工具服务器

一个基于Helius API的Solana区块链工具服务器,提供钱包余额查询、交易记录获取、地址验证等功能,适用于Cursor等MCP兼容客户端。

  • by embetter
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 embetter/solana-helius-mcp

使用说明

Solana MCP服务器(Helius集成)

一个模型上下文协议(MCP)服务器,提供由Helius API驱动的Solana区块链工具,用于Cursor和其他兼容MCP的客户端。

特性

此MCP服务器提供以下由Helius支持的Solana区块链工具:

  • get_solana_balance:获取钱包地址的SOL余额
  • get_token_balance:获取特定令牌帐户的令牌余额
  • get_count_info:获取Solana帐户的详细信息
  • get_recent_transactions:获取钱包地址的最近交易记录
  • get_token_accounts:获取钱包地址的所有令牌帐户
  • validate_address:验证字符串是否为有效的Solana地址
  • get_transaction_details:通过签名/哈希获取特定交易的详细信息
  • get_hanced_交易:使用Helius增强的API获取增强的交易详细信息
  • get_nft_元数据:使用Helius API获取NFT元数据
  • get_parsed_account_历史记录:使用Helius API获取解析的帐户历史记录
  • resolve_token_address:将令牌符号解析为其地址和元数据(例如HNT、USDT、BONK)
  • get_available_tokes:获取可解析的所有可用令牌符号的列表
  • 搜索标记:按部分符号或名称匹配搜索令牌
  • get_token_transactions:获取特定SPL代币造币厂地址的最近交易记录
  • get_token_transactions_by-symbol:按符号(例如HNT、USDT)获取代币的最近交易记录
  • get_wallet_token_transfers:获取特定钱包的详细代币转账历史记录,显示发送/接收金额

安装

  1. 克隆此存储库:
git clone <your-repo-url>
cd solana-mcp
  1. 安装依赖项:
npm install
  1. 设置Helius API密钥:
export HELIUS_API_KEY="your-helius-api-key-here"
  1. 构建项目:
npm run build

用法

运行服务器

您可以在开发模式下运行服务器:

npm run dev

或者构建并运行生产版本:

npm run build
npm start

运行测试

该项目包括对Helius集成的全面测试:

# Run all tests
npm test

# Run tests in watch mode
npm run test:watch

# Run tests with coverage report
npm run test:coverage

# Run specific transaction history tests
npm run test:tx-history

# Run specific token feature tests
npm run test:tokens

交易历史测试专门测试钱包地址 AfwPkfA79MrLEb6GHzzvRVXF8DVzNoawATMnzDghYWRR 并验证:

  • 基本交易取数(最近10笔交易)
  • 详细交易信息
  • Helius增强交易功能
  • 令牌帐户提取
  • SOL余额检查

与光标一起使用

  1. 在光标中,转到设置(Cmd/Ctrl+,)
  2. 导航到MCP部分
  3. 添加具有以下配置的新MCP服务器:
    • 名字:Solana MCP服务器
    • 命令: node /path/to/your/solana-mcp/dist/index.js
    • 参数:(留空)

示例用法

连接到Cursor后,您可以在对话中使用Solana工具:

  • “检查钱包地址9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM的余额”
  • “获取9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM的最新交易记录”
  • “验证此地址:9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM”
  • “获取9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM的令牌帐户”
  • “获取签名5KKsC3qjGJTRuDQCRyE2STLJMsJz2DKBmDuYfUxSnthLxfuQoNqHNS1Tmnwq4jECNo71StEVFcEXvKt3QyJtruj6的交易详细信息”
  • “解析HNT的令牌地址”
  • “获取USDT代币的最近交易”
  • “搜索包含'BONK'的令牌”
  • “获取可用的令牌符号”
  • “获取钱包AfwPkfA79MrLEb6GHzvRVXF8DVzNoawATMnzDghYWRR的详细代币转移历史记录”
  • “显示钱包AfwPkfA79MrLEb6GHzvRVXF8DVzNoawATMnzDghYWRR的HNT代币转账”

可用工具

get_solana_balance

获取钱包地址的SOL余额。

参数:

  • address (string):用于检查余额的钱包地址

例子:

{
  "address": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM"
}

get_token_balance

获取特定令牌帐户的令牌余额。

参数:

  • tokenAccount (string):令牌帐户地址

get_count_info

获取Solana帐户的详细信息。

参数:

  • address (string):要获取信息的帐户地址

get_recent_transactions

获取钱包地址的最近交易记录。

参数:

  • address (string):获取交易的钱包地址
  • limit (number,可选):要检索的事务数(默认值:10)

get_token_accounts

获取钱包地址的所有令牌帐户。

参数:

  • address (string):获取代币账户的钱包地址

validate_address

验证字符串是否为有效的Solana地址。

参数:

  • address (string):要验证的地址

get_transaction_details

通过签名/哈希获取特定交易的详细信息。

参数:

  • signature (string):用于获取详细信息的交易签名/哈希

例子:

{
  "signature": "5KKsC3qjGJTRuDQCRyE2STLJMsJz2DKBmDuYfUxSnthLxfuQoNqHNS1Tmnwq4jECNo71StEVFcEXvKt3QyJtruj6"
}

退货:

  • 交易签名、时隙、区块时间、费用、状态、错误详细信息
  • 账户信息和余额变化
  • 代币余额变化
  • 记录交易消息

get_hanced_交易

使用Helius增强的API获取增强的交易详细信息。

参数:

  • signature (string):用于获取增强细节的交易签名/哈希

例子:

{
  "signature": "5KKsC3qjGJTRuDQCRyE2STLJMsJz2DKBmDuYfUxSnthLxfuQoNqHNS1Tmnwq4jECNo71StEVFcEXvKt3QyJtruj6"
}

get_nft_元数据

使用Helius API获取NFT元数据。

参数:

  • mint (string):NFT薄荷地址

例子:

{
  "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
}

get_parsed_account_历史记录

使用Helius API获取解析的帐户历史记录。

参数:

  • address (string):帐户地址
  • limit (number,可选):要检索的事务数(默认值:10)

例子:

{
  "address": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
  "limit": 5
}

resolve_token_address

将令牌符号解析为其地址和元数据。

参数:

  • symbol (string):代币符号(例如HNT、USDT、BONK)

例子:

{
  "symbol": "HNT"
}

答复:

{
  "symbol": "HNT",
  "name": "Helium Network Token",
  "address": "hntyVP6YFm1Hg25TN9WGLqM12b8TQmcknKrdu1oxWux",
  "decimals": 8
}

get_available_tokes

获取可解析的所有可用令牌符号的列表。

参数: 无

例子:

{}

答复:

["USDT", "USDC", "DAI", "RAY", "SRM", "BONK", "WIF", "HNT", "MOBILE", "IOT", "PYTH", "JUP", "ORCA", "SAMO"]

搜索标记

按部分符号或名称匹配搜索令牌。

参数:

  • query (string):要搜索的部分令牌符号或名称

例子:

{
  "query": "Helium"
}

get_token_transactions

获取特定SPL代币造币厂地址的最近交易。

参数:

  • mintAddress (string):代币造币厂地址
  • limit (number,可选):要检索的事务数(默认值:10)

例子:

{
  "mintAddress": "hntyVP6YFm1Hg25TN9WGLqM12b8TQmcknKrdu1oxWux",
  "limit": 5
}

get_token_transactions_by-symbol

按符号获取令牌的最近交易。

参数:

  • symbol (string):代币符号(例如HNT、USDT、BONK)
  • limit (number,可选):要检索的事务数(默认值:10)

例子:

{
  "symbol": "HNT",
  "limit": 5
}

增强响应(包括传输详细信息):

[
  {
    "signature": "...",
    "slot": 123456789,
    "blockTime": 1234567890,
    "status": "Success",
    "fee": 5000,
    "tokenInfo": {
      "symbol": "HNT",
      "name": "Helium Network Token",
      "address": "hntyVP6YFm1Hg25TN9WGLqM12b8TQmcknKrdu1oxWux",
      "decimals": 8
    },
    "tokenTransfers": [
      {
        "account": "wallet_address_1",
        "change": 10.5,
        "direction": "received",
        "amount": 10.5,
        "preBalance": 0,
        "postBalance": 10.5
      },
      {
        "account": "wallet_address_2", 
        "change": -10.5,
        "direction": "sent",
        "amount": 10.5,
        "preBalance": 100,
        "postBalance": 89.5
      }
    ]
  }
]

get_wallet_token_transfers

获取特定钱包地址的详细代币转账历史记录,显示发送/接收金额。

参数:

  • walletAddress (string):获取代币转账历史记录的钱包地址
  • symbol (字符串,可选):按特定令牌符号过滤(例如HNT、USDT)
  • limit (number,可选):要检索的事务数(默认值:10)

例子:

{
  "walletAddress": "AfwPkfA79MrLEb6GHzzvRVXF8DVzNoawATMnzDghYWRR",
  "symbol": "HNT",
  "limit": 5
}

答复:

[
  {
    "signature": "...",
    "slot": 123456789,
    "blockTime": 1234567890,
    "status": "Success",
    "fee": 5000,
    "transfers": [
      {
        "mint": "hntyVP6YFm1Hg25TN9WGLqM12b8TQmcknKrdu1oxWux",
        "tokenSymbol": "HNT",
        "tokenName": "Helium Network Token",
        "change": 5.25,
        "direction": "received",
        "amount": 5.25,
        "preBalance": 10.5,
        "postBalance": 15.75,
        "decimals": 8
      }
    ]
  }
]

增强传输详细信息

增强的代币交易功能现在提供详细的转账信息,包括:

转移方向

  • direction:“已发送”或“已接收”-表示代币是从钱包发送还是由钱包接收
  • change:表示代币余额净变化的正数或负数
  • amount:转账金额的绝对值

余额跟踪

  • preBalance:交易前的代币余额
  • postBalance:交易后的代币余额
  • decimals:用于精确显示金额的令牌小数位

钱包信息

  • account:转账涉及的钱包地址
  • mint:代币造币厂地址
  • tokenSymbol:人类可读的代币符号(例如“HNT”、“USDT”)
  • tokenName:完整的令牌名称(例如,“氦网络令牌”)

示例用例

  • 跟踪特定钱包的代币流入和流出
  • 分析交易模式和代币走势
  • 监控交易前后的代币余额
  • 识别交易中发送/接收令牌的钱包

支持的代币

符号解析支持以下令牌:

  • 稳定币:美国国防部、美国国防部和戴
  • DeFi令牌:RAY(放射性核素),SRM(血清)
  • Meme代币:BONK,WIF(dogwifhat)
  • 基础设施:HNT(氦网络令牌)、MOBILE(氦移动)、IOT(氦物联网)
  • 游戏:PYTH(PYTH Network)、JUP(Jupiter)
  • 其他:萨摩亚共和国共和国

发展

项目结构

solana-mcp/
├── src/
│   └── index.ts          # Main server implementation
├── dist/                 # Compiled JavaScript (generated)
├── package.json          # Dependencies and scripts
├── tsconfig.json         # TypeScript configuration
└── README.md            # This file

脚本

  • npm run dev:以热重载的开发模式运行
  • npm run build:构建TypeScript项目
  • npm start:运行构建的服务器
  • npm test:运行测试
  • npm run lint:运行ESLint
  • npm run format:使用Prettier格式化代码

添加新工具

要添加新的Solana工具:

  1. 将工具定义添加到 tools 数组in src/index.ts
  2. 执行工具功能
  3. 在中添加一个案例 call_tool 处理程序开关语句

例子:

// Add to tools array
{
  name: 'my_new_tool',
  description: 'Description of what the tool does',
  inputSchema: {
    type: 'object',
    properties: {
      param1: {
        type: 'string',
        description: 'Description of parameter'
      }
    },
    required: ['param1']
  }
}

// Implement the function
async function myNewTool(param1: string): Promise<string> {
  // Implementation here
  return 'Result';
}

// Add to switch statement
case 'my_new_tool':
  result = await myNewTool(args.param1);
  break;

配置

默认情况下,服务器通过Helius连接到Solana主网。若要更改网络或API提供程序,请在中修改连接URL src/index.ts:

// For Helius mainnet (default)
const connection = new Connection(`https://rpc.helius.xyz/?api-key=${HELIUS_API_KEY}`, 'confirmed');

// For Helius devnet
const connection = new Connection(`https://rpc-devnet.helius.xyz/?api-key=${HELIUS_API_KEY}`, 'confirmed');

// For standard Solana RPC (fallback)
const connection = new Connection('https://api.mainnet-beta.solana.com', 'confirmed');

错误处理

该服务器包括全面的错误处理功能,用于:

  • Solana地址无效
  • 网络连接问题
  • RPC错误
  • 无效的工具参数

所有错误都会以带有错误详细信息的文本响应形式返回。

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

支持

如果您遇到任何问题或有疑问,请在GitHub存储库上打开问题。