ClaudeCodeMod

All shelves / MCP servers

three.ws Solana Memo Media

io.github.nirholas/solana-memo-media-mcp · 231 stars · JavaScript · Apache-2.0

MCP server Extract validated image data URIs from Solana SPL Memos and return them inline to MCP clients.

Install

The repo has no one-line install. Follow its README.

Published as

  • npm@three-ws/solana-memo-media-mcpstdio

From the server's entry in the official MCP Registry.

Open the repo

Configuration

NameSet asWhat it is
SOLANA_RPC_URLSOptionalEnv varOptional comma-separated Solana JSON-RPC failover endpoints. Public mainnet endpoints are used when omitted.
SOLANA_RPC_URLOptionalEnv varOptional primary Solana JSON-RPC endpoint.

Files

packages/solana-memo-media-mcp/README.md

@three-ws/solana-memo-media-mcp

Read and display image data URIs embedded in Solana SPL Memo instructions. Instead of copying a data:image/...;base64,... memo payload into a browser converter, give an AI assistant the transaction signature and receive the validated image inline.

This is a keyless, read-only stdio MCP server. It never signs, sends, uploads, caches, or modifies chain data.

Install

claude mcp add solana-memo-media -- npx -y @three-ws/solana-memo-media-mcp

For Cursor, Claude Desktop, or another stdio MCP client:

{
  "mcpServers": {
    "solana-memo-media": {
      "command": "npx",
      "args": ["-y", "@three-ws/solana-memo-media-mcp"]
    }
  }
}

Tools

Tool Purpose
extract_solana_memo_media Fetch one legacy, v0, or v1 transaction and return every supported image in its top-level and inner Memo instructions, with signer, slot, and version.
find_solana_memo_media Scan up to 1,000 recent signatures for an address (pageable with before). Only signatures whose memo summary holds a data URI are fetched, so a scan costs a handful of RPC calls.
decode_solana_memo_data_uri Decode one already-copied data URI locally. No network call.
get_solana_memo_media_status Show the local policy, recognized memo programs, and RPC failover hosts. No network call.

Recognized memo programs: SPL Memo v1 (Memo1UhkJRfHyvLMcVLMbLJYfW2tfU8G8H4PqvV6v8), SPL Memo v2 (MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr), and the newer program carried by version 1 transactions (Memo4c2pN8afCj432Lb7RMVKi9PbQnnW7ewFFaV3oAH).

Example

Ask an MCP client: "Show any image embedded in Solana transaction <signature>." It calls extract_solana_memo_media with:

{ "signature": "<base58 Solana transaction signature>" }

The response is a JSON record plus one MCP image content block per asset. The record carries the signature, fee payer, slot, transaction version, and for each asset its MIME type, byte length, SHA-256, and dimensions. The raw data URI is intentionally not echoed into text output.

Use it from your own code:

import { decodeDataUri } from '@three-ws/solana-memo-media-mcp/src/lib/media.js';

const media = decodeDataUri('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAFgwJ/lwV8YQAAAABJRU5ErkJggg==');
console.log(media.mimeType, media.byteLength, media.dimensions, media.sha256);

Full guide: docs/mcp-solana-memo-media.md.

Safety and provenance

An SPL Memo is arbitrary signed text. A data URI is only a convention inside that text, not a Solana media standard and not an endorsement by a wallet, explorer, or this package.

  • Only image/png, image/jpeg, image/webp, and image/gif are accepted.
  • SVG and all executable or document media are rejected.
  • Decoded content is capped at 262,144 bytes.
  • The declared MIME type must match PNG, JPEG, WebP, or GIF file signatures before an image is returned.
  • The server reports a SHA-256 digest so callers can preserve an exact reference.
  • Verify the transaction signer, program, and surrounding transaction context independently before trusting what an image means.

RPC configuration

The server tries SOLANA_RPC_URLS, then SOLANA_RPC_URL, then public Solana mainnet endpoints. You do not need a key for normal use.

Variable Required Meaning
SOLANA_RPC_URLS no Comma-separated ordered JSON-RPC failover endpoints.
SOLANA_RPC_URL no One primary JSON-RPC endpoint.

Development

npm test --prefix packages/solana-memo-media-mcp
npx -y @modelcontextprotocol/inspector node packages/solana-memo-media-mcp/src/index.js

License: Apache-2.0.

Facts

Kind
MCP server
Repo
nirholas/three.ws
Group
Uncategorized
Stars
231
License
Apache-2.0
Language
JavaScript
Last push
2026-10-12
Forks
63
MCP Registry
io.github.nirholas/solana-memo-media-mcp
Homepage
three.ws
Topics
animation, avatar, gltf, llm, mcp, webgl, 3d-generation, ai-agents, digital-human, generative-ai, glb, image-to-3d, mcp-server, model-context-protocol, solana, text-to-3d, threejs, web-components, webxr, x402

More on this shelf

  1. 1REAio.github.morluto/reaReverse engineer anything from your terminal or agent with one CLI and MCP server.125.3k
  2. 2com.browser-use/browser-usecom.browser-use/browser-useControl a real Chrome browser to complete any task: fill forms, extract data, book flights.117.7k
  3. 3World Monitorapp.worldmonitor/mcpLive markets, conflicts, country risk, chokepoints, energy, and China decision signals. 93 tools.88.3k
  4. 4Scrapling MCP Serverd4vinci/scrapling🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scraplingdev86.9k
  5. 5Everythingmodelcontextprotocol/serversThis MCP server attempts to exercise all the features of the MCP protocol. It is not intended to be a useful server, but rather a test server for builders of MCP clients. It implements prompts, tools, resources, sampling, and more to showcase MCP capabilities.85.8k
  6. 6Fetchmodelcontextprotocol/serversA Model Context Protocol server that provides web content fetching capabilities. This server enables LLMs to retrieve and process content from web pages, converting HTML to markdown for easier consumption.85.8k