# io.github.ExpertVagabond/sui-mcp-server (npm · sui-mcp-server)

53-tool MCP server for Sui blockchain — wallets, DeFi, Move contracts, staking, SuiNS, analytics

- Trust score: 70/100 (medium)
- Change this week: +24
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-04

## Components

- npm · `sui-mcp-server`: 70/100 (this document), [markdown](https://verifymcp.io/servers/expertvagabond-sui-mcp-server/sui-mcp-server.md), [page](https://verifymcp.io/servers/expertvagabond-sui-mcp-server/sui-mcp-server)

## Channel facts

- Registry: `npm`
- Package: `sui-mcp-server`
- Version: `0.4.2`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-04.

- **Supply Chain Security**: 83/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known medium-severity CVE affects hono 4.12.33, reached via @modelcontextprotocol/sdk > hono. A fixed version is available.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (132 of 133), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 130 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 81/100
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 2564 tokens (~48/item across 53 items; 53 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 30/100
  - Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add expertvagabond-sui-mcp-server -- npx -y sui-mcp-server
```

### Codex

```bash
codex mcp add expertvagabond-sui-mcp-server -- npx -y sui-mcp-server
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "expertvagabond-sui-mcp-server": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "sui-mcp-server"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add expertvagabond-sui-mcp-server --command npx --arg -y --arg sui-mcp-server
```

### Hermes

```yaml
mcp_servers:
  expertvagabond-sui-mcp-server:
    command: "npx"
    args: ["-y", "sui-mcp-server"]
```

### Other

```json
{
  "mcpServers": {
    "expertvagabond-sui-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "sui-mcp-server"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-04 (score 70, −1)

- [security regression] CVE-2026-69207 affects this package: medium
- [security regression] Known CVEs: partial → fail

### 2026-08-03 (score 71, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-02 (score 70, +65)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Stability: unverified → 0.23
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] MCP protocol: unverified → pass
- [functional] Licence: MIT

### 2026-08-01 (score 5, −23)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-31 (score 28, −18)

- [security regression] Malware scan: pass → unverified

### 2026-07-27 (score 46)

First indexed and scored.

## MCP tools (53)

### `create_wallet` (~46 tokens)

Create a new Sui wallet (Ed25519 keypair). Keys are held in memory only.

Input parameters:

- `name` (string, required): Wallet name (alphanumeric, hyphens, underscores)

### `import_wallet` (~56 tokens)

Import a Sui wallet from a Bech32-encoded private key (suiprivkey...).

Input parameters:

- `name` (string, required): Wallet name
- `privateKey` (string, required): Bech32 private key (suiprivkey...)

### `list_wallets` (~17 tokens)

List all wallets managed in this session.

### `get_balance` (~29 tokens)

Get SUI balance for an address.

Input parameters:

- `address` (string, required): Sui address (0x...)

### `get_all_balances` (~36 tokens)

Get all coin balances for an address (SUI and all other coin types).

Input parameters:

- `address` (string, required): Sui address

### `get_coins` (~69 tokens)

Get coin objects of a specific type owned by an address.

Input parameters:

- `address` (string, required): Owner address
- `coinType` (string): Coin type (default: 0x2::sui::SUI)
- `limit` (number): Max coins to return (default: 50)

### `get_coin_metadata` (~48 tokens)

Get metadata for a coin type (name, symbol, decimals, description).

Input parameters:

- `coinType` (string, required): Coin type (e.g. 0x2::sui::SUI)

### `get_total_supply` (~27 tokens)

Get total supply of a coin type.

Input parameters:

- `coinType` (string, required): Coin type

### `transfer_sui` (~67 tokens)

Transfer SUI from a managed wallet to a recipient address. Amount is in SUI (not MIST).

Input parameters:

- `amount` (number, required): Amount in SUI
- `fromWallet` (string, required): Name of the sending wallet
- `toAddress` (string, required): Recipient Sui address

### `transfer_objects` (~51 tokens)

Transfer one or more objects to a recipient address.

Input parameters:

- `fromWallet` (string, required): Sending wallet name
- `objectIds` (array, required): Object IDs to transfer
- `toAddress` (string, required): Recipient address

### `merge_coins` (~63 tokens)

Merge multiple coins into one. All coins must be the same type.

Input parameters:

- `coinsToMerge` (array, required): Object IDs of coins to merge
- `primaryCoin` (string, required): Object ID of the coin to merge into
- `wallet` (string, required): Wallet name

### `split_coins` (~64 tokens)

Split a coin into multiple coins with specified amounts (in MIST).

Input parameters:

- `amounts` (array, required): Amounts for each new coin (in MIST)
- `coinId` (string, required): Object ID of the coin to split
- `wallet` (string, required): Wallet name

### `get_object` (~74 tokens)

Get details of a Sui object by its ID.

Input parameters:

- `objectId` (string, required): Object ID
- `showContent` (boolean): Include object content (default: true)
- `showOwner` (boolean): Include owner info (default: true)
- `showType` (boolean): Include object type (default: true)

### `get_owned_objects` (~74 tokens)

Get objects owned by an address.

Input parameters:

- `address` (string, required): Owner address
- `filter` (object): Optional filter: { StructType: '0x2::coin::Coin<0x2::sui::SUI>' }
- `limit` (number): Max objects to return (default: 50)

### `get_dynamic_fields` (~43 tokens)

Get dynamic fields of an object.

Input parameters:

- `limit` (number): Max fields to return (default: 50)
- `parentId` (string, required): Parent object ID

### `get_transaction` (~66 tokens)

Get transaction details by digest.

Input parameters:

- `digest` (string, required): Transaction digest
- `showEffects` (boolean): Show effects (default: true)
- `showEvents` (boolean): Show events (default: true)
- `showInput` (boolean): Show transaction input (default: true)

### `dry_run_transaction` (~33 tokens)

Dry-run a transaction to preview effects without executing.

Input parameters:

- `txBytes` (string, required): Base64-encoded transaction bytes

### `move_call` (~74 tokens)

Execute a Move function call. Arguments are passed as an array of strings/numbers.

Input parameters:

- `arguments` (array): Function arguments
- `target` (string, required): Move call target: package::module::function
- `typeArguments` (array): Type arguments for generic functions
- `wallet` (string, required): Wallet name for signing

### `get_normalized_module` (~44 tokens)

Get the normalized Move module definition (functions, structs, etc.).

Input parameters:

- `moduleName` (string, required): Module name
- `packageId` (string, required): Package object ID

### `get_move_function` (~48 tokens)

Get details of a specific Move function.

Input parameters:

- `functionName` (string, required): Function name
- `moduleName` (string, required): Module name
- `packageId` (string, required): Package object ID

### `get_stakes` (~27 tokens)

Get all staking positions for an address.

Input parameters:

- `address` (string, required): Staker address

### `request_add_stake` (~55 tokens)

Stake SUI with a validator. Amount is in SUI.

Input parameters:

- `amount` (number, required): Amount of SUI to stake
- `validatorAddress` (string, required): Validator address
- `wallet` (string, required): Wallet name

### `request_withdraw_stake` (~41 tokens)

Withdraw staked SUI.

Input parameters:

- `stakeObjectId` (string, required): StakedSui object ID
- `wallet` (string, required): Wallet name

### `get_validators` (~23 tokens)

Get current validator set with APY, commission, and stake info.

### `switch_network` (~27 tokens)

Switch to a different Sui network.

Input parameters:

- `network` (string, required): Network to switch to

### `get_network_info` (~25 tokens)

Get current network info: chain ID, epoch, reference gas price, checkpoint.

### `get_latest_checkpoint` (~16 tokens)

Get the latest checkpoint sequence number.

### `get_reference_gas_price` (~17 tokens)

Get current reference gas price.

### `request_faucet` (~33 tokens)

Request SUI from the faucet (devnet/testnet only).

Input parameters:

- `address` (string, required): Address to fund

### `resolve_name` (~36 tokens)

Resolve a SuiNS name to an address.

Input parameters:

- `name` (string, required): SuiNS name (e.g. example.sui)

### `resolve_address` (~31 tokens)

Reverse-resolve an address to its SuiNS name(s).

Input parameters:

- `address` (string, required): Sui address

### `query_events` (~107 tokens)

Query on-chain events by type, sender, package, module, or transaction digest.

Input parameters:

- `filter` (object, required): Event filter. Examples: { "MoveEventType": "0x2::coin::CoinEvent" }, { "Sender": "0x..." }, { "Package": "0x2" }, { "Transaction": "digest..." }
- `limit` (number): Max events (default: 50)
- `order` (string): Sort order (default: descending)

### `query_transactions` (~133 tokens)

Search and filter transactions by sender, recipient, input object, changed object, or Move function.

Input parameters:

- `filter` (object, required): Transaction filter. Examples: { "FromAddress": "0x..." }, { "ToAddress": "0x..." }, { "InputObject": "0x..." }, { "ChangedObject": "0x..." }, { "MoveFunction": { "package": "0x2", "module": "coin", "…
- `limit` (number): Max transactions (default: 50)
- `order` (string): Sort order (default: descending)

### `multi_get_objects` (~62 tokens)

Batch-fetch multiple objects by their IDs in one call.

Input parameters:

- `objectIds` (array, required): Array of object IDs to fetch
- `showContent` (boolean): Include content (default: true)
- `showType` (boolean): Include type (default: true)

### `get_package_modules` (~34 tokens)

List all modules in a Move package, with their functions and structs.

Input parameters:

- `packageId` (string, required): Package object ID

### `get_move_struct` (~53 tokens)

Get a Move struct definition (fields, abilities, type parameters).

Input parameters:

- `moduleName` (string, required): Module name
- `packageId` (string, required): Package object ID
- `structName` (string, required): Struct name

### `get_epoch_info` (~49 tokens)

Get detailed info about epochs (current or historical).

Input parameters:

- `limit` (number): Number of epochs to return (default: 5)
- `order` (string): Sort order (default: descending)

### `get_checkpoint` (~28 tokens)

Get detailed checkpoint data by sequence number.

Input parameters:

- `sequenceNumber` (string, required): Checkpoint sequence number

### `get_protocol_config` (~24 tokens)

Get the current Sui protocol configuration (limits, features, gas settings).

### `get_system_state` (~30 tokens)

Get the full Sui system state: epoch, validators, stake distribution, gas price, storage fund.

### `get_committee_info` (~32 tokens)

Get validator committee information for a specific epoch.

Input parameters:

- `epoch` (string): Epoch number (default: current)

### `dev_inspect` (~78 tokens)

Simulate a Move call without executing it — returns results, gas cost, and effects. No wallet needed.

Input parameters:

- `arguments` (array): Function arguments
- `sender` (string, required): Sender address to simulate from
- `target` (string, required): Move call target: package::module::function
- `typeArguments` (array): Type arguments

### `get_object_history` (~47 tokens)

Find all transactions that touched a given object (trace provenance).

Input parameters:

- `limit` (number): Max transactions (default: 20)
- `objectId` (string, required): Object ID to trace

### `get_total_transactions` (~19 tokens)

Get the total number of transactions on the network.

### `get_move_call_metrics` (~24 tokens)

Get Move call metrics — most-called packages, modules, and functions.

### `cetus_get_pools` (~107 tokens)

Query Cetus CLMM pools by coin types. Returns pool addresses, liquidity, and fee rates.

Input parameters:

- `coinTypeA` (string): Coin type A (e.g. 0x2::sui::SUI). Use 'SUI', 'USDC', 'USDT', 'WETH', 'DEEP' as shortcuts.
- `coinTypeB` (string): Coin type B
- `limit` (number): Max pools (default: 10)

### `cetus_get_pool` (~37 tokens)

Get detailed info for a specific Cetus pool by its object ID.

Input parameters:

- `poolId` (string, required): Cetus pool object ID

### `deepbook_get_pool` (~42 tokens)

Get DeepBook v3 pool info (order book) — mid price, spread, balances.

Input parameters:

- `poolId` (string, required): DeepBook pool object ID

### `get_token_price` (~68 tokens)

Get approximate token price by querying DeFi pool reserves. Supports common tokens: SUI, USDC, USDT, WETH, DEEP.

Input parameters:

- `token` (string, required): Token symbol (SUI, USDC, USDT, WETH, DEEP) or full coin type

### `swap_quote` (~97 tokens)

Get a swap quote by simulating a Move call. Returns estimated output amount and gas cost without executing.

Input parameters:

- `amount` (number, required): Amount to swap (in token units, not MIST)
- `fromCoin` (string, required): Source coin type or shorthand (SUI, USDC, etc.)
- `poolId` (string, required): Pool object ID to use for the swap
- `toCoin` (string, required): Destination coin type or shorthand

### `suins_get_name_record` (~47 tokens)

Get detailed SuiNS name record — NFT ID, target address, expiration, metadata.

Input parameters:

- `name` (string, required): SuiNS name (e.g. example.sui)

### `suins_get_price` (~47 tokens)

Get SuiNS registration and renewal pricing.

Input parameters:

- `name` (string, required): Domain name to check price for
- `years` (number): Number of years (default: 1)

### `list_common_tokens` (~39 tokens)

List commonly used Sui token types (SUI, USDC, USDT, WETH, DEEP) with their full coin type addresses.

## Diagnostics

Captured diagnostic sections: Provenance, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/expertvagabond-sui-mcp-server/sui-mcp-server#diagnostics

## Score history

- 2026-08-04: 70
- 2026-08-03: 71
- 2026-08-02: 70
- 2026-08-01: 5
- 2026-07-31: 28
- 2026-07-29: 46
- 2026-07-28: 46
- 2026-07-27: 46

## Links

- npm package: https://www.npmjs.com/package/sui-mcp-server
- Socket report: https://socket.dev/npm/package/sui-mcp-server
- Repository: https://github.com/ExpertVagabond/sui-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/expertvagabond-sui-mcp-server/sui-mcp-server/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/expertvagabond-sui-mcp-server/sui-mcp-server/changelog.json
- HTML version of this page: https://verifymcp.io/servers/expertvagabond-sui-mcp-server/sui-mcp-server
