项目简介
本项目是一个基于 Model Context Protocol (MCP) 构建的后端服务器实现,旨在为大型语言模型 (LLM) 客户端提供与 Solana 区块链交互以及获取丰富的加密货币相关数据和分析能力。它将复杂的链上操作和数据查询封装成标准的 MCP 工具,方便 LLM 理解和调用。
主要功能点
该服务器通过 MCP 协议提供以下核心功能:
- 钱包管理: 支持查询指定 Solana 钱包的 SOL 余额、SPL 代币持仓详情、近期交易活动以及盈亏统计。
- 代币分析: 能够获取代币的详细信息、实时价格、热门代币排行榜(支持多种过滤和排序条件)、代币持有者分布、以及对开发者钱包和项目潜在风险(如 Rug Pull 历史)进行分析。还提供获取关于特定代币的社交媒体(如 Twitter)KOL 提及信息。
- 交易模拟与执行: 提供模拟代币互换 (Swap) 和代币/SOL 转账的功能(模拟过程不涉及链上操作,用于预估结果),同时具备执行真实的链上交易的能力(需要提供私钥),如代币转账、批量关闭空闲代币账户以回收租金、以及通过 Pump.fun 平台发布新代币。
- 区块链数据查询: 支持查询 Solana 网络的当前交易处理速度 (TPS) 等基本性能指标。
安装步骤
本项目是使用 Node.js 开发的,你需要 Node.js 环境来运行它。
- 克隆仓库:
git clone https://github.com/melythemev/NexyA2A.git cd NexyA2A - 安装依赖:
npm install # 或使用 yarn # yarn install - 配置环境变量:
创建 '.env' 文件在项目根目录,用于存储敏感信息和配置,例如用于执行链上操作所需的 Solana 钱包私钥:
请务必保护好你的私钥。# 你的 Solana 钱包私钥,Base58 格式。执行链上交易(如转账、发布代币)时需要。 # 请注意安全风险,仅在可信环境中使用。 PRIVATE_KEY=你的Base58私钥字符串 # Solana RPC 节点的 URL (可选,代码中已硬编码一个默认公共节点) # RPC_URL=你的RPC节点URL - 编译 TypeScript (如果需要):
项目使用 TypeScript,需要先编译为 JavaScript。
这将生成可执行的 JavaScript 文件在 'dist' 目录下。npm run build # 或使用 yarn # yarn build
服务器配置 (为 MCP 客户端准备)
MCP 客户端(如某些 LLM 应用程序)需要配置如何连接并启动这个服务器进程。以下是一个示例 JSON 配置片段,你需要将其添加到你的 MCP 客户端的配置中(具体位置和格式取决于你的客户端):
{ "mcpServers": { "solana-crypto": { // 启动服务器进程的命令 "command": "node", // 传递给命令的参数。这里假设你使用Stdio协议进行通信。 "args": [ "path/to/your/NexyA2A/dist/index.js", "--stdio" ], // 传递给服务器进程的环境变量 "env": { // 你的 Solana 钱包私钥 (Base58 格式) "PRIVATE_KEY": "你的Base58私钥字符串" // 如果你在 .env 中设置了 RPC_URL 并且希望通过客户端配置覆盖,也可以在这里添加: // "RPC_URL": "你的Solana RPC节点URL" } } } }
请将 '"path/to/your/NexyA2A/dist/index.js"' 替换为你实际编译后 'index.js' 文件的路径。'--stdio' 参数告诉服务器通过标准输入输出进行通信,这是 MCP 常用的方式。如果你希望使用 HTTP 模式,可以省略 '--stdio' 参数,服务器将默认在 3333 端口启动 HTTP 服务,客户端配置也需要相应调整(例如,指定 'url' 而非 'command')。
基本使用方法
- 运行服务器: 按照上面的安装和配置步骤准备好环境和配置文件。然后根据你的 MCP 客户端的配置方式启动服务器。例如,如果配置为 '--stdio' 模式并由客户端启动,客户端会自动运行指定的命令。如果独立运行 HTTP 模式,你可以手动在终端中运行 'node path/to/your/NexyA2A/dist/index.js'。
- LLM 交互: 一旦 MCP 服务器与 LLM 客户端建立连接,LLM 就可以通过 MCP 协议发现并使用服务器提供的工具。通常,LLM 会首先发送 'ListToolsRequest' 来获取可用工具列表及其描述和参数格式。然后,LLM 可以根据用户的指令,发送 'CallToolRequest' 来调用具体的工具(例如 'get_sol_balance'、'get_trending_tokens'、'swap' 等),并提供所需的参数。
- 处理结果: 服务器执行工具操作后,会将结果(如查询数据、交易签名等)以 JSON-RPC 响应或通知的形式返回给 LLM 客户端,LLM 负责解析这些结果并以自然语言的方式呈现给用户。
信息
分类
网页与API