PluginBench
MCP Server

three.ws Portfolio MCP Server

io.github.nirholas/portfolio-mcp

What is the three.ws Portfolio MCP server?

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

How to install three.ws Portfolio

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • THREE_WS_BASE

    Base URL of the three.ws API that serves the portfolio + trades endpoints. Override only when self-hosting or targeting a preview deployment.

  • THREE_WS_TIMEOUT_MS

    Per-request timeout in milliseconds for the live three.ws API reads.

  • THREE_WS_SESSION
    secret

    Your three.ws session token (the value of the `__Host-sid` cookie from a signed-in browser). Required for the account-scoped reads — get_portfolio_summary, get_portfolio_history, get_portfolio_asset — which return data for the agents YOU own. The public trade feed and on-chain balance reads do not need it. Treat like a password.

  • SOLANA_RPC_URL

    Solana mainnet RPC endpoint used by get_wallet_balances and send_transfer. Defaults to https://api.mainnet-beta.solana.com — bring your own (Helius / QuickNode / Triton) for production traffic.

  • SOLANA_SECRET_KEY
    required
    secret

    Base58-encoded Solana secret key for the wallet that send_transfer signs from. REQUIRED for send_transfer (the only write tool); a per-call `secret` arg overrides it. Not needed for any read tool. Treat like cash.

  • MAX_SOL_PER_TX

    Per-transaction spend cap in SOL for native SOL transfers via send_transfer. Bounds the blast radius of a leaked key or an injected argument.

  • RECIPIENT_ALLOWLIST

    Optional comma-separated base58 pubkeys. When set, send_transfer refuses any recipient not in the list.

  • REQUIRE_CONFIRM

    When on (default), send_transfer refuses until re-issued with confirm:true. Set 0/false to disable the gate.

Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "portfolio-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@three-ws/portfolio-mcp"
      ],
      "env": {
        "THREE_WS_BASE": "<YOUR_THREE_WS_BASE>",
        "THREE_WS_TIMEOUT_MS": "<YOUR_THREE_WS_TIMEOUT_MS>",
        "THREE_WS_SESSION": "<YOUR_THREE_WS_SESSION>",
        "SOLANA_RPC_URL": "<YOUR_SOLANA_RPC_URL>",
        "SOLANA_SECRET_KEY": "<YOUR_SOLANA_SECRET_KEY>",
        "MAX_SOL_PER_TX": "<YOUR_MAX_SOL_PER_TX>",
        "RECIPIENT_ALLOWLIST": "<YOUR_RECIPIENT_ALLOWLIST>",
        "REQUIRE_CONFIRM": "<YOUR_REQUIRE_CONFIRM>"
      }
    }
  }
}
Cursor
~/.cursor/mcp.json
{
  "mcpServers": {
    "portfolio-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@three-ws/portfolio-mcp"
      ],
      "env": {
        "THREE_WS_BASE": "<YOUR_THREE_WS_BASE>",
        "THREE_WS_TIMEOUT_MS": "<YOUR_THREE_WS_TIMEOUT_MS>",
        "THREE_WS_SESSION": "<YOUR_THREE_WS_SESSION>",
        "SOLANA_RPC_URL": "<YOUR_SOLANA_RPC_URL>",
        "SOLANA_SECRET_KEY": "<YOUR_SOLANA_SECRET_KEY>",
        "MAX_SOL_PER_TX": "<YOUR_MAX_SOL_PER_TX>",
        "RECIPIENT_ALLOWLIST": "<YOUR_RECIPIENT_ALLOWLIST>",
        "REQUIRE_CONFIRM": "<YOUR_REQUIRE_CONFIRM>"
      }
    }
  }
}
Windsurf
~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "portfolio-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@three-ws/portfolio-mcp"
      ],
      "env": {
        "THREE_WS_BASE": "<YOUR_THREE_WS_BASE>",
        "THREE_WS_TIMEOUT_MS": "<YOUR_THREE_WS_TIMEOUT_MS>",
        "THREE_WS_SESSION": "<YOUR_THREE_WS_SESSION>",
        "SOLANA_RPC_URL": "<YOUR_SOLANA_RPC_URL>",
        "SOLANA_SECRET_KEY": "<YOUR_SOLANA_SECRET_KEY>",
        "MAX_SOL_PER_TX": "<YOUR_MAX_SOL_PER_TX>",
        "RECIPIENT_ALLOWLIST": "<YOUR_RECIPIENT_ALLOWLIST>",
        "REQUIRE_CONFIRM": "<YOUR_REQUIRE_CONFIRM>"
      }
    }
  }
}
VS Code
.vscode/mcp.json
{
  "servers": {
    "portfolio-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@three-ws/portfolio-mcp"
      ],
      "env": {
        "THREE_WS_BASE": "<YOUR_THREE_WS_BASE>",
        "THREE_WS_TIMEOUT_MS": "<YOUR_THREE_WS_TIMEOUT_MS>",
        "THREE_WS_SESSION": "<YOUR_THREE_WS_SESSION>",
        "SOLANA_RPC_URL": "<YOUR_SOLANA_RPC_URL>",
        "SOLANA_SECRET_KEY": "<YOUR_SOLANA_SECRET_KEY>",
        "MAX_SOL_PER_TX": "<YOUR_MAX_SOL_PER_TX>",
        "RECIPIENT_ALLOWLIST": "<YOUR_RECIPIENT_ALLOWLIST>",
        "REQUIRE_CONFIRM": "<YOUR_REQUIRE_CONFIRM>"
      }
    }
  }
}
Claude Code
claude mcp add portfolio-mcp --env THREE_WS_BASE=<YOUR_THREE_WS_BASE> --env THREE_WS_TIMEOUT_MS=<YOUR_THREE_WS_TIMEOUT_MS> --env THREE_WS_SESSION=<YOUR_THREE_WS_SESSION> --env SOLANA_RPC_URL=<YOUR_SOLANA_RPC_URL> --env SOLANA_SECRET_KEY=<YOUR_SOLANA_SECRET_KEY> --env MAX_SOL_PER_TX=<YOUR_MAX_SOL_PER_TX> --env RECIPIENT_ALLOWLIST=<YOUR_RECIPIENT_ALLOWLIST> --env REQUIRE_CONFIRM=<YOUR_REQUIRE_CONFIRM> -- npx -y @three-ws/portfolio-mcp

Related MCP servers

3D AI Agent Avatar — render any GLB, give it a Solana wallet, a voice, and pump.fun powers.

View repository →

MCP tools from three.ws: free + paid text-to-3D, rigging, agent reputation, market intel.

View repository →

UCAI — The ABI-to-MCP Server Generator. Convert any smart contract ABI into an AI-ready MCP server.

View repository →

Trending agents and coins, the $THREE holder leaderboard, and the site-wide activity ticker.

View repository →

Browse the AgenC on-chain task marketplace, query the agent registry, and link identities.

View repository →

Self-custodial pump.fun sniper: arm strategies, snipe, manage positions. Simulate by default.

View repository →