Skip to main content
Glama

SVM-MCP:SOON 模型上下文协议服务器

一个模型上下文协议 (MCP) 服务器,将 Claude AI 与 SOON 及其他基于 SVM 的区块链集成。该服务器提供用于查询余额、获取近期交易以及查看 SOON 测试网和主网上的代币持有情况的工具,包括账户余额、交易记录和代币持有量。

概述

该 MCP 服务器旨在将 Claude 与 SOON 生态系统连接起来,使其能够:

  • 查询测试网和主网上的钱包余额

  • 获取某个地址的最新交易

  • 检查任何账户的代币持有量

当前实现使用 SOON 的 RPC 端点,但可以轻松修改以与任何与 Solana 兼容的区块链或自定义 SVM 实现一起使用。

Related MCP server: Solana Agent Kit MCP Server

特征

  • 获取余额:获取 SOON 测试网或主网上任何地址的原生代币余额

  • 获取最后一笔交易:检索某个地址的最近一笔交易

  • 获取代币账户:列出某个地址拥有的所有代币账户

先决条件

  • Node.js(v16+)

  • NPM 或 Bun 包管理器

  • Claude Desktop(用于本地测试)

安装

  1. 克隆存储库:

git clone https://github.com/rkmonarch/svm-mcp
cd svm-mcp
  1. 安装依赖项:

npm install
# or
bun install
  1. 构建项目:

npm run build
# or
bun run build

项目结构

主服务器实现位于src/index.ts中:

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { Connection, PublicKey } from "@solana/web3.js";
import { z } from "zod";

const connectionTestnet = new Connection("https://rpc.testnet.soo.network/rpc");
const connectionMainnet = new Connection("https://rpc.mainnet.soo.network/rpc");

const server = new McpServer({
  name: "svm-mcp",
  version: "0.0.1",
  capabilities: [
    "get-soon-testnet-balance",
    "get-soon-testnet-last-transaction",
    "get-soon-testnet-account-tokens",
    "get-soon-mainnet-balance",
    "get-soon-mainnet-last-transaction",
    "get-soon-mainnet-account-tokens",
  ],
});

工具实现

获取余额

server.tool(
  "get-soon-testnet-balance",
  "Get the balance of a address on the Soon testnet",
  {
    address: z.string().describe("The Solana address to get the balance of"),
  },
  async ({ address }) => {
    try {
      const balance = await connectionTestnet.getBalance(new PublicKey(address));
      return {
        content: [
          {
            type: "text",
            text: `Balance: ${balance}`,
          },
        ],
      };
    } catch (error) {
      return {
        content: [
          {
            type: "text",
            text: `Error getting balance: ${error instanceof Error ? error.message : String(error)}`,
          },
        ],
      };
    }
  }
);

获取最后交易

server.tool(
  "get-soon-testnet-last-transaction",
  "Get the last transaction of an address on the Soon testnet",
  {
    address: z
      .string()
      .describe("The Solana address to get the last transaction for"),
  },
  async ({ address }) => {
    try {
      // Fetch the most recent transaction signatures for the address
      const signatures = await connectionTestnet.getSignaturesForAddress(
        new PublicKey(address),
        { limit: 1 } // Limit to just the most recent transaction
      );

      if (signatures.length === 0) {
        return {
          content: [
            {
              type: "text",
              text: "No transactions found for this address",
            },
          ],
        };
      }

      // Get the most recent transaction using its signature
      const latestSignature = signatures[0].signature;
      const transaction = await connectionTestnet.getConfirmedTransaction(
        latestSignature
      );

      return {
        content: [
          {
            type: "text",
            text: JSON.stringify(transaction),
          },
        ],
      };
    } catch (error) {
      return {
        content: [
          {
            type: "text",
            text: `Error getting transaction: ${error instanceof Error ? error.message : String(error)}`,
          },
        ],
      };
    }
  }
);

获取代币账户

server.tool(
  "get-soon-testnet-account-tokens",
  "Get the tokens of a address on the Soon testnet",
  {
    address: z.string().describe("The Solana address to get the tokens of"),
  },
  async ({ address }) => {
    try {
      const tokens = await connectionTestnet.getTokenAccountsByOwner(
        new PublicKey(address),
        {
          programId: new PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),
        }
      );
      return {
        content: [
          {
            type: "text",
            text: JSON.stringify(tokens),
          },
        ],
      };
    } catch (error) {
      return {
        content: [
          {
            type: "text",
            text: `Error getting tokens: ${error instanceof Error ? error.message : String(error)}`,
          },
        ],
      };
    }
  }
);

服务器初始化

async function main() {
  try {
    console.error("Starting MCP server...");
    const transport = new StdioServerTransport();
    console.error("Transport initialized, connecting to server...");
    await server.connect(transport);
    console.error("Server connection established successfully");
    // The server will keep running in this state
  } catch (error) {
    console.error("There was an error connecting to the server:", error);
    process.exit(1);
  }
}

main().catch((err) => {
  console.error("There was an error starting the server:", err);
  process.exit(1);
});

配置

Claude桌面配置

要将此 MCP 服务器与 Claude Desktop 一起使用,请将以下内容添加到您的claude_desktop_config.json文件中:

{
  "mcpServers": {
    "svm-mcp": {
      "command": "bun",
      "args": ["/path/to/svm-mcp/build/index.js"]
    }
  }
}

自定义 RPC 端点

要使用不同的 RPC 端点或连接到不同的 Solana 兼容区块链,请编辑src/index.ts中的连接 URL:

const connectionTestnet = new Connection("YOUR_TESTNET_RPC_URL");
const connectionMainnet = new Connection("YOUR_MAINNET_RPC_URL");

与 Claude 一起使用

一旦 MCP 服务器运行并连接到 Claude,您就可以使用以下命令:

检查地址余额

Can you check the balance of this SOON testnet address: <address>

获取近期交易

What is the last transaction made by <address> on SOON testnet?

检索代币持有量

What tokens does <address> hold on SOON mainnet?

致谢

Install Server
F
license - not found
A
quality
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    C
    quality
    C
    maintenance
    A Model Context Protocol server that provides Claude with comprehensive access to Solana blockchain data via the Helius API, enabling operations like checking wallet balances, retrieving blockchain information, and interacting with tokens and NFTs.
    38
    10
    14
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    A Model Context Protocol server that enables Claude AI to interact with the Solana blockchain through a standardized interface, providing tools for transactions, account queries, and wallet management.
    40
    162
    Apache 2.0
  • F
    license
    Not graded
    quality
    F
    maintenance
    A Model Context Protocol server that provides onchain tools for Claude AI, allowing it to interact with the Solana blockchain through a standardized interface for operations like managing assets, executing token operations, and retrieving network information.
    7
  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables Claude AI to interact with the Solana blockchain, allowing it to execute transactions, query accounts, manage wallets, get price predictions, trade tokens, and access various blockchain data sources.
    4

View all related MCP servers

Related MCP Connectors

  • Hosted MCP server for live Bittensor chain reads and self-custodial on-chain writes.

  • Provide AI agents and automation tools with contextual access to blockchain data including balance…

  • MCP server connecting AI agents to non-custodial staking data across 130+ networks.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rkmonarch/svm-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server