Solana MCP by Vybe
Solana MCP developer toolkit: wallets, trades, markets, PnL, transfers, onchain, swaps & API tools.
作者提供的说明(英文原文)
Rug check tokens on Base, Ethereum, Arbitrum, Optimism, Polygon, Solana: 0-100 risk score + reasons
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
X402_PRIVATE_KEY, TOKEN_SAFETY_MAX_USD标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"token-safety-check": {
"command": "npx",
"args": [
"-y",
"token-safety-check"
],
"env": {
"X402_PRIVATE_KEY": "your-value",
"TOKEN_SAFETY_MAX_USD": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add token-safety-check --env X402_PRIVATE_KEY=your-value --env TOKEN_SAFETY_MAX_USD=your-value -- npx -y token-safety-check运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"token-safety-check": {
"command": "npx",
"args": [
"-y",
"token-safety-check"
],
"env": {
"X402_PRIVATE_KEY": "your-value",
"TOKEN_SAFETY_MAX_USD": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"token-safety-check": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"token-safety-check"
],
"env": {
"X402_PRIVATE_KEY": "your-value",
"TOKEN_SAFETY_MAX_USD": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
TOKEN_SAFETY_MAX_USD env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
依据这个服务器的连接方式和各应用自己的文档,检查于 2026年11月10日。
在你的电脑上运行,适用于
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月10日
注册名称已通过 GitHub 账户 lx1112 验证,该账户拥有此仓库
代码最后更新于16天前
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 2 项适用的基础检查中通过了 2 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:X402_PRIVATE_KEY
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于16天前,最新版本(0.4.1)于15天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Solana MCP by Vybe, Solana MCP by Vybe, Oracle3 prediction-market arbitrage checks
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Solana MCP developer toolkit: wallets, trades, markets, PnL, transfers, onchain, swaps & API tools.
Solana MCP for wallets, trades, markets, PnL, transfers, onchain data, signable swaps and API tools.
Kalshi and Polymarket data, venue fees, no-arbitrage checks and paper execution for AI agents.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Is this token safe? A rug check for any token on Base, Ethereum, Arbitrum, Optimism, Polygon or Solana, for AI agents and scripts. Each check returns:
since and the next check tells you what changed: new risks, authority changes, liquidity or price moves. That makes it easy to monitor tokens on a schedule.A verdict call turns the same facts into a grade (CLEAN, MID, SKETCHY or RUGGY), a one-liner, a short take and a link to a share card, for chat replies and quests.
A watchlist call re-checks up to 5 tokens at once for the same $0.01, returning a compact entry per token and one-line alerts for whatever changed since your last call.
Checks, verdicts and watchlist calls cost $0.01 each in USDC on Base, paid automatically with x402 from a wallet you control. There's no account or API key. Errors and invalid input are never charged, and a spending cap stops any call priced above your limit (default $0.05).
The score is rules-based and is not investment advice. Powers count for less on tokens with deep liquidity, where they're usually a large issuer's compliance controls (USDC can freeze and mint, for example).
Create a new wallet just for this and send it a little USDC on Base: $1 covers 100 checks. Then add to your MCP config (for Claude Desktop, that's claude_desktop_config.json):
{
"mcpServers": { "token-safety-check": { "command": "npx", "args": ["-y", "token-safety-check"], "env": { "X402_PRIVATE_KEY": "0x " } } } }
The server has three tools:
check_token_safety (address, optional chain and since): the full check for one token.token_verdict (address, optional chain): a grade, one-liner, short take and share-card link.watch_tokens (tokens: up to 5 of { address, chain?, since? }): re-checks them all in one paid call and, given each token's earlier fingerprint, reports what changed with one-line alerts.Optional environment variables:
TOKEN_SAFETY_MAX_USD: per-check spending cap, default 0.05.TOKEN_SAFETY_ENDPOINT: point at another deployment.npm install token-safety-check
import { createTokenSafetyClient } from "token-safety-check";
const client = createTokenSafetyClient({ privateKey: process.env.X402_PRIVATE_KEY as 0x${string} });
const first = await client.checkToken({ chain: "base", address: "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed" }); console.log(first.risk.score, first.risk.level, first.risk.summary); // 15 low Low risk: the owner can pause all transfers; ownership is not renounced.
// Later: what changed since then? const later = await client.checkToken({ address: first.address, chain: "base", since: first.watch.fingerprint }); if (later.watch.changes?.anythingChanged) console.log(later.watch.changes);
const v = await client.verdict({ address: "0xe468f13905669748bf312611b9ebcc8ccc6db5d9" });
console.log(v.grade, v.oneLiner); // SKETCHY Liquidity: two coins and a prayer console.log(v.take, v.card); // "$KTI: 60/100 risk. ..." and a signed share-card link // Pass requestKey (8-128 letters, digits or _.:-) and a retry with the same key is never charged twice.
let list = [
{ chain: "base", address: "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed" }, { chain: "solana", address: "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN" }, ] as const; let fingerprints: (string | undefined)[] = [];
// Every hour (or however often): one $0.01 call for the whole list. const w = await client.watchlist(list.map((t, i) => ({ ...t, since: fingerprints[i] }))); for (const alert of w.alerts) console.log(alert); // e.g. "PEPINA (eth): risk 0 -> 30 (medium); liquidity -99.99%" fingerprints = w.tokens.map((t) => t.fingerprint);
token-safety-check/ai gives three ready tools (checkTokenSafety, tokenVerdict, watchTokens), plain { description, inputSchema, execute } objects that both take as tools:
import { generateText } from "ai";
import { createTokenSafetyClient } from "token-safety-check"; import { tokenSafetyTools } from "token-safety-check/ai";
const tools = tokenSafetyTools(createTokenSafetyClient({ privateKey: process.env.X402_PRIVATE_KEY as 0x${string} })); const { text } = await generateText({ model, tools, prompt: "Is 0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed on Base safe to buy?" });
token-safety-check/eliza is an ElizaOS 1.x plugin with one action, CHECK_TOKEN_SAFETY. When a message names a token address ("is 0x… on Base safe?", "rug check "), the agent replies with the verdict and a share-card link.
import { tokenSafetyPlugin } from "token-safety-check/eliza";
export const character = { name: "trader", plugins: [tokenSafetyPlugin], settings: { secrets: { TOKEN_SAFETY_PRIVATE_KEY: process.env.TOKEN_SAFETY_PRIVATE_KEY } }, };
Settings: TOKEN_SAFETY_PRIVATE_KEY (a dedicated wallet with a little USDC on Base; falls back to X402_PRIVATE_KEY), optional TOKEN_SAFETY_MAX_USD (default 0.05) and TOKEN_SAFETY_ENDPOINT.
import { customActionProvider } from "@coinbase/agentkit";
import { z } from "zod"; import { createTokenSafetyClient } from "token-safety-check";
const safety = createTokenSafetyClient({ privateKey: process.env.X402_PRIVATE_KEY as 0x${string} });
export const tokenSafety = customActionProvider({ name: "check_token_safety", description: "Rug check a token on Base, Ethereum, Arbitrum, Optimism, Polygon or Solana: 0-100 risk score with reasons.", schema: z.object({ address: z.string().describe("Token contract or Solana mint address"), chain: z.enum(["base", "eth", "arbitrum", "optimism", "polygon", "solana"]).optional(), }), invoke: async (args) => JSON.stringify(await safety.checkToken(args)), }); // Add tokenSafety to the actionProviders you pass to AgentKit.from(...).
import { tool } from "@langchain/core/tools";
import { z } from "zod"; import { createTokenSafetyClient } from "token-safety-check";
const safety = createTokenSafetyClient({ privateKey: process.env.X402_PRIVATE_KEY as 0x${string} });
export const checkTokenSafety = tool(async (args) => JSON.stringify(await safety.checkToken(args)), { name: "check_token_safety", description: "Rug check a token on Base, Ethereum, Arbitrum, Optimism, Polygon or Solana: 0-100 risk score with reasons.", schema: z.object({ address: z.string(), chain: z.enum(["base", "eth", "arbitrum", "optimism", "polygon", "solana"]).optional(), }), });
{
"address": "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed", "chain": "base", "name": "Degen", "symbol": "DEGEN", "risk": { "score": 15, "level": "low", "reasons": [ { "code": "can-pause", "points": 10, "text": "The owner can pause all transfers." }, { "code": "owner-not-renounced", "points": 5, "text": "Ownership is not renounced." } ], "summary": "Low risk: the owner can pause all transfers; ownership is not renounced." }, "market": { "dex": "uniswap-v3", "pairedWith": "WETH", "priceUsd": 0.000963, "quoteSideLiquidityUsd": 134000 }, "watch": { "fingerprint": "eyJzIjoxNSwi…", "changes": null } }
Both are plain x402 endpoints, so any x402 client can call them directly: GET https://onchaincheck.dev/token?chain= &address= [&since= ] and GET https://onchaincheck.dev/watchlist?tokens= : ,...[&since= ,...]. It's also listed in the x402 Bazaar.
maxUsdPerCheck / TOKEN_SAFETY_MAX_USD is refused.MIT licensed.