three.ws Portfolio

io.github.nirholas由 GitHub 账号 nirholas 发布v0.1.2更新于 Nov 1, 2026

An agent's trading state — portfolio value, PnL, live balances, trade feed, and signed transfers.

发布方自己的服务:PortfolioFit

已验证STDIO仅桌面数据库金融

概览

AI 生成的概览

本地 MCP 服务器,让助手读取 three.ws 投资组合、盈亏、成交动态和 Solana 余额,并签名发送真实的 SOL 或 SPL 转账。

可以做什么
  • 读取所拥有代理钱包的持仓与美元总值,可选生成历史快照并按钱包拆分
  • 查看组合价值随时间的变化,并深入查看单个代币的持仓、实时行情与价格历史
  • 浏览平台范围的已平仓交易与已实现盈亏,可按币种、时间窗口和最低收益率筛选
  • 查询任意 Solana 地址的链上 SOL 与 SPL 代币实时余额
  • 从配置的钱包签名并广播 Solana 主网 SOL 或 SPL 代币转账
适用场景
适合需要跟踪助手自身在 three.ws 上的交易状态(当前价值、历史表现、已平仓结果)或查询 Solana 钱包余额的场景。只有在你确实希望助手能转出真实资金时才需要添加,因为这是唯一的写入工具。
运行要求
需要 Node.js 20 或更高版本,可通过 npx 或 npm 安装运行。需要访问 three.ws API 和 Solana RPC 的网络连接。账户级读取需要 THREE_WS_SESSION(即 __Host-sid cookie 的值);SOLANA_SECRET_KEY 仅 send_transfer 需要。可选配置:SOLANA_RPC_URL、THREE_WS_BASE、THREE_WS_TIMEOUT_MS、MAX_SOL_PER_TX、RECIPIENT_ALLOWLIST、REQUIRE_CONFIRM。
安装前请注意
send_transfer 会在 Solana 主网上转移真实且不可撤销的资金,是唯一的写入工具;SOLANA_SECRET_KEY 泄露或被注入参数都可能花掉钱包资金。建议保持 REQUIRE_CONFIRM 开启,设置 MAX_SOL_PER_TX 与 RECIPIENT_ALLOWLIST,并把 SOLANA_SECRET_KEY 和 THREE_WS_SESSION 当作密码保管。遇到 tx_unconfirmed 超时,先核对签名再重发,以免重复支付。读取操作会把钱包与会话数据发送给 three.ws API。

安装

在 SourceWeft 中

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

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[three.ws]

@three-ws/portfolio-mcp

An AI agent's own trading state over MCP — portfolio value, PnL, live balances, the public trade feed, and one real write: a signed on-chain Solana transfer.

[npm] [license] [node] [MCP Registry] [three.ws]


A Model Context Protocol server that gives an AI agent programmatic access to its own trading state over stdio: what it holds, how that value moves over time, a single token's position with live market data, the platform-wide feed of closed trades and their realized PnL, live on-chain balances for any wallet — and one real write, a signed Solana transfer of SOL or any SPL token.

Reads hit the live three.ws API and Solana RPC — nothing is mocked. The account-scoped reads run against the agent wallets you own (resolved from your three.ws session). The one write, send_transfer, signs locally with your own key and moves real funds on mainnet.

Install

bash
npm install @three-ws/portfolio-mcp

Or run with npx (no install):

bash
npx @three-ws/portfolio-mcp

Quick start

Claude Code, one line:

bash
claude mcp add portfolio -- npx -y @three-ws/portfolio-mcp

Claude Desktop / Cursor (claude_desktop_config.json or mcp.json):

json
{	"mcpServers": {		"portfolio": {			"command": "npx",			"args": ["-y", "@three-ws/portfolio-mcp"],			"env": {				"THREE_WS_SESSION": "<your __Host-sid cookie>",				"SOLANA_SECRET_KEY": "<base58 secret of the sending wallet>"			}		}	}}

THREE_WS_SESSION is only needed for the account-scoped reads; SOLANA_SECRET_KEY is only needed for send_transfer. The trade feed and on-chain balance reads work with no configuration at all.

Inspect the surface with the MCP Inspector:

bash
npx -y @modelcontextprotocol/inspector npx @three-ws/portfolio-mcp

Tools

ToolTypeWhat it does
get_portfolio_summaryread · sessionLive holdings + USD value across every agent wallet you own, with a per-wallet breakdown. Optional snapshot.
get_portfolio_historyread · sessionYour total portfolio USD value over time, from stored snapshots — the performance chart.
get_portfolio_assetread · sessionOne token deep-dive: which wallets hold it, your total amount/USD, plus live market data and a price-history chart.
get_trades_feedread · publicThe platform-wide feed of closed positions and their realized PnL — newest exit first, filterable by coin.
get_wallet_balancesread · publicLive on-chain SOL + SPL (incl. Token-2022) balances for any Solana address, straight from the RPC.
send_transferwrite · destructiveSign and broadcast a real, irreversible Solana mainnet transfer of SOL or any SPL token from your own wallet.

Everything reads live state — balances, feeds, and broadcasts all move between calls — so no tool is idempotent. send_transfer is the only tool that mutates anything.

Input parameters

get_portfolio_summary — snapshot (bool, default false — also persist a history point).

get_portfolio_history — days (1–365, default 90).

get_portfolio_asset: chain (solana | evm, required), id (native or the base58 mint / 0x contract, required), days (1 to 365, default 30), chain_id (optional EVM chain id: 8453 Base, 1 Ethereum, 42161 Arbitrum, 10 Optimism, 137 Polygon, 56 BNB, and the other chains the platform indexes). Leave chain_id off and the API prices the contract on whatever chain your wallets hold it on, defaulting to Base; set it when the same address exists on more than one chain.

get_trades_feed — network (mainnet | devnet, default mainnet), window (1h | 6h | 24h | 7d | 30d | all, default 24h), min_pnl_pct (default 10), limit (1–80, default 40), cursor (ISO timestamp for pagination), mint (filter to one coin).

get_wallet_balances — address (base58, required), include_tokens (bool, default true).

send_transfer — recipient (base58, required), amount (decimal string, required), mint (base58 SPL mint; omit / native for SOL), secret (base58, overrides SOLANA_SECRET_KEY), priorityMicroLamports (0–50,000,000), confirm (must be true to execute).

Realized vs. live value

Two different questions, two different tools:

  • "What am I worth right now?" → get_portfolio_summary / get_portfolio_asset — live holdings priced in USD.
  • "How have my closed trades done?" → get_trades_feed — realized PnL per closed position (entry/exit in SOL, profit %, multiple, hold time).

The write tool — send_transfer

send_transfer broadcasts a real, irreversible transaction on Solana mainnet and moves funds out of the signing wallet. It signs locally with the per-call secret or SOLANA_SECRET_KEY — the three.ws API never holds your key. Guardrails:

  • confirm: true required while REQUIRE_CONFIRM is on (the default) — the first call without it returns a refusal, not a broadcast.
  • MAX_SOL_PER_TX caps native SOL sends (default 0.5 SOL).
  • RECIPIENT_ALLOWLIST, when set, restricts the destination to a known set.
  • The mint is runtime input — pass the $THREE mint or any SPL token you hold. No mint is hardcoded.

For an SPL transfer it reads the mint's decimals on-chain, verifies your balance, and auto-creates the recipient's associated token account when missing. On a confirmation timeout it returns tx_unconfirmed with the signature rather than silently retrying — check Solscan before resending to avoid a double-spend.

Requirements

  • Node.js >= 20.
  • Network access to https://three.ws (or your own THREE_WS_BASE) and a Solana RPC.

Environment variables

VariableRequiredDefault
THREE_WS_BASEnohttps://three.ws
THREE_WS_TIMEOUT_MSno20000
THREE_WS_SESSIONfor account-scoped reads—
SOLANA_RPC_URLnohttps://api.mainnet-beta.solana.com
SOLANA_SECRET_KEYfor send_transfer—
MAX_SOL_PER_TXno0.5
RECIPIENT_ALLOWLISTno— (any valid pubkey allowed)
REQUIRE_CONFIRMnotrue

THREE_WS_SESSION is the value of the __Host-sid cookie from a signed-in three.ws browser session. Treat it — and SOLANA_SECRET_KEY — like a password.

Links


Part of the three.ws SDK suite — 3D AI agents, on-chain identity, and agent payments.
Website · Changelog · GitHub

来源:packages/portfolio-mcp/README.md,提交 c8f2cde

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

2
  1. v0.1.2最新Oct 10, 2026
  2. v0.1.1Sep 16, 2026

评分

已满足适用检查项的 50%

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

  • 近 30 天内可连通25 分

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

  • 已声明认证方式10 分

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

  • 已列出工具15 分

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

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

其他 Portfolio 集成