使用说明
Solana Web3.js MCP服务器
一个模型上下文协议(MCP)服务器,使像Claude这样的人工智能助手能够端到端地开发和部署Solana智能合约。该服务器充当AI语言模型和Solana区块链之间的桥梁,为区块链交互提供标准化的接口。
重要更新:此项目目前正在从Solana web3.js v1.x迁移到v2.0,以利用改进的性能、更好的类型安全性和现代函数式编程模式。请参阅 迁移计划 了解详情。
什么是MCP?
这 模型上下文协议 (MCP)是一个开放标准,允许人工智能助手以安全、可控的方式访问外部工具和数据源。该服务器实现了MCP规范,将Solana区块链功能暴露给AI助手。
此服务器的功能
此MCP服务器为AI助手提供了以下能力:
-
与Solana区块链互动:查询账户数据,检查余额,查看交易历史,并从各种Solana集群(主网、测试网、开发网)获取网络状态
-
创建和管理交易:通过适当的错误处理和费用估算,构建、模拟、签署交易并将其发送到Solana区块链
-
开发智能合约:使用Solana SDK或Pinocchio框架访问模板,编译、测试和部署用Rust编写的Solana程序
-
管理钱包和钥匙:生成密钥对、导出地址并与钱包适配器交互,同时保持安全最佳实践
-
使用代币:创建、转移和管理SPL令牌和令牌帐户
建筑
服务器公开了三种类型的MCP功能:
- 工具:执行发送事务、部署程序或生成密钥对等操作的函数
- 资源:文档、代码模板和区块链状态信息等数据源
- 鼓励:用于指导人工智能完成智能合约开发等复杂工作流程的模板
所有区块链交互都是通过 @solana/web3.js 库和相关SDK,MCP服务器充当AI和区块链之间的安全中介。
安装
# Clone the repository
git clone https://github.com/FrankGenGo/solana-web3js-mcp-server.git
cd solana-web3js-mcp-server
# Install dependencies
npm install
# Build the server
npm run build
# Start the server
npm start
使用Claude Desktop
-
安装 克劳德桌面
-
将以下内容添加到您的Claude Desktop配置文件中:
在 macOS 上:
~/Library/Application Support/Claude/claude_desktop_config.json在Windows上:%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"solana": {
"command": "node",
"args": ["/absolute/path/to/solana-web3js-mcp-server/dist/index.js"]
}
}
}
-
重新启动克劳德桌面
-
现在,您可以让Claude执行与Solana相关的任务,例如:
- “创建一个新的Solana帐户并向我显示密钥对”
- “地址X的当前余额是多少?”
- “帮助我在Solana devnet上编写和部署一个简单的代币合约”
安全考虑
- 默认情况下,此服务器不存储私钥
- 敏感操作(签名、部署到主网)需要明确的用户批准
- 服务器遵循安全区块链交互的最佳实践
可用工具
账户管理(已实施)
getAccountInfo:获取并解码帐户信息checkAccountBalance:获取地址的SOL余额findProgramAccounts:查找程序拥有的帐户getRentExemption:计算租金豁免的最低余额
交易管理(已实施)
createTransaction:使用指定指令构建交易signTransaction:使用一个或多个密钥对签署交易sendTransaction:发送并确认链上的交易simulateTransaction:模拟交易而不发送交易getTransactionStatus:检查交易状态
密钥管理(已实施)
generateKeypair:创建新的Solana密钥对importKeypair:从各种格式导入现有密钥对deriveKeypair:从种子、助记符或路径派生密钥对
项目开发(已实施)
deployProgram:将程序部署到Solana集群upgradeProgram:升级现有的可升级程序generateProgramAddress:导出程序派生地址(PDA)
令牌操作(已实施)
createToken:创建新的SPL令牌mintTokens:向代币账户铸造代币transferTokens:在账户之间转移代币getTokenAccountInfo:获取令牌帐户信息getTokenSupply:获取令牌的总供应量
配置管理(计划)
getConfig:获取当前配置设置setConfig:更新配置参数getClusterVersion:获取Solana集群版本
扩展密钥对管理(计划中)
saveKeypair:将密钥对保存到安全存储中recoverKeypair:从种子短语中恢复密钥对verifyKeypair:验证密钥对的完整性
网络交互(计划中)
requestAirdrop:向devnet/testnet水龙头请求SOLmanageStake:创建和管理股权账户getValidators:获取验证器信息
区块链数据检查(计划中)
getBlock:按插槽号获取块详细信息getBlockProduction:获取区块生产统计数据getRecentBlockhash:使用费用计算器获取最近的blockhashgetEpochInfo:获取当前纪元信息getInflationRate:获取当前通货膨胀率
记录和监控(计划)
getLogs:流式传输和过滤事务日志getProgramLogs:监视程序执行日志
发展
# Run in development mode (with auto-reload)
npm run dev
# Run tests (including integration tests against devnet)
npm test
# Lint the code
npm run lint
设置测试环境
该测试套件包括针对Solana devnet运行的集成测试。要设置测试环境,请执行以下操作:
-
安装Solana CLI:遵循 官方安装说明
-
生成测试密钥对:
mkdir -p ~/solana-web3js-tests solana-keygen new --force --no-bip39-passphrase -o ~/solana-web3js-tests/test-keypair.json -
使用devnet SOL为测试密钥对提供资金:
solana airdrop 1 $(solana address -k ~/solana-web3js-tests/test-keypair.json) --url devnet -
核实余额:
solana balance -k ~/solana-web3js-tests/test-keypair.json --url devnet
测试套件将自动使用此密钥对进行针对devnet的集成测试。
项目结构
src/index.ts:主要切入点(已实施)src/solana-server.ts:核心服务器实施(已实施)src/core/connection-manager.ts:Solana连接管理(已实施)src/transport/:传输层实现src/transport/stdio.ts:标准I/O传输(已实施)src/transport/http.ts:HTTP/SSE传输(已实现)src/transport/index.ts:运输出口(已执行)
src/tools/:Solana操作的工具实现src/tools/accounts/:账户管理工具(已实施)src/tools/transactions/:交易操作工具(已实施)src/tools/keys/:关键管理工具(已实施)src/tools/programs/:程序开发工具(已实施)
src/resources/Solana数据的资源实施(计划中)src/prompts/:常见工作流程的可重复使用提示(计划中)src/types/:TypeScript类型定义src/types/solana.ts:Solana特定类型定义(部分实现)src/types/tools.ts:工具输入/输出类型定义(计划)src/types/config.ts:配置类型定义(计划)
src/utils/:实用功能和类别src/utils/errors.ts:错误处理系统(已实施)src/utils/logging.ts:日志记录系统(已实施)
扩展服务器
此服务器设计为可扩展的。要添加新功能,请执行以下操作:
- 在相应的文件中创建新工具
tools目录 - 在中注册该工具
solana-server.ts - 使用单元测试和集成测试对工具进行测试
贡献
欢迎投稿!请随时提交拉取请求。
许可证
麻省理工学院
