mcpField
S
Solana MCP

Solana MCP

Local
github.com/Cubie-AIFinance5Updated 77w ago

About Solana MCP

Solana MCP is an MCP server for Solana with a companion client, for developers adding Solana capabilities to MCP workflows. Its example includes a token-holder lookup tool.

Key features

  1. 01Provides a Solana MCP server
  2. 02Provides a Solana MCP client
  3. 03Example includes a token-holder lookup tool

Use cases

  1. 01Connect Solana to an MCP workflow
  2. 02Look up token holders using the example

MCP support

The project provides a Solana MCP server and client; its example shows a tool named getTokenHolders.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

Solana MCP

A solana MCP server.

Cubie

Table of Contents

Installation

To install and use the @cubie-ai/solana-mcp package use the following command:

npm i @cubie-ai/solana-mcp

Documentation

Read the docs: DOCUMENTATION

Getting Started

Creating a Server
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { solanaMCPServer } from "../../dist";
import { SOLANA_RPC_URL } from "./contants";

async function main() {
  await solanaMCPServer({
    transport: new StdioServerTransport(),
    config: {
      solanaRpcUrl: SOLANA_RPC_URL,
      commitment: "confirmed",
    },
  });
}

main();
Creating a client
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
import { solanaMCPClient } from "../../dist";

const CUBIE_MINT = "2MH8ga3TuLvuvX2GUtVRS2BS8B9ujZo3bj5QeAkMpump";
async function main() {
  const transport = new StdioClientTransport({
    args: ["dist/server.js"],
    command: "node",
  });

  const client = await solanaMCPClient({
    name: "Solana MCP Client",
    version: "1.0.0",
    transport: transport,
  });

  const tools = await client.listTools();
  console.dir(tools, { depth: null });

  const supply = await client.callTool({
    name: "getTokenSupply",
    arguments: {
      mint: CUBIE_MINT,
    },
  });
  console.dir(supply, { depth: null });
}

main();

Example

Running the example will produce the following output

{
  tools: [
    {
      name: "getTokenHolders",
      description: "Get token holders for a specific mint address",
      inputSchema: {
        type: "object",
        properties: { mint: { type: "string" } },
        required: ["mint"],
        additionalProperties: false,
        $schema: "http://json-schema.org/draft-07/schema#",
      },
    },
    {
      name: "getTokenSupply",
      description: "Get the total supply of a specific token",
      inputSchema: {
        type: "object",
        properties: { mint: { type: "string" } },
        required: ["mint"],
        additionalProperties: false,
        $schema: "http://json-schema.org/draft-07/schema#",
      },
    },
    {
      name: "getTokenProgramByMintAddress",
      description: "Get the token program by mint address",
      inputSchema: {
        type: "object",
        properties: { mint: { type: "string" } },
        required: ["mint"],
        additionalProperties: false,
        $schema: "http://json-schema.org/draft-07/schema#",
      },
    },
    {
      name: "getAddressBalance",
      description: "Get the balance of a specific address",
      inputSchema: {
        type: "object",
        properties: { address: { type: "string" } },
        required: ["address"],
        additionalProperties: false,
        $schema: "http://json-schema.org/draft-07/schema#",
      },
    },
    {
      name: "getAddressHoldings",
      description: "Get the holdings of a specific address",
      inputSchema: {
        type: "object",
        properties: { address: { type: "string" } },
        required: ["address"],
        additionalProperties: false,
        $schema: "http://json-schema.org/draft-07/schema#",
      },
    },
    {
      name: "getSignaturesForAddress",
      description: "Get the signatures for a specific address",
      inputSchema: {
        type: "object",
        properties: { address: { type: "string" } },
        required: ["address"],
        additionalProperties: false,
        $schema: "http://json-schema.org/draft-07/schema#",
      },
    },
    {
      name: "getJupiterQuote",
      description: "Get a quote from Jupiter for a specific swap",
      inputSchema: {
        type: "object",
        properties: {
          inputMint: { type: "string" },
          outputMint: { type: "string" },
          amount: { type: "string" },
          slippage: { type: "string" },
        },
        required: ["inputMint", "outputMint", "amount"],
        additionalProperties: false,
        $schema: "http://json-schema.org/draft-07/schema#",
      },
    },
    {
      name: "getPrice",
      description: "Get the price of a specific token",
      inputSchema: {
        type: "object",
        properties: {
          inputMint: { type: "string" },
          outputMint: {
            type: "string",
            default: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
          },
        },
        required: ["inputMint"],
        additionalProperties: false,
        $schema: "http://json-schema.org/draft-07/schema#",
      },
    },
  ];
}
{
  content: [
    {
      type: "text",
      text: '{"amount":"999725949874932","decimals":6,"uiAmount":999725949.874932,"uiAmountString":"999725949.874932"}',
    },
  ];
}

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.