Metis RWA Research

io.github.metis-rwa由 GitHub 账号 metis-rwa 发布v0.1.1更新于 Oct 24, 2026

Research tokenized real-world assets on Solana: issuer controls, supply, liquidity, premiums

已验证Streamable HTTP可网页运行金融数据与分析

概览

AI 生成的概览

Metis RWA Research 让助手研究 Solana 上的代币化现实资产:发行方控制权、供应量、持有人、流动性与溢价。

可以做什么
按符号或类型列出并筛选内置的代币化资产注册表,也可直接用 Solana mint 地址代替符号。读取链上代币状态:铸造、冻结、扣押、暂停与转账限制等控制权,供应量与上限,持有人集中度与冻结余额。读取市场状态:逐个资金池的流动性,以及相对所追踪参考证券的溢价。运行完整观察周期,将最新读取与已存历史对比,报告检测结果、数据源冲突与置信度。浏览已发布研究:列出出版物、打开单篇查看其主张、证据与方法,了解正在调查的内容并检查数据源健康度。使用内置的尽职调查与价格提示词。
适用场景
当你需要回答 Solana 上某个代币化股票或基金由谁控制、这种控制对持有人意味着什么,或在形成判断前核查供应量、集中度、流动性与溢价时使用。托管端点适合一次性提问;本地包适合配合自己的 RPC 端点与历史做持续观察。
运行要求
可使用托管 HTTP 端点(无需密钥、只读、无会话),或通过 stdio 运行本地 npm 包(需 Node.js)。可选环境变量:SOLANA_RPC_URL(建议使用专用端点)、METIS_API_URL、METIS_ASSETS_FILE、METIS_MCP_STATE_DIR 和 METIS_MCP_TIMEOUT_MS。需要访问 Solana、DEX 场所和价格服务的网络。
安装前请注意
只读研究,但仅供参考且可能出错,不构成财务建议。METIS_ASSETS_FILE 中错误的 mint 地址会给出自信但错误的答案,务必先在链上核实。最大的代币账户是账户而非实际受益人。DexScreener 拒绝数据中心流量,在云主机上资金池数据会降级。参考价格在非交易时段可能过期,看起来像溢价。观察历史默认保存在本地。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Metis RWA Research,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.metis-rwa%2Fmcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "metis-rwa-research": {
      "type": "http",
      "url": "https://metisagent.co/mcp"
    }
  }
}

README

Metis MCP

An MCP server for researching tokenized real-world assets on Solana.

It gives an assistant twelve tools: six that read chain and market state live, and six that reach the research the Metis agent has already published. Every figure it returns comes from a fresh read, stamped with its source, the time it was taken, and a hash of the raw payload.

The point is the first question anyone should ask about a tokenized asset and almost nobody can answer quickly: who controls this token, and what happens to my position if they use that control?

Three ways to connect

As a plugin. The easiest path, and the only one that also carries the skills. In Claude Code:

/plugin marketplace add metis-rwa/mcp
/plugin install metis@metis-rwa

In Claude Desktop or on the web, open Customize, then Plugins, then add from a repository with https://github.com/metis-rwa/mcp.git. The plugin connects to the hosted endpoint and adds /metis:due-diligence, /metis:premium-watch, and a token-safety skill that runs whenever someone asks who controls a token. See plugin/README.md.

Hosted, nothing to install. The same tools are served over HTTP at https://metisagent.co/mcp:

bash
claude mcp add --transport http metis https://metisagent.co/mcp

The hosted endpoint answers observation questions from the research agent's own stored history, which goes back further than any single machine can. It reads only, needs no key, and holds no session.

Local, over stdio. Run the package when you want your own RPC endpoint, your own asset list, or history kept on your machine:

bash
npx -y @metisagent/mcp

Or clone and build:

bash
git clone https://github.com/metis-rwa/mcp.gitcd mcpnpm installnpm run buildnode dist/index.js

The server speaks MCP over stdio.

Connect the local server

Claude Code:

bash
claude mcp add metis -- npx -y @metisagent/mcp

Claude Desktop, in claude_desktop_config.json:

json
{  "mcpServers": {    "metis": {      "command": "npx",      "args": ["-y", "@metisagent/mcp"],      "env": {        "SOLANA_RPC_URL": "https://your-endpoint.example/rpc"      }    }  }}

Any other MCP client works the same way: run metis-mcp (or node dist/index.js) and speak MCP on stdin and stdout.

Tools

On-chain checks:

ToolWhat it answers
list_rwa_assetsWhich assets this server knows by symbol, and their mints
get_token_controlsCan the issuer mint, freeze, seize, pause, or gate transfers
get_token_supplyHow many tokens exist, and whether supply is capped
get_holder_concentrationWho holds the supply, and is any of it frozen
get_token_marketHow deep the liquidity is, pool by pool
get_reference_premiumIs the token trading away from the security it tracks

Research:

ToolWhat it answers
observe_assetOne full research cycle: read everything, compare against history, report detections and confidence
get_observation_historyWhat this server has recorded for the asset so far, and the trend
list_researchWhat the Metis agent has published, filtered by asset or category
get_researchThe full object behind one publication: claims, evidence, methodology, provenance
get_research_statusWhat the agent is investigating right now, and source health
check_sourcesWhich data sources are answering, and how fast

Every tool takes either a registry symbol (TSLAx) or a raw Solana mint address, so assets outside the registry work too.

The registry ships with the 72 xStocks on Solana, from AAPLx through XOMx, including the index and commodity fund shares (SPYx, QQQx, GLDx, PPLTx, TBLLx) and the private-market listings (SPCXx, VCXx). Filter it with list_rwa_assets, by substring or by asset type.

Two prompts ship with the server: rwa_due_diligence walks an asset through controls, supply, concentration, depth, and premium, and premium_watch reads a price gap against stored history. Two resources are exposed as well: metis://registry and metis://methodology.

What get_token_controls is for

A tokenized equity is a claim on something held off chain, so the issuer keeps powers a plain token does not have. Token-2022 makes those powers explicit on the mint, and this tool translates each one into what it means for a holder:

  • Permanent delegate: tokens can be moved or burned out of any account without the holder signing.
  • Freeze authority: any account can be frozen, which blocks selling and redemption.
  • Transfer hook: every transfer runs through a program that can reject it, which is how an allowlist is enforced.
  • Default account state frozen: new accounts cannot transact until the issuer thaws them, so the token is permissioned by default.
  • Pausable: transfers can be halted chain-wide.
  • Scaled UI amount: displayed balances are rescaled, which is how splits and similar corporate actions land on chain.

None of these are defects. Redeemable backed assets need most of them. They are simply facts about the asset that belong in any answer about whether it is worth its reference price.

Configuration

VariableDefaultPurpose
SOLANA_RPC_URLa public nodeSolana JSON-RPC endpoint
METIS_API_URLhttps://metisagent.coMetis research API
METIS_ASSETS_FILEnoneJSON file of extra assets to register
METIS_MCP_STATE_DIR~/.metis-mcpWhere observation history is stored. Set to off for memory only
METIS_MCP_TIMEOUT_MS20000Network timeout per request

Set SOLANA_RPC_URL to an endpoint you control if you can. Public nodes throttle the heavier reads, and get_holder_concentration is the first one they refuse.

METIS_ASSETS_FILE takes an array. Only symbol and mint are required:

json
[  {    "symbol": "AAPLx",    "name": "Apple xStock",    "mint": "<mint address>",    "decimals": 8,    "assetType": "tokenized_equity",    "referenceTicker": "AAPL",    "issuerName": "Backed Assets"  }]

Verify a mint against the chain before adding it. A wrong address returns confident, wrong answers. Everything already in the registry was read back from Solana first: the names and symbols in src/assets.ts are the ones written into each mint's own Token-2022 metadata, not labels copied from a token list. Check them again at any time:

bash
npm run verify-assets

How an observation cycle works

observe_asset reads supply and holder concentration from Solana, pooled liquidity and volume from DEX venues, and the token and reference prices from a public price service. It compares the result against the observations already stored for that asset, then reports:

  • Observations: what is true right now, each tied to the reads behind it.
  • Detections: metrics that crossed a threshold, with the baseline they crossed it against.
  • Conflicts: sources that disagree, recorded rather than averaged away.
  • Confidence: computed from source coverage, source failures, cross-source agreement, and how much history backs the comparison. A model's own stated confidence is never an input.

History lives on the machine running the server. The first call on an asset has no baseline, so only the premium threshold can fire. Call it again over time and supply, liquidity, activity, and concentration detections come alive. The hosted endpoint skips that warm-up entirely: it compares against the history the research agent has been recording every ten minutes since it went live.

Limits worth stating

  • Largest token accounts are accounts, not beneficial owners. Pools, bridges, and custodial accounts sit at the top of most lists.
  • DexScreener refuses datacenter traffic. Run the server from a laptop and it answers; run it from a cloud host and pool data falls back to the price service, which reports liquidity, 24h volume, and a holder count but no pool breakdown and no transaction counts. Tools say when a number came from the standby.
  • A republished reference price can be stale outside market hours, and that alone can look like a premium.
  • Aggregated venue data covers listed pools. Anything traded over the counter or internally is invisible here.
  • This is informational research produced by software. It is not financial advice, and it can be wrong.

Development

bash
npm installnpm run typechecknpm testnpm run inspector

Tests cover the analysis rules, the control translations, the registry, and the history store. They run against the build, so npm test builds first.

Releasing

The package publishes to npm as @metisagent/mcp, and server.json describes it for the MCP registry. The registry proves ownership by matching mcpName in package.json against the server name in server.json, so those two strings have to stay in step.

  1. Bump the version in package.json and in both places in server.json, then add a CHANGELOG.md entry.
  2. npm run verify-assets to confirm the registry still matches the chain.
  3. npm test.
  4. npm publish --access public.
  5. mcp-publisher login github then mcp-publisher publish to list the release in the MCP registry.

License

MIT

来源:README.md,提交 c3a0cb9

工具

0
SourceWeft 尚未读取此服务器的工具。

版本历史

1
  1. v0.1.1最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式必需10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分