SUI MCP Server
A TypeScript MCP server for interacting with the SUI blockchain via CLI.
Network: Testnet (default)
Tools
| Tool | Description | |------|-------------| | sui_active_address | Get current active SUI address | | sui_balance | Get SUI balance for an address | | sui_objects | Get all objects owned by an address | | sui_get_object | Get details of a specific object | | sui_call | Call a Move function on a smart contract | | sui_publish | Publish a Move package | | sui_transfer_object | Transfer an object to another address | | sui_faucet | Request test SUI from faucet | | sui_network | Get current network environment | | sui_addresses | List all addresses in wallet | | sui_transaction | Get transaction details by ID | | sui_gas | Get gas objects for an address |
Setup
npm install
Make sure SUI CLI is installed: ``bash curl -fsSL https://docs.sui.io/guides/install | sh ``
Set up testnet: ``bash sui client new-env --alias testnet --rpc https://fullnode.testnet.sui.io:443 sui client switch --env testnet ``
Running
npm run build
npm start
opencode Integration
Add to your opencode.jsonc: ``jsonc { "mcp": { "sui": { "type": "local", "command": ["node", "YOUR_MCP_SERVER_PATH"] } } } ``
Claude
Add to your .mcp.json: ``json { "mcpServers": { "sui": { "type": "stdio", "command": "node", "args": ["YOUR_MCP_SERVER_PATH"] } } } ``
Usage
Call a Move function
sui_call({
package: "YOUR_PACKAGE_ID",
module: "YOUR_MODULE_NAME",
function: "FUNCTION_NAME",
typeArgs: "YOUR_TOKEN_TYPE",
args: "ARG1,ARG2",
gasBudget: "50000000"
})
Get objects for an address
sui_objects({ address: "YOUR_ADDRESS" })
Get object details
sui_get_object({ objectId: "YOUR_OBJECT_ID" })
Publish a package
sui_publish({
packagePath: "YOUR_PACKAGE_PATH",
gasBudget: "100000000"
})
Transfer an object
sui_transfer_object({
objectId: "YOUR_OBJECT_ID",
to: "RECIPIENT_ADDRESS",
gasBudget: "50000000"
})
Tips
- Gas Budget: Default is 0.05 SUI (50000000 MIST). Increase for complex transactions.
- Object IDs: Must be in format
0x...(66 chars) - Clock Object: Use
0x6for the Clock object on testnet - Type Arguments: For custom tokens, use the full type:
0xTOKEN_ADDRESS::coin::COIN






