Solana智能合约开发服务器

一个连接AI助手与Solana区块链的协议服务器,提供智能合约开发、账户管理、交易处理等区块链交互功能。

  • by FrankGenGo
  • TypeScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 FrankGenGo/solana-web3js-mcp-server

使用说明

Solana Web3.js MCP服务器

一个模型上下文协议(MCP)服务器,使像Claude这样的人工智能助手能够端到端地开发和部署Solana智能合约。该服务器充当AI语言模型和Solana区块链之间的桥梁,为区块链交互提供标准化的接口。

重要更新:此项目目前正在从Solana web3.js v1.x迁移到v2.0,以利用改进的性能、更好的类型安全性和现代函数式编程模式。请参阅 迁移计划 了解详情。

什么是MCP?

这 模型上下文协议 (MCP)是一个开放标准,允许人工智能助手以安全、可控的方式访问外部工具和数据源。该服务器实现了MCP规范,将Solana区块链功能暴露给AI助手。

此服务器的功能

此MCP服务器为AI助手提供了以下能力:

  1. 与Solana区块链互动:查询账户数据,检查余额,查看交易历史,并从各种Solana集群(主网、测试网、开发网)获取网络状态

  2. 创建和管理交易:通过适当的错误处理和费用估算,构建、模拟、签署交易并将其发送到Solana区块链

  3. 开发智能合约:使用Solana SDK或Pinocchio框架访问模板,编译、测试和部署用Rust编写的Solana程序

  4. 管理钱包和钥匙:生成密钥对、导出地址并与钱包适配器交互,同时保持安全最佳实践

  5. 使用代币:创建、转移和管理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

  1. 安装 克劳德桌面

  2. 将以下内容添加到您的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"]
    }
  }
}
  1. 重新启动克劳德桌面

  2. 现在,您可以让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水龙头请求SOL
  • manageStake:创建和管理股权账户
  • getValidators:获取验证器信息

区块链数据检查(计划中)

  • getBlock:按插槽号获取块详细信息
  • getBlockProduction:获取区块生产统计数据
  • getRecentBlockhash:使用费用计算器获取最近的blockhash
  • getEpochInfo:获取当前纪元信息
  • 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运行的集成测试。要设置测试环境,请执行以下操作:

  1. 安装Solana CLI:遵循 官方安装说明

  2. 生成测试密钥对:

    mkdir -p ~/solana-web3js-tests
    solana-keygen new --force --no-bip39-passphrase -o ~/solana-web3js-tests/test-keypair.json
    
  3. 使用devnet SOL为测试密钥对提供资金:

    solana airdrop 1 $(solana address -k ~/solana-web3js-tests/test-keypair.json) --url devnet
    
  4. 核实余额:

    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:日志记录系统(已实施)

扩展服务器

此服务器设计为可扩展的。要添加新功能,请执行以下操作:

  1. 在相应的文件中创建新工具 tools 目录
  2. 在中注册该工具 solana-server.ts
  3. 使用单元测试和集成测试对工具进行测试

贡献

欢迎投稿!请随时提交拉取请求。

许可证

麻省理工学院