> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sei.io/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP Server

> Enable AI assistants to interact with Sei networks through natural language using the Model Context Protocol

The Sei Model Context Protocol (MCP) Server enables AI assistants to interact with Sei networks through natural language. Built on the [Model Context Protocol](https://modelcontextprotocol.io/) standard, it provides seamless blockchain integration for AI coding assistants.

<Info>The Sei MCP Server is open source. Contribute at [github.com/sei-protocol/sei-js](https://github.com/sei-protocol/sei-js/tree/main/packages/mcp-server)</Info>

## What is MCP?

The Model Context Protocol is an open standard that connects AI systems with external tools and data sources. It enables:

* Real-time data access from external services
* Function execution and operations
* Context preservation across interactions
* Specialized capabilities beyond base training

The Sei MCP Server leverages this protocol to bring blockchain functionality directly to your AI assistant.

## Capabilities

| Category           | Features                                                   |
| ------------------ | ---------------------------------------------------------- |
| Account Management | Wallet addresses • Balance queries • Contract verification |
| Token Operations   | SEI transfers • ERC20/721/1155 support • Token approvals   |
| Blockchain Data    | Block information • Transaction details • Network status   |
| Smart Contracts    | State queries • Function execution • Event logs            |
| Networks           | Mainnet • Testnet                                          |

## Setup Guide

<Tabs>
  <Tab title="Cursor">
    ### Cursor Setup

    <Steps>
      <Step title="Open Settings">
        Navigate to `Cursor → Settings → Cursor Settings → MCP`
      </Step>

      <Step title="Configure Server">
        Click **"Add new Global MCP server"** and add this configuration to `mcp.json`:

        ```json theme={"dark"}
        {
          "mcpServers": {
            "sei-mcp-server": {
              "command": "npx",
              "args": ["-y", "@sei-js/mcp-server"],
              "env": {
                "PRIVATE_KEY": "your_private_key_here"
              }
            }
          }
        }
        ```
      </Step>

      <Step title="Restart">
        Restart Cursor to activate the MCP server. You'll see a notification when it's ready.
      </Step>
    </Steps>
  </Tab>

  <Tab title="Windsurf">
    ### Windsurf Setup

    <Steps>
      <Step title="Open Settings">
        Navigate to `Windsurf → Settings → Windsurf Settings → Cascade`
      </Step>

      <Step title="Add Configuration">
        Add the Sei MCP Server to your configuration:

        ```json theme={"dark"}
        {
          "mcpServers": {
            "sei": {
              "command": "npx",
              "args": ["-y", "@sei-js/mcp-server"],
              "env": {
                "PRIVATE_KEY": "your_private_key_here"
              }
            }
          }
        }
        ```
      </Step>

      <Step title="Activate">
        Save and restart Windsurf. The server loads automatically.
      </Step>
    </Steps>
  </Tab>

  <Tab title="Claude Desktop">
    ### Claude Desktop Setup

    <Steps>
      <Step title="Install Claude">
        Download [Claude Desktop](https://claude.ai/download) from Anthropic.
      </Step>

      <Step title="Edit Configuration">
        Open **Settings** → **Developer** → **Edit Config** and add:

        ```json theme={"dark"}
        {
          "mcpServers": {
            "sei": {
              "command": "npx",
              "args": ["-y", "@sei-js/mcp-server"],
              "env": {
                "PRIVATE_KEY": "your_private_key_here"
              }
            }
          }
        }
        ```
      </Step>

      <Step title="Restart">
        Save and restart Claude Desktop to enable Sei tools.
      </Step>
    </Steps>
  </Tab>

  <Tab title="Claude CLI">
    ### Claude CLI Setup

    <Steps>
      <Step title="Install CLI">
        ```bash theme={"dark"}
        npm install -g @anthropic-ai/claude-code
        ```
      </Step>

      <Step title="Add Server">
        ```bash theme={"dark"}
        claude mcp add sei-mcp-server npx @sei-js/mcp-server
        ```
      </Step>

      <Step title="Start Session">
        ```bash theme={"dark"}
        claude
        ```

        The Sei MCP Server activates automatically in your session.
      </Step>
    </Steps>
  </Tab>
</Tabs>

## Private Key Setup

<Warning>**Security Notice**: Generate a dedicated wallet for MCP operations. Never use your main wallet's private key.</Warning>

Export your private key from your wallet:

* Look for "Export Private Key" or "Show Private Key" in wallet settings
* Ensure the key starts with `0x`
* Fund the wallet with small amounts for testing

## Features

The Sei MCP Server enables your AI assistant to:

### Blockchain Operations

* Query account balances and transaction history
* Execute token transfers
* Interact with smart contracts
* Monitor network status

### Coming Soon

* Documentation search and explanation
* @sei-js library integration
* Boilerplate generation
* DeFi protocol interactions

## Available Tools

### Core Operations

| Tool                           | Purpose                 | Example                     |
| ------------------------------ | ----------------------- | --------------------------- |
| `get_address_from_private_key` | Retrieve wallet address | "What's my wallet address?" |
| `get_balance`                  | Check SEI balance       | "Check balance of 0x123..." |
| `transfer_sei`                 | Send SEI tokens         | "Send 1 SEI to 0x456..."    |
| `is_contract`                  | Verify contract address | "Is 0x789... a contract?"   |

### Token Management

| Tool                     | Purpose        | Example                     |
| ------------------------ | -------------- | --------------------------- |
| `get_token_info`         | Token metadata | "Get USDC token info"       |
| `get_token_balance`      | Token balance  | "Check my USDC balance"     |
| `transfer_token`         | Token transfer | "Send 100 USDC to 0x123..." |
| `approve_token_spending` | Token approval | "Approve DEX for USDC"      |

### NFT Operations

| Tool                  | Purpose                | Example                     |
| --------------------- | ---------------------- | --------------------------- |
| `get_nft_info`        | NFT metadata           | "Show NFT #123 details"     |
| `check_nft_ownership` | Ownership verification | "Who owns NFT #456?"        |
| `transfer_nft`        | NFT transfer           | "Send NFT #789 to 0xABC..." |
| `get_nft_balance`     | Collection balance     | "How many NFTs do I own?"   |

### Blockchain Data

| Tool                  | Purpose                 | Example                 |
| --------------------- | ----------------------- | ----------------------- |
| `get_chain_info`      | Network information     | "Show Sei mainnet info" |
| `get_block_by_number` | Block details by number | "Get block 12345"       |
| `get_latest_block`    | Latest block details    | "Get latest block"      |
| `get_transaction`     | Transaction data        | "Show tx 0xTXID..."     |
| `read_contract`       | Contract state          | "Read DEX reserves"     |

## AI Prompts

Pre-configured prompts for common tasks:

<div className="grid grid-cols-1 md:grid-cols-2 gap-4 my-6">
  <div className="bg-white dark:bg-neutral-800/50  p-4 border border-neutral-200 dark:border-neutral-700">
    <h4 className="font-medium text-purple-600 dark:text-purple-400 mb-1">my\_wallet\_address</h4>
    <p className="text-sm text-neutral-600 dark:text-neutral-400">Get your wallet address</p>
  </div>

  <div className="bg-white dark:bg-neutral-800/50  p-4 border border-neutral-200 dark:border-neutral-700">
    <h4 className="font-medium text-purple-600 dark:text-purple-400 mb-1">explore\_block</h4>
    <p className="text-sm text-neutral-600 dark:text-neutral-400">Analyze block data</p>
  </div>

  <div className="bg-white dark:bg-neutral-800/50  p-4 border border-neutral-200 dark:border-neutral-700">
    <h4 className="font-medium text-purple-600 dark:text-purple-400 mb-1">analyze\_transaction</h4>
    <p className="text-sm text-neutral-600 dark:text-neutral-400">Transaction details</p>
  </div>

  <div className="bg-white dark:bg-neutral-800/50  p-4 border border-neutral-200 dark:border-neutral-700">
    <h4 className="font-medium text-purple-600 dark:text-purple-400 mb-1">analyze\_address</h4>
    <p className="text-sm text-neutral-600 dark:text-neutral-400">Address analysis</p>
  </div>
</div>

## Usage Examples

<div className="space-y-4 my-6">
  <div className="bg-white dark:bg-neutral-800/50  p-4 border-l-4 border-purple-500">
    <p className="text-sm font-medium text-purple-600 dark:text-purple-400 mb-1">Query Balance</p>
    <p className="text-neutral-700 dark:text-neutral-300">"What's my SEI balance?"</p>
    <p className="text-sm text-neutral-600 dark:text-neutral-400 mt-2">→ Returns wallet balance and address</p>
  </div>

  <div className="bg-white dark:bg-neutral-800/50  p-4 border-l-4 border-purple-500">
    <p className="text-sm font-medium text-purple-600 dark:text-purple-400 mb-1">Send Transaction</p>
    <p className="text-neutral-700 dark:text-neutral-300">"Send 1 SEI to 0x742d35Cc6634C0532925a3b844Bc454e4438f44e"</p>
    <p className="text-sm text-neutral-600 dark:text-neutral-400 mt-2">→ Executes transfer and returns transaction hash</p>
  </div>

  <div className="bg-white dark:bg-neutral-800/50  p-4 border-l-4 border-purple-500">
    <p className="text-sm font-medium text-purple-600 dark:text-purple-400 mb-1">Contract Analysis</p>
    <p className="text-neutral-700 dark:text-neutral-300">"Is 0x3894085ef7ff0f0aedf52e2a2704928d1ec074f1 a contract?"</p>
    <p className="text-sm text-neutral-600 dark:text-neutral-400 mt-2">→ Identifies contract type and metadata</p>
  </div>
</div>

## Resource URIs

Access blockchain data through standardized URIs:

```bash theme={"dark"}
# Network data
evm://sei/chain
evm://sei-testnet/chain

# Block information
evm://sei/block/latest
evm://sei/block/12345

# Transactions
evm://sei/tx/0xabc123...
evm://sei/tx/0xabc123.../receipt

# Token data
evm://sei/token/0x3894085ef7ff0f0aedf52e2a2704928d1ec074f1
evm://sei/token/0x389.../balanceOf/0x742d...

# NFT data
evm://sei/nft/0xNFT_ADDRESS/123
evm://sei/nft/0xNFT_ADDRESS/123/isOwnedBy/0x742d...
```

## Configuration

### Environment Setup

```bash theme={"dark"}
# .env file
PRIVATE_KEY=0x_your_private_key_here

# Optional (coming soon)
CUSTOM_RPC_URL=https://your-rpc.com
CUSTOM_CHAIN_ID=1329
```

### HTTP Server Mode

For web applications:

```bash theme={"dark"}
# Start HTTP server
npx @sei-js/mcp-server --http

# Connect from web app
const eventSource = new EventSource('http://localhost:3001/sse');
```

## Security Guidelines

<Warning>
  **Security Guidelines:**

  1. **Use a dedicated wallet** - Create a new wallet specifically for MCP
  2. **Minimal funding** - Only add funds needed for testing
  3. **Environment variables** - Never hardcode private keys
  4. **Monitor activity** - Regularly check transaction history

  **For production:**

  * Implement transaction limits
  * Use multi-signature wallets
  * Add contract whitelisting
  * Enable rate limiting
</Warning>

## Troubleshooting

**Connection issues**: Verify Node.js 18+ is installed and restart your AI assistant.

**Private key errors**: Ensure key format starts with `0x` and wallet has sufficient funds.

**Cursor: The model returned an error. Try disabling the MCP servers, or switch models**: Disable "Auto" in the model
menu and select a specific model e.g. `claude-4-sonnet`
