# mcp-server

**Category:** 💰 Finance & Fintech  
**Repository:** https://github.com/XCP/mcp-server  
**npm Downloads (last month):** 1232  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/mcp-server-81

## Description
Interact with Counterparty — the token protocol on Bitcoin. Query, compose, sign.

## Claude Desktop Quick Installation
Heuristic fallback — verify the package name and runner against the repository README before running it. Uses `npx` (confidence: low):

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

## Documentation & README

# Counterparty MCP Server

Give AI agents the ability to interact with [Counterparty](https://counterparty.io) — the token protocol built on Bitcoin. Query balances, assets, orders, and dispensers. Compose, sign, and broadcast transactions. Works with any MCP-compatible client.

[![npm](https://img.shields.io/npm/v/@21e14/mcp-server)](https://www.npmjs.com/package/@21e14/mcp-server)

## Install

No download needed — just add the config below to your AI client. `npx` fetches and runs the server automatically.

### Claude Desktop

Add to `claude_desktop_config.json` ([how to find it](https://modelcontextprotocol.io/quickstart/user)):

```json
{
  "mcpServers": {
    "counterparty": {
      "command": "npx",
      "args": ["-y", "@21e14/mcp-server"]
    }
  }
}
```

### Claude Code

```bash
claude mcp add counterparty -- npx -y @21e14/mcp-server
```

With signing (see [Signing & Broadcasting](#signing--broadcasting)):

```bash
claude mcp add counterparty \
  -e SIGNER_PRIVATE_KEY=L1aW4aubDFB7yfras2S1mN... \
  -e SIGNER_ADDRESS=bc1q... \
  -- npx -y @21e14/mcp-server
```

Manage servers with `claude mcp list`, `claude mcp get counterparty`, or `claude mcp remove counterparty`.

### VS Code (Copilot)

Use `Ctrl+Shift+P` → **MCP: Add Server** → **Stdio**, then enter:

```
npx -y @21e14/mcp-server
```

Or add to `.vscode/mcp.json`:

```json
{
  "servers": {
    "counterparty": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@21e14/mcp-server"]
    }
  }
}
```

### Cursor

Add to `.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "counterparty": {
      "command": "npx",
      "args": ["-y", "@21e14/mcp-server"]
    }
  }
}
```

### Windsurf

Add to `~/.codeium/windsurf/mcp_config.json`:

```json
{
  "mcpServers": {
    "counterparty": {
      "command": "npx",
      "args": ["-y", "@21e14/mcp-server"]
    }
  }
}
```

### ChatGPT

In ChatGPT desktop, go to **Settings → Beta Features → MCP Servers**, then add:

```
npx -y @21e14/mcp-server
```

### Any MCP Client

The server speaks stdio. Point any MCP-compatible client at:

```bash
npx -y @21e14/mcp-server
```

That's it. The agent can now query the Counterparty network and compose unsigned transactions.

## Signing & Broadcasting

To let the agent sign and broadcast transactions, add a signing key:

```json
{
  "mcpServers": {
    "counterparty": {
      "command": "npx",
      "args": ["-y", "@21e14/mcp-server"],
      "env": {
        "SIGNER_PRIVATE_KEY": "L1aW4aubDFB7yfras2S1mN...",
        "SIGNER_ADDRESS": "bc1q..."
      }
    }
  }
}
```

This enables the `sign_and_broadcast` tool. **Signing gives the AI agent the ability to spend funds** — read the security guidance below.

### Bot wallet pattern (recommended)

1. **Generate a fresh keypair offline.** Don't reuse an existing wallet or generate keys through the AI.
2. **Fund it with only what you're willing to risk.** This is your blast radius.
3. **Use a segwit address.** P2WPKH (`bc1q...`), P2SH-P2WPKH (`3...`), or P2TR (`bc1p...`). Legacy P2PKH is not supported.
4. **One key, one address.** No HD derivation. Counterparty reuses addresses by design.
5. **Keep main holdings elsewhere.** The bot wallet is disposable.

### Compose-only mode

Without signing keys, the server returns unsigned transaction hex from all compose tools. You can review and sign offline with your own tooling. This is the safest mode.

### Transaction verification

`sign_and_broadcast` extracts and returns the embedded OP_RETURN data from the transaction before signing — done locally without trusting the API, so the agent can verify the transaction matches what was requested.

## Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `COUNTERPARTY_NODE` | No | Counterparty node URL (default: `https://api.counterparty.io:4000`) |
| `SIGNER_PRIVATE_KEY` | No | WIF-encoded private key for signing |
| `SIGNER_ADDRESS` | No | Bitcoin address for the signing key |

## Tools

### Query (24)

| Tool | Description |
|------|-------------|
| `get_balances` | All token balances for an address |
| `get_balance` | Single asset balance for an address |
| `get_asset_info` | Asset metadata (supply, divisibility, issuer) |
| `get_asset_balances` | All holders of an asset |
| `get_assets` | Search/list assets |
| `get_issuances` | Issuance history for an asset |
| `get_owned_assets` | Assets issued by an address |
| `get_orders` | DEX orders |
| `get_order` | Single order by hash |
| `get_order_matches` | Matches for an order |
| `get_orders_by_pair` | Order book for a trading pair |
| `get_asset_orders` | Orders involving an asset |
| `get_address_orders` | Orders by address |
| `get_dispensers` | Dispensers |
| `get_dispenser` | Single dispenser by hash |
| `get_dispensers_by_asset` | Dispensers for an asset |
| `get_address_dispensers` | Dispensers by address |
| `get_dispenses` | Purchases from a dispenser |
| `get_dividends` | Dividend distributions for an asset |
| `get_address_transactions` | Transaction history for an address |
| `get_sends` | Token transfers from an address |
| `get_transaction` | Single transaction by hash |
| `get_utxo_balances` | Tokens attached to a UTXO |
| `get_latest_block` | Latest block info |

### Compose (18)

| Tool | Description |
|------|-------------|
| `compose_send` | Send tokens to an address |
| `compose_mpma` | Multi-party multi-asset send |
| `compose_order` | Place a DEX order |
| `compose_cancel` | Cancel an open order |
| `compose_btcpay` | Pay for a matched BTC order |
| `compose_issuance` | Create or update an asset (supports inscriptions) |
| `compose_dispenser` | Create, open, or close a dispenser |
| `compose_dispense` | Buy from a dispenser |
| `compose_dividend` | Distribute dividends to holders |
| `compose_broadcast` | Broadcast a message (supports inscriptions) |
| `compose_sweep` | Sweep all assets to a destination |
| `compose_destroy` | Permanently burn tokens |
| `compose_fairminter` | Create a fair launch (supports inscriptions) |
| `compose_xcp420_fairminter` | XCP-420 compliant fair launch |
| `compose_fairmint` | Mint from an active fair launch |
| `compose_attach` | Attach tokens to a UTXO |
| `compose_detach` | Detach tokens from a UTXO |
| `compose_movetoutxo` | Move a UTXO to a new output |

### Bitcoin (4)

| Tool | Description |
|------|-------------|
| `sign_and_broadcast` | Sign and broadcast (requires signing keys) |
| `broadcast_transaction` | Broadcast an already-signed transaction |
| `get_fee_estimate` | Current fee rate estimate |
| `decode_transaction` | Decode raw transaction hex |

### Utility (3)

| Tool | Description |
|------|-------------|
| `unpack_transaction` | Decode a Counterparty message from a transaction |
| `get_server_info` | Node status and version |
| `api_request` | Raw API request to any endpoint ([full API reference](https://raw.githubusercontent.com/CounterpartyXCP/counterparty-core/refs/heads/master/apiary.apib)) |

## Resources

The server includes protocol documentation that agents can read for context:

- `counterparty://protocol-overview` — Assets, quantities, DEX, dispensers, fair minting, fees, and operational tips
- `counterparty://xcp420-standard` — XCP-420 fair launch standard
- `counterparty://quick-start` — Step-by-step workflows for common operations

## Development

```bash
git clone https://github.com/XCP/mcp-server.git
cd mcp-server
npm install
npm test
```

Test locally:

```json
{
  "mcpServers": {
    "counterparty": {
      "command": "node",
      "args": ["/path/to/mcp-server/dist/index.js"]
    }
  }
}
```

## License

MIT

