A conversational MCP server that enables bridging USDC between Ethereum and Stacks through natural language interactions with ChatGPT, handling deposits, withdrawals, and live status tracking via React widgets.
SaferSkills independently audited USDCx Bridge (MCP Server) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Bridge USDC to Stacks using ChatGPT. No contracts. No complexity. Just conversation.
The first conversational bridge interface built on ChatGPT's Apps SDK and Model Context Protocol.
Talk to ChatGPT, connect your wallets (MetaMask + Leather), and bridge USDC between Ethereum and Stacks—all without leaving the chat interface.
Bridging USDC to Stacks today requires manual smart contract calls, complex address encoding (c32 → bytes32), and waiting 15-60 minutes with zero visibility.
USDCx Bridge makes it as easy as describing what you want in plain English.
https://usdcxbridge.fly.dev/mcp"Bridge USDC to Stacks"That's it. The widget will appear and guide you through the rest.
# Clone repo
git clone https://github.com/yourusername/usdcx-bridge.git
cd usdcx-bridge
# Install dependencies
npm install
# Build everything (server + widgets)
npm run build
# Run MCP server locally (stdio mode)
npm start
# Run HTTP server (for ChatGPT integration)
npm run start:http
# Test with MCP inspector
npm testCreate a .env file:
# Ethereum Network (mainnet or testnet)
ETHEREUM_NETWORK=testnet
ETHEREUM_RPC_URL=https://ethereum-sepolia.publicnode.com
# Stacks Network
STACKS_NETWORK=testnet
# Contract Addresses (Testnet)
XRESERVE_CONTRACT=0x008888878f94C0d87defdf0B07f46B93C1934442
USDC_CONTRACT=0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238
STACKS_USDCX_CONTRACT=ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.usdcx-v1
# HTTP Server
PORT=3001
BASE_URL=http://localhost:3001usdcx-bridge/
├── src/
│ ├── server/
│ │ ├── index.ts # MCP server (stdio mode)
│ │ ├── http-server.ts # HTTP wrapper for ChatGPT
│ │ └── lib/
│ │ ├── ethereum.ts # Ethereum/xReserve logic
│ │ ├── stacks.ts # Stacks/USDCx logic
│ │ └── helpers.ts # Address encoding utilities
│ └── widgets/
│ ├── DepositWidget.tsx # Ethereum → Stacks
│ ├── WithdrawalWidget.tsx # Stacks → Ethereum
│ ├── StatusWidget.tsx # Transaction tracking
│ └── hooks/
│ ├── useMetaMask.ts # MetaMask integration
│ └── useLeather.ts # Leather wallet integration
├── dist/ # Built files
├── package.json
├── tsconfig.json
└── README.mdChatGPT
↓
MCP Server (tools: prepareDeposit, prepareWithdrawal, checkStatus)
↓
React Widgets (wallet connection + transaction signing)
↓
Smart Contracts (xReserve on Ethereum, usdcx-v1 on Stacks)The server exposes these tools to ChatGPT:
prepareDepositPrepares USDC → USDCx bridge transaction (Ethereum to Stacks)
Parameters:
amount - Amount of USDC to bridgestacksRecipient - Destination Stacks addressuserEthereumAddress - User's Ethereum addressReturns: Widget URL for MetaMask signing
prepareWithdrawalPrepares USDCx → USDC withdrawal transaction (Stacks to Ethereum)
Parameters:
amount - Amount of USDCx to withdraw (minimum 4.80)ethereumRecipient - Destination Ethereum addressstacksAddress - User's Stacks addressReturns: Widget URL for Leather signing
checkStatusChecks transaction status on either chain
Parameters:
txHash - Transaction hashchain - Either "ethereum" or "stacks"Returns: Status widget with live updates
getBalancesGets USDC and USDCx balances
Parameters:
ethereumAddress (optional)stacksAddress (optional)Returns: Balance information
healthCheckVerifies bridge contracts are operational
Returns: System status
# Build image
docker build -t usdcx-bridge .
# Run container
docker run -p 3001:3001 usdcx-bridge# Install flyctl
curl -L https://fly.io/install.sh | sh
# Deploy
fly deploy# Build
npm run build
# Start
NODE_ENV=production npm run start:httpnpm testThis opens the MCP inspector for testing tools locally.
npm run build completed successfullyContributions welcome! Please:
MIT License - see LICENSE file
Built with:
Made with ❤️ for the Bitcoin & Ethereum ecosystems
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.