Skip to main content
Glama
Mavline

Polymarket Gamma MCP Server

by Mavline
README.md
# Polymarket Gamma MCP Server

MCP Server для работы с Polymarket Gamma Markets API - получение данных о рынках предсказаний, событиях и аналитике.

## 🚀 Возможности

### 📊 **Основные функции:**
- **Трендовые рынки** - получение популярных рынков с высоким объёмом
- **Поиск рынков** - поиск по тексту в вопросах и описаниях
- **Фильтрация по категориям** - рынки по тегам (Politics, Sports, Crypto)
- **Детали рынков** - полная информация о конкретном рынке
- **События** - получение событий с связанными рынками
- **API Usage** - отслеживание использования запросов

### 🔧 **Технические особенности:**
- **Без ключей API** - публичный доступ к Gamma API
- **TypeScript** - строгая типизация и валидация данных
- **Retry логика** - автоматические повторы при сетевых ошибках
- **Форматированный вывод** - удобное отображение данных на русском языке
- **Отслеживание лимитов** - мониторинг использования API

## 📦 Установка

```bash
# Клонировать и установить зависимости
npm install

# Собрать проект
npm run build

# Запустить тесты
npm test
```

## 🛠️ Доступные инструменты

### 1. `get_trending_markets`
Получение трендовых рынков с высоким объёмом торгов.

**Параметры:**
- `limit` (число, по умолчанию: 20) - количество рынков

**Пример ответа:**
```json
{
  "summary": "Найдено 5 трендовых рынков",
  "apiUsage": "4/1000 запросов использовано, 996 осталось",
  "markets": "1. Will Joe Biden get Coronavirus before the election?\n   💰 Объём: $32,257 | 💧 Ликвидность: $0\n   🏷️ Теги: US-current-affairs\n   📊 Цены: Yes: 0.0% | No: 0.0%",
  "rawData": [...]
}
```

### 2. `get_markets_by_category`
Получение рынков по категориям/тегам.

**Параметры:**
- `tags` (массив строк, обязательно) - категории для фильтрации
- `limit` (число, по умолчанию: 50) - количество рынков

**Пример:**
```json
{
  "tags": ["Politics", "US Election"],
  "limit": 20
}
```

### 3. `search_markets`
Поиск рынков по текстовому запросу.

**Параметры:**
- `query` (строка, обязательно) - поисковый запрос
- `limit` (число, по умолчанию: 30) - количество результатов

### 4. `get_market_details`
Получение детальной информации о конкретном рынке.

**Параметры:**
- `marketId` (строка, обязательно) - ID рынка

### 5. `get_events`
Получение событий с связанными рынками.

**Параметры:**
- `limit` (число, по умолчанию: 20) - количество событий
- `active` (булево, по умолчанию: true) - только активные события
- `orderBy` (строка) - сортировка: volume, liquidity, endDate, createdAt

### 6. `get_event_details`
Получение детальной информации о событии.

**Параметры:**
- `eventId` (строка, обязательно) - ID события

### 7. `get_api_usage`
Получение статистики использования API.

## 🔗 API Endpoints

Сервер использует следующие эндпоинты Gamma API:
- `GET /markets` - список рынков
- `GET /markets/{id}` - детали рынка
- `GET /events` - список событий
- `GET /events/{id}` - детали события

**Базовый URL:** `https://gamma-api.polymarket.com`

## 📊 Структура данных

### ProcessedMarket
```typescript
{
  id: string;
  question: string;
  description?: string;
  outcomes: string[];
  prices: number[];
  volume: number;
  liquidity: number;
  endDate: string;
  tags: string[];
  active: boolean;
  closed: boolean;
  resolved: boolean;
  negRisk: boolean;
  spread?: number;
  slug: string;
  tokens: Array<{
    id: string;
    outcome: string;
    price: number;
    winner?: boolean;
  }>;
}
```

### ProcessedEvent
```typescript
{
  id: string;
  title: string;
  description?: string;
  slug: string;
  tags: string[];
  startDate?: string;
  endDate?: string;
  active: boolean;
  closed: boolean;
  volume?: number;
  liquidity?: number;
  marketsCount: number;
  topMarkets?: ProcessedMarket[];
}
```

## 🧪 Тестирование

```bash
# Основные тесты
npm test

# Отладка API структуры
node test/debug-api.js
```

## ⚠️ Ограничения

1. **Публичный API** - без ключей, но с разумными лимитами
2. **Только чтение** - нельзя размещать ордера (для этого нужен CLOB API)
3. **Упрощённый поиск** - пока без полнотекстового поиска
4. **Данные с задержкой** - не real-time котировки

## 🔄 Интеграция с Windsurf

Добавьте в `mcp_config.json`:

```json
{
  "mcpServers": {
    "polymarket-gamma": {
      "command": "node",
      "args": ["C:/Users/pavelk/Desktop/Projects/my_own/Bet/polymarket/mcp-servers/polymarket-gamma-server/dist/index.js"],
      "cwd": "C:/Users/pavelk/Desktop/Projects/my_own/Bet/polymarket/mcp-servers/polymarket-gamma-server"
    }
  }
}
```

## 📈 Использование

Этот сервер идеально подходит для:
- **Аналитики рынков** - исследование трендов и объёмов
- **Мониторинга событий** - отслеживание новых рынков
- **Исследований** - сбор данных для анализа
- **Скрининга возможностей** - поиск интересных рынков

Для реальной торговли используйте отдельный CLOB MCP Server.

## 🚀 Следующие шаги

1. ✅ **Gamma API Server** - готов и протестирован
2. 🔄 **CLOB API Server** - для торговых операций
3. 🔄 **WebSocket Server** - для real-time данных
4. 🔄 **Unified Server** - объединение всех возможностей

TDQS

A3.7/5.0

Scored across 8 tools

Disambiguation4/5

Most tools are distinct: trending, category, search, details, events, event details, API usage. However, get_events and get_sports_events overlap somewhat, though the descriptions clarify sports is a subset. Search and category are clearly different. Overall, boundaries are mostly clear.

Naming Consistency5/5

All tools follow the consistent pattern of 'get_' + noun, with clear nouns like 'trending_markets', 'market_details', 'events', etc. No mixed conventions or unexpected verbs.

Tool Count5/5

8 tools are well-scoped for a read-only market data server. Each covers a distinct query type, and none feel redundant or excessive.

Completeness4/5

The surface covers market retrieval (trending, by category, search), market details, event listings and details, and API usage. Minor gaps like historical price data or market resolution info exist, but core read-only workflows are complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues