
Solana Nft Mcp
io.github.p1xelapp由 GitHub 账号 p1xelapp 发布v1.18.0更新于 Oct 30, 2026
Read-only Solana NFT data for AI: ownership history, custody rules, marketplace sales and floors.
概览
为 AI 助手提供只读的 Solana NFT 数据:持有历史、托管规则、市场成交与地板价。
- 可以做什么
- 识别地址、名称与合集,并对照实时数据核验说法
- 查询合集统计、持有人、地板价、近期成交与热门榜单
- 追溯单件资产的持有历史,解析 Metaplex Core 托管规则
- 分析钱包:持仓、买卖活动、翻转、盈亏与行为标签
- 按特征、名称或编号查找挂单,并在整个系列中搜寻某一版次
- 解释市场机制,并报告各数据源的实时状态
- 适用场景
- 当助手需要当前而非凭记忆的 Solana NFT 事实时适用:来源追溯、谁仍可冻结或销毁资产、跨市场地板价、钱包交易行为,或核实关于某张卡片的说法是否属实。
- 运行要求
- 需要 Node 22 或更高版本,通过 npx 或构建后的 dist/index.js 以 stdio 在本地运行。无需账号或注册。可选 OPENSEA_API_KEY、SOLANA_RPC_URL 与 DAS_RPC_URL;未提供密钥时服务器会在首次使用时申请一个免费 OpenSea 密钥。需要访问 Solana RPC、Magic Eden 与 OpenSea 的网络。
安装
在 SourceWeft 中
- 打开 控制台中的 Solana Nft Mcp,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
solana-nft-mcp
The NFT APIs I tried return an empty ownership history for a Metaplex Core asset, and an AI reading that empty answer tells you the card has never traded. solana-nft-mcp reads the chain itself: who owned it, who can freeze it, what sold and for how much, and where the deals are. Read-only, no sign-up, nothing collected, runs on your machine.
Why
Ask an assistant about a Solana card today and it answers from memory. It will say a card "never traded", because the mainstream NFT APIs return an empty history for Metaplex Core assets while the transfers sit on chain the whole time. It will compare two floors quoted in two currencies as if they were one.
solana-nft-mcp hands the same assistant live, labelled data instead: the chain for supply, ownership, provenance and custody rules, Magic Eden without a key, and OpenSea through a free key the server issues itself. Each number comes back with its marketplace, its currency, its read time, and what the source could not see.
[Your AI app talks to solana-nft-mcp over stdio; the server reads the Solana chain, the asset index, Magic Eden and OpenSea]The server runs on your machine and your AI app starts it. There is no hosted service and no
account between you and the data. The picture is generated from the running server, so the
counts cannot drift from the code: npm test fails if they do.
Install
Node 22 or newer. Two ways to run it.
From npm, no clone. Wherever a client asks for a command, give it npx with the arguments
-y solana-nft-mcp. The first start downloads the package; later starts reuse it.
From source. Build once, then point the client at dist/index.js:
Claude Code
Claude Desktop. Settings -> Developer -> Edit Config, add the block below, then quit the
app fully and reopen it. Or install the .mcpb bundle from the latest release by dragging it
onto Settings -> Extensions.
Other clients. Tested: Claude Desktop, Claude Code, Codex CLI 0.153.4
(codex exec -c 'mcp_servers.solana-nft.command="node"' -c 'mcp_servers.solana-nft.args=["/absolute/path/to/dist/index.js"]').
Cursor, Windsurf, Gemini CLI, Zed, Cline and VS Code take the same command / args pair in
their own config; the server is plain stdio with no client-specific code, but those have not
been tested here. ChatGPT on the web and Grok cannot run a local process.
The server speaks MCP protocol revision 2025-11-25 through the official TypeScript SDK v1. A
client that offers the newer 2026-07-28 revision gets 2025-11-25 back, which current clients
accept; one that refuses anything older cannot use this server yet.
Did it work? Your app lists the tools near the message box (Claude Code: /mcp). You should
see 21, starting with identify. If none: the path must be absolute and end in dist/index.js,
npm run build must have run, and the app must be fully quit and reopened.
OpenSea is on without any setup. The first question that needs it makes the server ask
OpenSea for a free agent key, stored at ~/.solana-nft-mcp/opensea-key.json and renewed before it
expires. The key is never logged or printed into an answer. A collection's OpenSea slug is found
from its on-chain address, or by name and then proved against that address; pass openseaSlug
to override. Options, set in the config's env block (clients launch the server with a clean
environment):
OPENSEA_API_KEY- your own key, overrides the self-issued one.SOLANA_NFT_MCP_NO_AUTO_KEYS=1- never request a key; OpenSea is off unless you set one.SOLANA_RPC_URL,DAS_RPC_URL- a private endpoint, neither required. A key in the URL is registered and redacted from every answer (details in docs/FAQ.md).SOLANA_NFT_MCP_NO_UPDATE_CHECK=1- skip the one startup request to npm for a newer version.
Ask it anything
Nobody types a tool name. These are asked in plain words and the assistant picks the calls.
- Who has owned this card since it was minted, with dates and the marketplaces involved?
- Is it true this card has never traded?
- Can the project still freeze, move or burn what is in my wallet?
- What is in wallet 7HHs3..., and does that wallet flip or hold?
- What is the cheapest Legendary listing in that DC collection right now?
- Any Superman or Batman DC comic #1 or #100 for sale, and are any close to floor?
- What did Shohei Ohtani cards sell for this week, and how many changed hands?
- Are the Magic Eden and OpenSea floors for this collection even comparable?
- What would it take to build a sales bot on this, and where would it fail quietly?
A collection name, a player name, a card number or a trait is enough to start. Names resolve against a bundled snapshot of the Magic Eden directory, against OpenSea's Solana index, and against the marketplace itself, and a fuzzy match is offered as a candidate with the mismatch stated, never presented as the answer. Long answers are sized to arrive whole: a client that caps a tool result gets fewer per-row details before it gets fewer rows, and the answer says what it left out.
What it reads
No account, no sign-in, no telemetry, no log of your questions, and no signing code anywhere in
the repository; every tool declares readOnlyHint. What leaves the machine: the public address,
symbol or name you asked about, sent to the source that can answer it; one startup request to
npm for the latest version number; one request to OpenSea for a free key, the first time a
question needs it. One file is written, the key file above, at permissions 600. Nothing else
touches disk. To remove everything: uninstall or delete the clone, then delete
~/.solana-nft-mcp/.
Tools
21 tools. Names are frozen: agents reference them in prompts, and a rename breaks integrations without raising an error.
Three prompts: getting_started, collection_report, wallet_report. No MCP resources, on
purpose: everything they would carry is reachable by a tool the assistant calls itself.
Trust and limits
- Buying, selling, listing and signing are absent. No code exists for them.
- Provenance and trust decoding cover Metaplex Core only. Legacy SPL and compressed NFTs are reported as named gaps, never as empty lists. Holdings and activity cover both.
- Magic Eden and OpenSea only. Tensor has no self-serve keys; Rarible's Solana coverage is unconfirmed. Both are catalogued with the condition that would add them.
- Every money figure names its currency and the API it came from, on the summary and on every
priced row, and counts keep their coverage flags beside them (
truncated,stale,historyComplete). A program should refuse to act on a row whose flag says the read was partial. - Two error surfaces. Input that fails a tool's schema is refused before the handler runs:
isError: true, nostructuredContent. Every failure inside a handler carriesstructuredContent.error, a stable category (not-found,wrong-kind,escrow,source-unsupported,bad-input,upstream-unavailable,upstream-rate-limit,error). - No valuations and no currency conversion. Solana only.
Full detail: docs/TRUST-AND-LIMITS.md.
Security
Minting is permissionless, so a collection name is attacker-controlled text. Every name and every field from a chain or a marketplace is checked against the shape it claims to have before a model sees it, and every credential this process has sent is redacted from every answer. Covered by the offline suite. Reporting: SECURITY.md.
Development
CI runs a full-history secrets scan on every push to every branch; the offline suite, lint, the
tarball check and npm audit on main, pull requests and release tags; and the live check weekly.
Docs
- Under the hood: why it exists, how it works, what was tested
- Every data source, tiered
- Questions people ask, and which ones it can answer
- Fifteen ways people use it and things people build with it
- What can change under this server, FAQ, Contributing
About
Built and maintained by P1xel (p1xel.app, @P1xelCollector), a long-time Solana collector. The story of why it exists is in docs/DEEP-DIVE.md.
Running on the same decoding
CandyScan tracks the Candy Digital collections on Solana: supply, holders, migrations and sales, kept current. It is where the Core decoding was written first, and this repository is the keyless half of that pipeline. Each project shaped the other.
Shipped something on top of solana-nft-mcp? Open an issue and it goes here.
Independent project, not affiliated with the Solana Foundation. SOLANA and SOL are trademarks of the Solana Foundation. They appear in this project's name and documentation for one reason only: to say which chain the server reads. Nothing here is endorsed, sponsored or reviewed by the Solana Foundation, and no affiliation is claimed or implied.
License
MIT. See LICENSE.
来源:README.md,提交 c2a348d
工具
0版本历史
2- v1.18.0最新Oct 8, 2026
- v1.17.2Sep 22, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分
