UNPKG

polymarket-mcp

Version:

A Model Context Protocol (MCP) server for interacting with Polymarket prediction markets

250 lines (178 loc) 6.52 kB
# Polymarket MCP Server A Model Context Protocol (MCP) server that provides AI assistants with the ability to interact with Polymarket. ## Features - **Market Discovery**: Browse and search current prediction markets - **Real-time Data**: Get detailed market information, prices, and statistics - **Trading**: Place market orders (FOK/FAK) and limit orders (GTC/GTD) - **Portfolio Management**: View balances, positions, and P&L - **Order Management**: Track and manage your active orders - **Multi-format Support**: Works with market slugs or direct token IDs ## Installation ### 1. Clone and Install ```bash git clone https://github.com/yourusername/polymarket-mcp-server.git cd <folder-name> pnpm install ``` ### 2. Install Required Dependencies ```bash pnpm install @modelcontextprotocol/sdk zod @polymarket/clob-client ethers ``` ### 3. Environment Configuration Create a `.env` file in the project root: ```env # Required: Your Polygon wallet private key PRIVATE_KEY=your_private_key_here # Optional: Custom CLOB API URL (defaults to https://clob.polymarket.com) CLOB_API_URL=https://clob.polymarket.com # Optional: Signature type (defaults to 0) SIGNATURE_TYPE=0 # Optional: Existing API credentials (will be auto-generated if not provided) CLOB_API_KEY=your_api_key CLOB_SECRET=your_secret CLOB_PASS_PHRASE=your_passphrase ``` ### 4. MCP Configuration Add the server to your MCP settings file: ```json { "mcpServers": { "polymarket": { "command": "node", "args": ["/path/to/your/index.js"], "env": { "PRIVATE_KEY": "your_private_key_here" } } } } ``` ## Available Tools ### 1. Market Discovery #### `getAllMarkets` Get current prediction markets with optional filtering. ``` Get me today's trending markets ``` #### `getMarketDetails` Get detailed information about a specific market using its slug. ``` Get details for the market "will-donald-trump-win-the-2024-us-presidential-election" Show me info about "bitcoin-above-100k-by-end-of-2024" ``` ### 2. Trading Operations #### `placeMarketOrder` Execute immediate market orders (Fill or Kill / Fill and Kill). ``` Buy $100 of YES on "bitcoin-above-100k-by-end-of-2024" using FOK order Sell $50 of NO on the Trump election market with FAK ``` **Parameters:** - `marketSlug` or `tokenID`: Market identifier - `outcome`: YES or NO (if using marketSlug) - `amount`: USD amount to trade - `side`: BUY or SELL - `orderType`: FOK (Fill or Kill) or FAK (Fill and Kill) #### `placeLimitOrder` Place limit orders at specific prices (Good Till Cancelled / Good Till Date). ``` Place a limit buy order for 100 shares at $0.65 on the Bitcoin market Set a GTC sell order for 50 shares at $0.80 on Trump election ``` **Parameters:** - `marketSlug` or `tokenID`: Market identifier - `outcome`: YES or NO (if using marketSlug) - `price`: Price per share (0-1) - `size`: Number of shares - `side`: BUY or SELL - `orderType`: GTC (Good Till Cancelled) or GTD (Good Till Date) - `expirationMinutes`: Expiration time (GTD only) ### 3. Portfolio Management #### `getPortfolio` View complete portfolio including balances and positions. ``` Show me my portfolio What's my current P&L? Check my USDC balance ``` #### `getOrder` Get details of a specific order by ID. ``` Check order status for 0x831680cb77da95792af5a052c87c8abf9d2ae5cb21f275670bc0ff58f2823c5c ``` ## Usage Examples ### Starting the Server ## Important: Always run the server using Node.js directly to ensure proper initialization: ```bash node <path-to-index.js> ``` This will: Initialize your wallet connection Set up required token allowances (USDC approvals for CTF and Exchange contracts) Generate or use existing API credentials Start the MCP server ### Basic Market Research ``` "Get details about the market 'ai-will-achieve-agi-by-2025'" ``` ### Simple Trading ``` "Buy $20 of YES on 'will-spacex-reach-mars-by-2030' using a market order" ``` ### Portfolio Monitoring ``` "Show me my current portfolio and P&L" "Check my USDC balance on Polymarket" ``` ### Advanced Trading ``` "Set a GTC limit sell order for 100 shares at $0.85 on token ID 123456" "Place a FOK buy order for $500 on the climate change market" "Check the status of my order 0x831680..." ``` ## Market Slug Examples Market slugs are found in Polymarket URLs: - `https://polymarket.com/event/will-donald-trump-win-the-2024-us-presidential-election` - Slug: `will-donald-trump-win-the-2024-us-presidential-election` - `https://polymarket.com/event/bitcoin-above-100k-by-end-of-2024` - Slug: `bitcoin-above-100k-by-end-of-2024` ### API Limits - Polymarket may have rate limits on API calls - Large orders may have slippage on smaller markets - Some markets may have low liquidity ## Troubleshooting ### Common Issues **"Client not initialized"** - Check your `PRIVATE_KEY` is set correctly - Ensure you have USDC balance for gas fees - Verify Polygon network connectivity **"Market not found"** - Double-check the market slug spelling - Ensure the market is still active - Try using direct token ID instead **"Insufficient balance"** - Add USDC to your Polygon wallet - Check if allowances were set properly - Verify you're on Polygon Mainnet **"Order failed"** - Check if market is still open for trading - Verify price is within valid range (0-1) - Ensure sufficient balance for the trade ## API Reference ### Market Data Endpoints - **Gamma API**: `https://gamma-api.polymarket.com/markets` - **Data API**: `https://data-api.polymarket.com/positions` - **CLOB API**: `https://clob.polymarket.com` ### Contract Addresses (Polygon) - **USDC**: `0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174` - **CTF**: `0x4D97DCd97eC945f40cF65F87097ACe5EA0476045` - **Exchange**: `0x4bFb41d5B3570DeFd03C39a9A4D8dE6Bd8B8982E` ## Contributing 1. Fork the repository 2. Create a feature branch (`git checkout -b feature/amazing-feature`) 3. Commit your changes (`git commit -m 'Add amazing feature'`) 4. Push to the branch (`git push origin feature/amazing-feature`) 5. Open a Pull Request ## Support - **Issues**: [GitHub Issues](https://github.com/PlayAINetwork/Polymarket-mcp/issues) - **Discussions**: [GitHub Discussions](https://github.com/PlayAINetwork/Polymarket-mcp/discussions)