Skip to main content
Glama

@striderlabs/mcp-coinbase

MCP (Model Context Protocol) server for Coinbase crypto exchange. Provides browser-automated tools for live prices, portfolio management, transaction history, and trading.

Tools

Tool

Description

get_prices

Get current cryptocurrency prices from Coinbase

get_portfolio

Get your Coinbase portfolio balances and values

get_transactions

Get recent transaction history

buy_crypto

Place a buy order (with preview mode)

sell_crypto

Place a sell order (with preview mode)

get_wallet_address

Get your deposit address for a cryptocurrency

Related MCP server: Luno MCP Server

Installation

npm install -g @striderlabs/mcp-coinbase
npx playwright install chromium

Or from the tarball:

npm install -g striderlabs-mcp-coinbase-1.0.0.tgz
npx playwright install chromium

Configuration

Set these environment variables before running:

export COINBASE_EMAIL="your@email.com"
export COINBASE_PASSWORD="yourpassword"
export COINBASE_2FA_CODE="123456"   # optional: TOTP code, or leave blank to enter manually

Usage with Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "coinbase": {
      "command": "mcp-coinbase",
      "env": {
        "COINBASE_EMAIL": "your@email.com",
        "COINBASE_PASSWORD": "yourpassword"
      }
    }
  }
}

Or using npx:

{
  "mcpServers": {
    "coinbase": {
      "command": "npx",
      "args": ["-y", "@striderlabs/mcp-coinbase"],
      "env": {
        "COINBASE_EMAIL": "your@email.com",
        "COINBASE_PASSWORD": "yourpassword"
      }
    }
  }
}

Tool Reference

get_prices

Get current spot prices for one or more cryptocurrencies.

{
  "symbols": ["BTC", "ETH", "SOL"],
  "currency": "USD"
}

Returns live prices fetched from the Coinbase public API — no login required.

get_portfolio

Get your full portfolio with balances and USD values. Requires login.

{}

get_transactions

Get recent transaction history.

{
  "limit": 20
}

buy_crypto

Place a buy order. Use confirm: false (default) to preview the order without executing.

{
  "symbol": "BTC",
  "amount_usd": 100,
  "confirm": false
}

Set confirm: true to execute the trade.

sell_crypto

Place a sell order. Use confirm: false (default) to preview.

{
  "symbol": "ETH",
  "amount_crypto": 0.5,
  "confirm": false
}

get_wallet_address

Get your deposit address for a cryptocurrency.

{
  "symbol": "BTC"
}

2FA Handling

The server handles two-factor authentication gracefully:

  • If COINBASE_2FA_CODE is set, it will be used automatically

  • Otherwise, the server waits up to 60 seconds for you to complete 2FA in the browser

  • The browser session is reused across tool calls to minimize repeated logins

Browser Automation

This package uses Playwright with stealth mode (via playwright-extra + puppeteer-extra-plugin-stealth) to automate the Coinbase web interface. This approach:

  • Works with Coinbase's standard web UI

  • Handles dynamic page content

  • Bypasses basic bot detection via stealth plugin

Development

git clone https://github.com/markswendsen-code/mcp-coinbase
cd mcp-coinbase
npm install
npx playwright install chromium
npm run build

Run in dev mode (with tsx, no build step):

npm run dev

Security Notes

  • Never commit your Coinbase credentials to version control

  • Use environment variables for all sensitive configuration

  • The confirm: false default on buy/sell prevents accidental trades

  • Review all trades carefully before setting confirm: true

License

MIT

Available Tools

6 tools
buy_cryptoA

Place a buy order for cryptocurrency on Coinbase. Set confirm to false (default) for a preview, or true to execute. Requires COINBASE_EMAIL and COINBASE_PASSWORD environment variables.

Inputs: symbol (required), amount_usd (required), confirm.

get_portfolioA

Get your Coinbase portfolio balances and values. Requires COINBASE_EMAIL and COINBASE_PASSWORD environment variables.

Inputs: no named parameters.

get_pricesA

Get current cryptocurrency prices from Coinbase. Uses the public Coinbase API - no authentication required.

Inputs: symbols, currency.

get_transactionsA

Get recent transaction history from Coinbase. Requires COINBASE_EMAIL and COINBASE_PASSWORD environment variables.

Inputs: limit.

get_wallet_addressA

Get your Coinbase deposit address for a cryptocurrency. Requires COINBASE_EMAIL and COINBASE_PASSWORD environment variables.

Inputs: symbol (required).

sell_cryptoA

Place a sell order for cryptocurrency on Coinbase. Set confirm to false (default) for a preview, or true to execute. Requires COINBASE_EMAIL and COINBASE_PASSWORD environment variables.

Inputs: symbol (required), amount_crypto (required), confirm.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.1/5.0

    Scored across 6 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: portfolio, transactions, buy, sell, wallet address, and prices. There is no overlap or ambiguity between them.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern: get_ for reads, buy_/sell_ for actions. Naming is uniform and predictable.

    Tool Count5/5

    With 6 tools, the server is well-scoped for Coinbase operations. Each tool serves a clear function without redundancy or bloat.

    Completeness4/5

    Core account management and trading workflows are covered: viewing balances, history, prices, buying, selling, and getting deposit address. Minor gaps exist (e.g., cancel order, send crypto) but these are not critical for a basic trading server.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers