内容
# 📊 Polymarket MCP 服务器
[](https://www.npmjs.com/package/@iqai/mcp-polymarket)
[](https://opensource.org/licenses/MIT)
## 📖 概述
Polymarket MCP 服务器使 AI 代理能够与 [Polymarket](https://polymarket.com) 进行交互,Polymarket 是一个领先的基于 Polygon 的预测市场平台。该服务器通过 Polymarket API 提供对市场数据、实时定价、订单簿和交易功能的全面访问。
通过实施模型上下文协议(MCP),该服务器允许大型语言模型(LLM)直接在其上下文窗口中发现预测市场、分析赔率(概率)、执行交易并跟踪投资组合头寸,从而弥合了 AI 与去中心化预测市场之间的差距。
## ✨ 功能
* **市场发现**:按关键词、标签和状态搜索和筛选预测市场。
* **实时定价**:访问任何结果代币的实时价格数据、隐含概率和市场深度(订单簿)。
* **交易功能**:下达限价订单、市价订单和管理未成交订单(需要私钥)。
* **投资组合跟踪**:监控特定钱包地址的用户头寸、交易历史和余额。
* **订单管理**:查看、取消和管理所有市场的未成交订单。
## 📦 安装
### 🚀 使用 npx(推荐)
无需全局安装即可使用此服务器:
```bash
npx @iqai/mcp-polymarket
```
### 🔧 从源代码构建
```bash
git clone https://github.com/IQAIcom/mcp-polymarket.git
cd mcp-polymarket
pnpm install
pnpm run build
```
## ⚡ 使用 MCP 客户端运行
在您的 MCP 客户端设置中添加以下配置(例如 `claude_desktop_config.json`)。
### 📋 最小配置(只读)
```json
{
"mcpServers": {
"polymarket": {
"command": "npx",
"args": ["-y", "@iqai/mcp-polymarket"]
}
}
}
```
### ⚙️ 高级配置(支持交易)
```json
{
"mcpServers": {
"polymarket": {
"command": "npx",
"args": ["-y", "@iqai/mcp-polymarket"],
"env": {
"POLYMARKET_PRIVATE_KEY": "your_private_key_here",
"POLYGON_RPC_URL": "https://polygon-mainnet.g.alchemy.com/v2/<YOUR_KEY>"
}
}
}
}
```
## 🔐 配置(环境变量)
| 变量 | 是否必需 | 描述 | 默认值 |
| :--- | :--- | :--- | :--- |
| `POLYMARKET_PRIVATE_KEY` | 否 | 交易私钥(启用交易工具) | - |
| `POLYGON_RPC_URL` | 否 | 交易的 Polygon RPC URL | `https://polygon-rpc.com` |
| `CLOB_API_BASE` | 否 | Polymarket CLOB API 基地址 | `https://clob.polymarket.com` |
| `CHAIN_ID` | 否 | 区块链网络链 ID | `137`(Polygon) |
| `SIGNATURE_TYPE` | 否 | 交易签名类型 | `2` |
| `POLYMARKET_FUNDER` | 否 | 交易的资助者地址 | - |
| `FUNDER_ADDRESS` | 否 | 替代资助者地址(别名) | - |
## 💡 使用示例
### 🔍 市场发现
* "Polymarket 上目前最活跃的预测市场是什么?"
* "搜索与 'Bitcoin' 或 'BTC' 相关的市场。"
* "在 'Crypto' 类别中找到市场。"
* "Polymarket 上今天有哪些热门事件?"
### 📊 分析和定价
* "显示 2024 选举市场的订单簿。"
* "根据 'Yes' 代币的价格,当前的概率是多少?"
* "获取 'will-trump-win-2024' 市场的详细信息。"
### 💼 投资组合和交易(需要私钥)
* "我的当前 USDC 余额和限额是多少?"
* "显示我在所有市场上的未成交订单。"
* "以 0.65 价格购买 100 股。"
* "取消我在该市场上的所有未成交订单。"
## 🛠️ MCP 工具
<!-- AUTO-GENERATED TOOLS START -->
### `approve_allowances`
授予交易所需的 USDC 和 Conditional Tokens 权限。自动仅批准未设置权限的合约。包括常规和 NegRisk 市场。这些权限是标准的 ERC20/ERC1155 权限,可以在任何时候撤销。
| 参数 | 类型 | 是否必需 | 描述 |
|-----------|------|----------|-------------|
| `waitForConfirmations` | integer | 否 | 等待确认后再返回(0 = 立即返回)。默认值:0 |
### `cancel_all_orders`
取消认证账户的所有未成交订单。
_无参数_
### `cancel_order`
取消特定订单,订单 ID。
| 参数 | 类型 | 是否必需 | 描述 |
|-----------|------|----------|-------------|
| `orderId` | string | 是 | 要取消的订单的唯一标识符 |
### `get_all_tags`
获取所有可用的市场分类标签。
_无参数_
### `get_balance_allowance`
获取认证账户的余额和限额信息。可以检查 COLLATERAL 或 CONDITIONAL 代币。
| 参数 | 类型 | 是否必需 | 描述 |
|-----------|------|----------|-------------|
| `assetType` | string | 是 | 要检查余额的资产类型:COLLATERAL 或 CONDITIONAL |
| `tokenID` | string | 否 | 条件代币余额的可选代币 ID |
### `get_event_by_slug`
获取特定事件的详细信息,事件 ID。
| 参数 | 类型 | 是否必需 | 描述 |
|-----------|------|----------|-------------|
| `slug` | string | 是 | 事件 ID |
### `get_market_by_slug`
获取特定市场的详细信息,市场 ID。
| 参数 | 类型 | 是否必需 | 描述 |
|-----------|------|----------|-------------|
| `slug` | string | 是 | 市场 ID(例如 'will-trump-win-2024') |
### `get_markets_by_tag`
获取按特定标签 ID 筛选的市场。适用于在特定类别中找到市场。
| 参数 | 类型 | 是否必需 | 默认值 | 描述 |
|-----------|------|----------|---------|-------------|
| `tag_id` | string | 是 | | 要筛选的标签 ID |
| `limit` | number | 否 | 20 | 返回的市场数量(默认值:20) |
| `closed` | boolean | 否 | false | 包括已关闭的市场(默认值:false) |
### `get_open_orders`
获取认证账户的所有未成交订单。可以按市场筛选。
| 参数 | 类型 | 是否必需 | 描述 |
|-----------|------|----------|-------------|
| `market` | string | 否 | 可选的市场地址,用于筛选订单 |
### `get_order`
获取特定订单的详细信息,订单 ID。
| 参数 | 类型 | 是否必需 | 描述 |
|-----------|------|----------|-------------|
| `orderId` | string | 是 | 订单的唯一标识符 |
### `get_order_book`
获取特定市场代币的当前订单簿。显示所有活跃的买入和卖出订单。
| 参数 | 类型 | 是否必需 | 描述 |
|-----------|------|----------|-------------|
| `token_id` | string | 是 | 市场结果的代币 ID |
### `get_positions`
获取钱包地址的所有头寸,当前值。返回头寸详情,包括规模、当前价格、当前值和盈亏。使用 Polymarket 数据 API 进行准确的头寸估值。
| 参数 | 类型 | 是否必需 | 默认值 | 描述 |
|-----------|------|----------|---------|-------------|
| `user` | string | 否 | | 要获取头寸的钱包地址。如果未提供,则使用 POLYMARKET_FUNDER 环境变量。 |
| `limit` | number | 否 | 100 | 返回的最大头寸数量(默认值:100) |
### `get_trade_history`
获取认证账户的交易历史。可以按市场或做市商地址筛选。
| 参数 | 类型 | 是否必需 | 描述 |
|-----------|------|----------|-------------|
| `market` | string | 否 | 可选的市场地址,用于筛选交易 |
| `maker_address` | string | 否 | 可选的做市商地址,用于筛选交易 |
### `list_active_markets`
列出所有当前活跃的市场,分页。返回尚未关闭的市场。
| 参数 | 类型 | 是否必需 | 默认值 | 描述 |
|-----------|------|----------|---------|-------------|
| `limit` | number | 否 | 20 | 返回的市场数量(默认值:20,最大值:100) |
| `offset` | number | 否 | 0 | 分页时跳过的市场数量(默认值:0) |
### `place_market_order`
下达立即以当前市场价格执行的市价订单。重要:对于买入订单,金额是您要花费的美元金额($USD)。对于卖出订单,金额是卖出的股份数量。例如:amount=5,side=BUY 表示“花费 $5 以市场价格购买股份”。买入订单最低 $1。
| 参数 | 类型 | 是否必需 | 描述 |
|-----------|------|----------|-------------|
| `tokenId` | string | 是 | 市场结果的代币 ID |
| `amount` | number | 是 | 买入订单:要花费的美元金额($)。卖出订单:要卖出的股份数量。买入订单最低 $1。 |
| `side` | string | 是 | 订单方向:BUY 或 SELL |
| `orderType` | string | 否 | 订单类型:FOK(立即成交或取消)或 FAK(立即成交并取消)。默认值:FOK |
### `place_order`
在 Polymarket 上以特定价格下达限价订单。指定股份数量(规模)和价格(0-1)。对于买入和卖出订单,您都指定要交易的股份数量。例如:size=10,price=0.6 表示以 $0.60 每股的价格买入/卖出 10 股(总计:$6)。
| 参数 | 类型 | 是否必需 | 描述 |
|-----------|------|----------|-------------|
| `tokenId` | string | 是 | 市场结果的代币 ID |
| `price` | number | 是 | 订单的限价(0 到 1 之间)。这是每股的概率/价格。 |
| `size` | number | 是 | 交易的股份数量。对于买入和卖出订单,这始终是结果代币/股份的数量。 |
| `side` | string | 是 | 订单方向:BUY 或 SELL |
| `orderType` | string | 否 | 订单类型:GTC(有效直到取消)或 GTD(有效直到日期)。默认值:GTC |
### `redeem_positions`
从已解决的 Polymarket 预测市场中兑换(领取)奖金。使用此功能从已结算的市场中领取 USDC。对于常规市场,您需要 conditionId。对于负风险市场,您还需要 tokenId,并应设置 negRisk=true。市场必须在兑换前已解决。
| 参数 | 类型 | 是否必需 | 默认值 | 描述 |
|-----------|------|----------|---------|-------------|
| `conditionId` | string | 是 | | 已解决市场的 condition ID(市场 ID)。这通常是一个 32 字节的十六进制字符串。 |
| `tokenId` | string | 否 | | 要兑换的头寸的代币 ID。适用于负风险市场,可选用于常规市场。 |
| `outcomeIndex` | number | 否 | | 结果索引:0 表示 Yes/第一个结果,1 表示 No/第二个结果。用于负风险市场,以确定要兑换哪些代币。 |
| `negRisk` | boolean | 否 | false | 是否为负风险市场。负风险市场使用 NegRiskAdapter 合同进行兑换。默认值:false |
### `search_markets`
使用文本搜索查找市场、事件和个人资料。
| 参数 | 类型 | 是否必需 | 描述 |
|-----------|------|----------|-------------|
| `query` | string | 是 | 搜索查询文本 |
### `update_balance_allowance`
更新认证账户的余额和限额。交易前需要此操作。
| 参数 | 类型 | 是否必需 | 描述 |
|-----------|------|----------|-------------|
| `assetType` | string | 是 | 要更新限额的资产类型:COLLATERAL 或 CONDITIONAL |
| `tokenID` | string | 否 | 条件代币的可选代币 ID |
<!-- AUTO-GENERATED TOOLS END -->
## 👨💻 开发
### 🏗️ 构建项目
```bash
pnpm run build
```
### 👁️ 开发模式(监听)
```bash
pnpm run watch
```
### ✅ 校验和格式化
```bash
pnpm run lint
pnpm run format
```
### 📁 项目结构
* `src/tools/`:单个工具定义
* `src/services/`:API 客户端和业务逻辑
* `src/index.ts`:服务器入口点
## 📚 资源
* [Polymarket API 文档](https://docs.polymarket.com)
* [模型上下文协议(MCP)](https://modelcontextprotocol.io)
* [Polymarket 平台](https://polymarket.com)
## ⚠️ 免责声明
本项目是一个非官方工具,与 Polymarket 没有直接关联。它与金融和预测市场数据交互。用户应谨慎行事,并独立验证所有数据。交易预测市场存在风险。
## 📄 许可证
[MIT](LICENSE)