Polymarket MCP Bot Analyst
MCP server for analyzing successful trading bots on Polymarket, enabling discovery of top traders, AI-powered strategy classification, and bot detection.
README
š¤ Polymarket MCP Bot Analyst
MCP server for analyzing successful trading bots on Polymarket ā discover top traders, classify their strategies with AI, and detect bots on the world's largest prediction market.
š Table of Contents
- Overview
- Architecture
- Tools
- Getting Started
- Connect to Claude Desktop
- Run the Test Suite
- Project Structure
- Configuration
Overview
This project implements a Model Context Protocol (MCP) server that exposes three powerful tools for analyzing trading activity on Polymarket. It combines real-time leaderboard data from Polymarket's Data API with LLM-powered strategy classification via OpenAI.
Key Features
- š Top Trader Discovery ā Fetch leaderboard rankings by timeframe
- š§ AI Strategy Analysis ā Classify strategies (arbitrage, market-making, etc.) using GPT-4o-mini
- š¤ Bot Detection ā Heuristic + LLM-based identification of automated traders
- š Batch Reporting ā Concurrent analysis of multiple profiles
- š Resilient API Layer ā Exponential backoff, rate-limit handling (429 + Retry-After), graceful fallbacks
graph TD
subgraph Client ["Client Layer"]
MCP_Client["MCP Client (e.g., Claude Desktop)"]
end
subgraph Server ["MCP Server Layer"]
index["index.ts (McpServer)"]
Validation["Zod Validation"]
end
subgraph Tools ["Tool Handlers"]
Traders["traders.ts (find_top_traders)"]
Analysis["analysis.ts (analyze_trader_strategy)"]
Reports["reports.ts (generate_batch_report)"]
end
subgraph Services ["External Services & Utils"]
PAPI["api/polymarket.ts (Polymarket Data API)"]
LLM["utils/llm.ts (OpenAI GPT-4o-mini)"]
end
MCP_Client -- "stdio (JSON-RPC)" --> index
index --> Validation
Validation --> Traders
Validation --> Analysis
Validation --> Reports
Traders --> PAPI
Analysis --> PAPI
Analysis --> LLM
Reports --> Analysis
Reports --> PAPI
style Client fill:#f9f,stroke:#333,stroke-width:2px
style Server fill:#bbf,stroke:#333,stroke-width:2px
style Tools fill:#dfd,stroke:#333,stroke-width:2px
style Services fill:#ffd,stroke:#333,stroke-width:2px
Tool Execution Flow
sequenceDiagram
participant C as MCP Client
participant S as MCP Server
participant T as Tool Handler
participant P as Polymarket API
participant L as OpenAI LLM
C->>S: Call "analyze_trader_strategy"
S->>S: Validate Input (Zod)
S->>T: handleAnalyzeStrategy(profile_id)
T->>P: Fetch Profile Data & PnL
P-->>T: User Data
T->>P: Fetch Trade History
P-->>T: Trade History
T->>L: Classify strategy (history)
L-->>T: strategy_analysis (JSON)
T-->>S: strategy_result
S-->>C: Tool Response (JSON)
Tools
1. find_top_traders
Fetch top-performing traders from the Polymarket leaderboard with bot detection.
| Parameter | Type | Description |
|---|---|---|
limit |
integer | Number of traders (1ā50) |
timeframe |
string | "7d", "30d", or "all_time" |
Output: Array<{ profile_id, pnl, is_bot }>
2. analyze_trader_strategy
Deep-dive analysis of a single trader using trade history + LLM classification.
| Parameter | Type | Description |
|---|---|---|
profile_id |
string | Wallet address (0xā¦) or username (@name) |
Output: { strategy_description, risk_level, risk_justification, success_score, is_bot }
3. generate_batch_report
Concurrent analysis of multiple profiles with error-resilient execution.
| Parameter | Type | Description |
|---|---|---|
profile_ids |
string[] | Array of profile IDs (1ā50) |
Output: Array<{ profile_id, pnl, strategy_description, risk_level, risk_justification, success_score, is_bot }>
Getting Started
Prerequisites
- Node.js ā„ 22
- npm ā„ 10
- OpenAI API key (for strategy analysis)
Installation
# Clone the repository
git clone <your-repo-url>
cd polymarket-mcp-bot-analyst
# Install dependencies
npm install
# Configure environment
cp .env.example .env
# Edit .env and add your OPENAI_API_KEY
Build & Run
# Build TypeScript
npm run build
# Start the MCP server (stdio transport)
npm start
# Or run directly with tsx (development)
npm run dev
Connect to Claude Desktop
Add this server to your Claude Desktop configuration:
macOS
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"polymarket-bot-analyst": {
"command": "node",
"args": ["/absolute/path/to/polymarket-mcp-bot-analyst/dist/index.js"],
"env": {
"OPENAI_API_KEY": "sk-..."
}
}
}
}
Windows
Edit %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"polymarket-bot-analyst": {
"command": "node",
"args": ["C:\\path\\to\\polymarket-mcp-bot-analyst\\dist\\index.js"],
"env": {
"OPENAI_API_KEY": "sk-..."
}
}
}
}
After saving, restart Claude Desktop. The three tools will appear in the tools menu (šØ icon).
Run the Test Suite
The test runner executes all three tools against the live Polymarket API and generates the required JSON artifacts:
npm run test:run
This produces:
| File | Description |
|---|---|
test_run.json |
Full execution log with data for 3+ traders |
performance_report.json |
Latency metrics for each endpoint |
my_report.json |
Architectural description of each endpoint |
Project Structure
polymarket-mcp-bot-analyst/
āāā src/
ā āāā index.ts # MCP server entry point
ā āāā types.ts # Shared interfaces & config
ā āāā api/
ā ā āāā polymarket.ts # Polymarket Data API wrapper
ā āāā tools/
ā ā āāā traders.ts # find_top_traders handler
ā ā āāā analysis.ts # analyze_trader_strategy handler
ā ā āāā reports.ts # generate_batch_report handler
ā āāā utils/
ā ā āāā llm.ts # OpenAI LLM integration
ā āāā test-run.ts # Artifact generator script
āāā test_run.json # Generated test run log
āāā performance_report.json # Generated latency metrics
āāā my_report.json # Generated architecture report
āāā package.json
āāā tsconfig.json
āāā .env.example
āāā .gitignore
Configuration
| Environment Variable | Required | Description |
|---|---|---|
OPENAI_API_KEY |
Yes | OpenAI API key for GPT-4o-mini |
Internal Constants (in src/types.ts)
| Constant | Default | Description |
|---|---|---|
POLYMARKET_API_BASE |
https://data-api.polymarket.com |
API base URL |
REQUEST_TIMEOUT_MS |
15000 |
HTTP request timeout |
MAX_RETRIES |
3 |
Max retry attempts per request |
RETRY_BASE_DELAY_MS |
1000 |
Base delay for exponential backoff |
BOT_TRADE_THRESHOLD |
200 |
Min trades to flag as bot |
BOT_TRADES_PER_HOUR_THRESHOLD |
10 |
Min trades/hour for bot flag |
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.