使用说明
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:获取特定钱包的详细代币转账历史记录,显示发送/接收金额
安装
- 克隆此存储库:
git clone <your-repo-url>
cd solana-mcp
- 安装依赖项:
npm install
- 设置Helius API密钥:
export HELIUS_API_KEY="your-helius-api-key-here"
- 构建项目:
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余额检查
与光标一起使用
- 在光标中,转到设置(Cmd/Ctrl+,)
- 导航到MCP部分
- 添加具有以下配置的新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:运行ESLintnpm run format:使用Prettier格式化代码
添加新工具
要添加新的Solana工具:
- 将工具定义添加到
tools数组insrc/index.ts - 执行工具功能
- 在中添加一个案例
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许可证-有关详细信息,请参阅许可证文件。
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
支持
如果您遇到任何问题或有疑问,请在GitHub存储库上打开问题。