XCP

io.github.XCPPublished by GitHub account XCPv1.0.1Updated Oct 25, 2026

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

VerifiedSTDIODesktop onlyDatabasesFinance

Overview

AI-generated overview

A local MCP server that lets an assistant query the Counterparty token protocol on Bitcoin and compose, sign and broadcast transactions.

What you can do
Query balances, assets, issuances, holders and owned assets for addresses and tokens.Explore DEX orders, order books, order matches, dispensers, dispenses, dividends, sends and transaction history.Build unsigned transactions for sends, multi-asset sends, orders, cancellations, BTC payments, issuances, dispensers, dividends, broadcasts, sweeps, burns, fair launches and UTXO attach/detach/move.Sign and broadcast transactions, broadcast pre-signed ones, estimate fees and decode raw transaction hex.Decode Counterparty messages, check node status and make raw API requests; read bundled protocol, XCP-420 and quick-start documentation.
When to use it
Use it when you want an assistant to inspect Counterparty assets, markets and dispensers, or to prepare and optionally send Counterparty transactions on Bitcoin. Compose-only mode suits users who want unsigned transaction hex to review and sign with their own tooling.
Requirements
Runs locally via npx (Node.js) over stdio in a desktop MCP client. Optional environment variables: COUNTERPARTY_NODE (defaults to a public Counterparty API node), and SIGNER_ADDRESS plus SIGNER_PRIVATE_KEY for signing. Network access to the Counterparty node is needed.
Before you install
Signing gives the assistant the ability to spend funds from the configured wallet; the README recommends a fresh, minimally funded segwit bot wallet and keeping main holdings elsewhere. SIGNER_PRIVATE_KEY is a WIF private key passed in plain environment variables. Compose and broadcast tools create real on-chain transactions, and api_request can call any endpoint. Without signing keys the server only returns unsigned transaction hex.

Installation

In SourceWeft

  1. Open XCP in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Counterparty MCP Server

Give AI agents the ability to interact with Counterparty — the token protocol built on Bitcoin. Query balances, assets, orders, and dispensers. Compose, sign, and broadcast transactions. Works with any MCP-compatible client.

[npm]

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):

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):

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

VariableRequiredDescription
COUNTERPARTY_NODENoCounterparty node URL (default: https://api.counterparty.io:4000)
SIGNER_PRIVATE_KEYNoWIF-encoded private key for signing
SIGNER_ADDRESSNoBitcoin address for the signing key

Tools

Query (24)

ToolDescription
get_balancesAll token balances for an address
get_balanceSingle asset balance for an address
get_asset_infoAsset metadata (supply, divisibility, issuer)
get_asset_balancesAll holders of an asset
get_assetsSearch/list assets
get_issuancesIssuance history for an asset
get_owned_assetsAssets issued by an address
get_ordersDEX orders
get_orderSingle order by hash
get_order_matchesMatches for an order
get_orders_by_pairOrder book for a trading pair
get_asset_ordersOrders involving an asset
get_address_ordersOrders by address
get_dispensersDispensers
get_dispenserSingle dispenser by hash
get_dispensers_by_assetDispensers for an asset
get_address_dispensersDispensers by address
get_dispensesPurchases from a dispenser
get_dividendsDividend distributions for an asset
get_address_transactionsTransaction history for an address
get_sendsToken transfers from an address
get_transactionSingle transaction by hash
get_utxo_balancesTokens attached to a UTXO
get_latest_blockLatest block info

Compose (18)

ToolDescription
compose_sendSend tokens to an address
compose_mpmaMulti-party multi-asset send
compose_orderPlace a DEX order
compose_cancelCancel an open order
compose_btcpayPay for a matched BTC order
compose_issuanceCreate or update an asset (supports inscriptions)
compose_dispenserCreate, open, or close a dispenser
compose_dispenseBuy from a dispenser
compose_dividendDistribute dividends to holders
compose_broadcastBroadcast a message (supports inscriptions)
compose_sweepSweep all assets to a destination
compose_destroyPermanently burn tokens
compose_fairminterCreate a fair launch (supports inscriptions)
compose_xcp420_fairminterXCP-420 compliant fair launch
compose_fairmintMint from an active fair launch
compose_attachAttach tokens to a UTXO
compose_detachDetach tokens from a UTXO
compose_movetoutxoMove a UTXO to a new output

Bitcoin (4)

ToolDescription
sign_and_broadcastSign and broadcast (requires signing keys)
broadcast_transactionBroadcast an already-signed transaction
get_fee_estimateCurrent fee rate estimate
decode_transactionDecode raw transaction hex

Utility (3)

ToolDescription
unpack_transactionDecode a Counterparty message from a transaction
get_server_infoNode status and version
api_requestRaw API request to any endpoint (full API reference)

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.gitcd mcp-servernpm installnpm test

Test locally:

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

License

MIT

Source: README.md at commit 7391d71

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.0.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts