polymarket-mcp
Version:
A Model Context Protocol (MCP) server for interacting with Polymarket prediction markets
250 lines (178 loc) • 6.52 kB
Markdown
# 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)