1. Conduid
  2. Developer Tools
  3. Svm MCP
MCP server · Developer Tools

Svm MCP

MCP server: Svm MCP

Unclaimed last commit a year ago devtools
39Low

Scored 5 months ago · breakdown

About Svm MCP

Svm MCP is an MCP server published by rkmonarch in the Developer Tools category: mCP server: Svm MCP.

The repository has 3 stars and 1 forks, with the last commit a year ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.

Install

From source
git clone https://github.com/rkmonarch/svm-mcp

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Tools (6)

get-soon-mainnet-account-tokensGet the tokens of a address on the Soon mainnet

Parameters not published.

get-soon-mainnet-balanceGet the balance of a address on the Soon mainnet

Parameters not published.

get-soon-mainnet-last-transactionGet the last transaction of an address on the Soon mainnet

Parameters not published.

get-soon-testnet-account-tokensGet the tokens of a address on the Soon testnet

Parameters not published.

get-soon-testnet-balanceGet the balance of a address on the Soon testnet

Parameters not published.

get-soon-testnet-last-transactionGet the last transaction of an address on the Soon testnet

Parameters not published.

Ask AI

✦

Ask AI about Svm MCP

Powered by Claude · Grounded in docs

I know everything about Svm MCP. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 8 days ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • !License declaredNo license file. Legally you have no right to use it in a product.
  • !Tests presentNo tests found. Behaviour changes may go unnoticed between versions.
  • ✓Dependencies pinnedA lockfile pins dependency versions.
  • ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

README

SVM-MCP: SOON Model Context Protocol Server

A Model Context Protocol (MCP) server that integrates Claude AI with SOON and other SVM-based blockchains. The server provides tools for checking balances, fetching recent transactions, and viewing token holdings on SOON's testnet and mainnet, for account balances, transactions, and token holdings.

Overview

This MCP server is designed to connect Claude with the SOON ecosystem, allowing it to:

  • Query wallet balances on testnet and mainnet
  • Fetch the most recent transactions for an address
  • Check token holdings for any account

The current implementation uses the SOON's RPC endpoints, but can be easily modified to work with any Solana-compatible blockchain or custom SVM implementation.

Features

  • Get Balances: Fetch native token balances for any address on SOON testnet or mainnet
  • Get Last Transaction: Retrieve the most recent transaction for an address
  • Get Token Accounts: List all token accounts owned by an address

Prerequisites

  • Node.js (v16+)
  • NPM or Bun package manager
  • Claude Desktop (for local testing)

Installation

  1. Clone the repository:
git clone https://github.com/rkmonarch/svm-mcp
cd svm-mcp
  1. Install dependencies:
npm install
# or
bun install
  1. Build the project:
npm run build
# or
bun run build

Project Structure

The main server implementation is in 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",
  ],
});

Tool Implementations

Get Balance

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)}`,
          },
        ],
      };
    }
  }
);

Get Last Transaction

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)}`,
          },
        ],
      };
    }
  }
);

Get Token Accounts

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)}`,
          },
        ],
      };
    }
  }
);

Server Initialization

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);
});

Configuration

Claude Desktop Configuration

To use this MCP server with Claude Desktop, add the following to your claude_desktop_config.json file:

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

Customizing RPC Endpoints

To use different RPC endpoints or connect to a different Solana-compatible blockchain, edit the connection URLs in src/index.ts:

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

Usage with Claude

Once the MCP server is running and connected to Claude, you can use the following commands:

Checking an Address Balance

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

Fetching Recent Transactions

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

Retrieving Token Holdings

What tokens does <address> hold on SOON mainnet?

Acknowledgments

README fetched from the repository 8 days ago. The original is authoritative.

Questions

About Svm MCP

How do I install Svm MCP?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Svm MCP safe to use with an AI agent?

Its trust score is 39 out of 100 (low). It passes 3 of the 6 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Svm MCP still maintained?

The last commit was a year ago and 2 open issues. That's long enough that you should check whether the maintainer is responding to issues before depending on it.