返回市场
MCP多市场

MCP多市场

作者:IQAIcom2 星标更新:2025-11-03

项目介绍

📊 Polymarket MCP Server

这是一个用于与Polymarket预测市场互动的Model Context Protocol (MCP)服务器实现。该服务器提供了通过Polymarket API检索市场数据和执行交易的工具,使AI代理能够无缝地与预测市场进行交互。

✨ 特性

📈 市场数据工具

  • get_market_by_slug: 获取特定市场的详细信息
  • get_event_by_slug: 获取事件(相关市场组)的信息
  • list_active_markets: 列出当前活跃的市场,并支持分页
  • search_markets: 搜索市场、事件和个人资料
  • get_markets_by_tag: 根据类别标签筛选市场
  • get_all_tags: 获取所有可用的市场标签
  • get_order_book: 查看市场的当前订单簿

💰 交易工具(可选 - 需要私钥)

当配置了POLYMARKET_PRIVATE_KEY时,交易工具会自动启用:

  • place_order: 下单(限价单,GTC/GTD)
  • place_market_order: 立即执行市价单(FOK/FAK)
  • get_open_orders: 查看你未完成的订单
  • get_order: 获取特定订单的详情
  • cancel_order: 取消特定订单
  • cancel_all_orders: 取消所有未完成的订单
  • get_trade_history: 查看你过去的交易历史
  • get_balance_allowance: 检查账户余额和限额(需要批准)
  • update_balance_allowance: 更新余额/限额元数据与交易所同步
  • approve_allowances: 授予交易所需的USDC和条件代币批准

注意:如果没有配置私钥,则只有读取市场数据的工具可用。

🚀 快速开始

此MCP服务器已发布到npm,可以直接使用npx运行 - 不需要安装!

📦 使用npx(推荐)

使用pnpx是最简单的方式,它直接从npm注册表运行包:

仅读模式(仅市场数据)

{
  "mcpServers": {
    "polymarket": {
      "command": "pnpx",
      "args": ["@iqai/mcp-polymarket"]
    }
  }
}

交易模式(带私钥)

{
  "mcpServers": {
    "polymarket": {
      "command": "pnpx",
      "args": ["@iqai/mcp-polymarket"],
      "env": {
        "POLYMARKET_PRIVATE_KEY": "your_private_key_here"
      }
    }
  }
}

可选地,你可以配置一个自定义的Polygon RPC端点(建议为了可靠性):

{
   "mcpServers": {
      "polymarket": {
         "command": "pnpx",
         "args": ["@iqai/mcp-polymarket"],
         "env": {
            "POLYMARKET_PRIVATE_KEY": "your_private_key_here",
            "POLYMARKET_RPC_URL": "https://polygon-mainnet.g.alchemy.com/v2/<YOUR_KEY>"
         }
      }
   }
}

🔧 手动安装(开发用途)

如果你想要修改服务器或参与开发:

git clone https://github.com/IQAIcom/mcp-polymarket
cd mcp-polymarket
pnpm install
pnpm run build

⚙️ 配置

服务器在stdio传输上运行,可以集成到兼容MCP的客户端中,如Claude Desktop、Cline或其他任何兼容MCP的AI代理系统。

对于Claude Desktop

在你的Claude Desktop配置文件中添加以下内容:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

如果你已经本地克隆并构建了项目,可以使用绝对路径来使用它:

{
  "mcpServers": {
    "polymarket": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-polymarket/build/index.js"],
      "env": {
        "POLYMARKET_PRIVATE_KEY": "your_private_key_here"
      }
    }
  }
}

🔐 安全与隐私

私钥安全

使用交易功能时,你需要提供以太坊钱包的私钥。你需要知道以下几点:

你的密钥是安全的:

  • MCP服务器完全在你的本地机器上运行,在Node.js环境中
  • 你的私钥永远不会离开你的电脑
  • 除了Polymarket的官方API端点外,没有数据发送给任何第三方服务器
  • 密钥仅在操作期间存储在内存中,且从未写入磁盘

⚠️ 重要安全实践:

  • 永远不要提交你的私钥到版本控制
  • 永远不要分享包含私钥的配置文件
  • 只在可信、安全的机器上使用
  • 考虑使用一个专用的钱包进行交易,资金有限
  • 保持操作系统和Node.js更新,包括安全补丁

🔒 工作原理:

  1. 在你的MCP客户端配置文件中配置你的私钥
  2. 密钥作为环境变量传递给Node.js进程
  3. 服务器使用它在你的机器上本地签名交易
  4. 签名的交易被发送到Polymarket的API
  5. 当进程结束时,密钥从内存中清除

如果没有配置私钥,只有读取市场数据的工具可用。

批准和限额

此服务器不会自动批准代币。当操作需要批准时,工具返回一个结构化的“需要批准”的响应,解释:

  • 为什么需要批准以及涉及哪些合约(USDC、CTF、交易所)
  • 你的钱包缺少哪些批准
  • 下一步:运行approve_allowances工具

运行approve_allowances后,只需重试你的原始操作。批准是标准的ERC20/ERC1155权限,可以在你的钱包中随时撤销。

💡 使用示例

配置完成后,你可以通过你的MCP客户端使用这些工具。这里有一些示例查询:

🤖 AI代理样本问题

你的AI代理现在可以回答问题和执行如下操作:

市场情报问题:

  • “目前最活跃的预测市场有哪些?”
  • “显示所有与人工智能相关的市场”
  • “比特币到年底达到10万美元的概率是多少?”
  • “查找所有‘加密货币’类别的市场”
  • “今天Polymarket上哪些事件正在流行?”

市场分析问题:

  • “2024年选举市场的订单簿深度是多少?”
  • “显示[特定市场]的买入卖出价差”
  • “我可以过滤市场的所有可用标签是什么?”
  • “获取‘will-spacex-reach-mars’市场的详细信息”

交易及投资组合问题(需要私钥):

  • “我的当前USDC余额和限额是多少?”
  • “显示我所有市场的未完成订单”
  • “过去一周的交易历史是什么?”
  • “在[市场]上以0.60的价格下单购买50股”
  • “取消我在[市场]上的所有未完成订单”
  • “我最近交易的盈亏是多少?”

📖 详细示例

市场数据示例(始终可用)

  1. 获取特定市场

    获取具有slug "will-trump-win-2024"的市场信息
    
  2. 搜索市场

    搜索与“选举”相关的市场
    
  3. 列出活跃市场

    显示最近的10个活跃市场
    
  4. 获取订单簿

    显示token ID "123456..."的订单簿
    

交易示例(需要POLYMARKET_PRIVATE_KEY)

  1. 检查余额

    检查我的COLLATERAL余额
    
  2. 下单

    在token ID "123456..."上以0.65的价格下单购买100股
    
  3. 查看未完成订单

    显示我所有的未完成订单
    
  4. 取消订单

    取消ID为"0x123..."的订单
    
  5. 授予批准(当提示时)

    授予交易所需的批准
    

    如果缺少批准,代理通常会提示运行此命令,然后重试你的操作。

📚 API 文档

此服务器使用以下Polymarket API:

🛠️ 开发

构建

pnpm run build

监视模式

pnpm run watch

代码检查和格式化

此项目使用Biome进行代码质量检查:

pnpm run check    # 检查并修复问题
pnpm run lint     # 仅检查
pnpm run format   # 仅格式化

发布管理

此项目使用Changesets进行版本管理和自动化发布。

创建更改集

当你所做的更改应该触发发布时,创建一个更改集:

pnpm changeset

这将提示你:

  1. 选择要包含的包(对于这个单一包,只需选择它)
  2. 选择更改类型(补丁、次要、主要)
  3. 描述更改

发布过程

  1. 创建并合并带有更改集的PR
  2. GitHub Action将自动创建一个“发布PR”
  3. 当发布PR被合并时,它将:
    • 更新package.json中的版本
    • 生成/更新CHANGELOG.md
    • 创建git标签
    • 发布到npm(如果已配置)

手动发布(维护者)

pnpm run version  # 更新版本和变更日志
pnpm run release  # 构建并发布到npm

📁 项目结构

mcp-polymarket/
├── src/
│   ├── services/          # 服务层
│   │   ├── api.ts         # Gamma API客户端
│   │   ├── config.ts      # 配置管理
│   │   ├── trading.ts     # 交易客户端(CLOB)
│   │   └── approvals.ts   # 批准服务(检查/断言/批准)
│   ├── tools/             # MCP工具实现
│   │   ├── cancel-all-orders.ts
│   │   ├── cancel-order.ts
│   │   ├── get-all-tags.ts
│   │   ├── get-balance-allowance.ts
│   │   ├── approve-allowances.ts
│   │   └── ...            # 其他工具文件
│   ├── index.ts           # 主MCP服务器
│   
├── dist/                  # 编译后的JavaScript输出
├── .changeset/            # 更改集配置
├── .github/               # GitHub Actions和模板
├── node_modules/          # 依赖项
├── .env.example           # 环境变量模板
├── biome.json             # Biome配置
├── package.json           # 项目依赖项和脚本
├── package-lock.json      # 锁定文件
├── pnpm-lock.yaml         # pnpm锁定文件
├── tsconfig.json          # TypeScript配置
└── README.md              # 此文件

🔧 技术栈

  • TypeScript:类型安全开发
  • fastmcp:MCP服务器实现
  • @polymarket/clob-client:Polymarket交易客户端
  • Biome:快速的代码检查器和格式化器

🎯 交易设置(高级)

要启用交易功能:

  1. 设置带有私钥的钱包

    • 创建或使用现有的以太坊钱包
    • 导出私钥(不要分享!)
  2. 在Polygon网络上为钱包充值USDC

    • 将USDC桥接到Polygon网络
    • 确保有足够的资金用于交易+gas费用
  3. 配置私钥

    • 在你的MCP服务器配置中添加POLYMARKET_PRIVATE_KEY
    • 当检测到时,服务器会自动启用交易工具
  4. 批准和限额

    • 服务器现在会在初始化时自动检查并设置所需的USDC和条件代币批准(首次运行可能需要几秒钟等待交易确认)
    • 如果你想手动管理限额,update_balance_allowance工具仍然可用

环境变量

支持以下环境变量:

  • POLYMARKET_PRIVATE_KEY(交易所需):用于交易的钱包私钥
  • POLYMARKET_RPC_URL(可选):广播批准交易的Polygon RPC URL。默认值为https://polygon-rpc.com

关于依赖项:此项目使用@polymarket/clob-client,其间接依赖项在旧版本的axios中有已知漏洞。这些漏洞(SSRF、CSRF)在这种用例中得到了缓解,因为:

  • 服务器仅连接到受信任的Polymarket API端点
  • 它在用户的本地机器上运行,而不是作为公共服务器
  • 所有API交互都是经过身份验证和控制的
  • 你的私钥从未离开你的机器

⚠️ 免责声明

这是一个非官方工具,与Polymarket无关。自行承担风险使用。始终验证交易并了解预测市场交易的风险。