预测市场接口服务

Polymarket MCP Server是一个通过命令行封装暴露Polymarket预测市场的服务,允许AI代理程序化地发现市场、检查价格和进行交易。

  • by BAiSEDagent
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 BAiSEDagent/polymarket-mcp

使用说明

Polymarket MCP服务器

MCP(模型上下文协议)服务器,通过CLI包装器公开Polymarket预测市场。

使AI代理能够以编程方式发现市场、查看价格和进行交易。


特性

只读工具(无需钱包)

  • markets_search --按关键字搜索市场
  • markets_get --获取特定市场详细信息
  • markets_list --列出带有过滤器的市场(活动、交易量等)
  • clob_price --获取令牌ID的当前价格
  • clob_midpoint --获取中点价格
  • clob_book --获取订单簿深度
  • price_history --历史价格(1米、1小时、1天等)

经过身份验证的工具(需要钱包)

  • create_order --下达限价订单(按指定价格买入/卖出)
  • market_order --下达市价单(按当前价格买入/卖出)
  • cancel_order --取消现有订单
  • positions --获取投资组合头寸
  • balance --获取钱包余额(USDC/条件代币)

安装

先决条件

  1. 安装Polymarket CLI:

    brew tap Polymarket/polymarket-cli https://github.com/Polymarket/polymarket-cli
    brew install polymarket
    
  2. 验证CLI是否正常工作:

    polymarket markets list --limit 3
    

安装MCP服务器

cd polymarket-mcp
npm install
npm run build

配置

环境变量

创建 .env 文件(参见 .env.example):

# Required for authenticated operations (trading)
POLYMARKET_PRIVATE_KEY=0x...

# Optional
CHAIN_ID=137                # Polygon mainnet
SIGNATURE_TYPE=proxy        # proxy | eoa | gnosis-safe
POLYGON_RPC_URL=https://polygon-rpc.com

MCP客户端配置

添加到您的MCP客户端配置中(例如,Claude Desktop、mcporter、Polygent):

{
  "mcpServers": {
    "polymarket": {
      "command": "node",
      "args": ["/path/to/polymarket-mcp/dist/index.js"],
      "env": {
        "POLYMARKET_PRIVATE_KEY": "0x...",
        "CHAIN_ID": "137",
        "SIGNATURE_TYPE": "proxy"
      }
    }
  }
}

用法示例

浏览市场

// Search for Bitcoin markets
markets_search({ query: "bitcoin", limit: 5 })

// Get specific market
markets_get({ market_id: "will-btc-hit-100k" })

// List active markets sorted by volume
markets_list({ active: true, order: "volume_num", limit: 10 })

查看价格

// Get buy price
clob_price({ token_id: "0xABC...", side: "buy" })

// Get midpoint (average of bid/ask)
clob_midpoint({ token_id: "0xABC..." })

// Get full order book
clob_book({ token_id: "0xABC..." })

// Get price history
price_history({ token_id: "0xABC...", interval: "1d", fidelity: 30 })

交易(已认证)

// Place limit order: buy 10 shares at $0.50
create_order({
  token_id: "0xABC...",
  side: "buy",
  price: 0.50,
  size: 10
})

// Place market order: buy $5 worth at current price
market_order({
  token_id: "0xABC...",
  side: "buy",
  amount: 5
})

// Cancel order
cancel_order({ order_id: "0xORDER..." })

// Check positions
positions({ wallet_address: "0xYOUR_WALLET..." })

// Check balance
balance({ asset_type: "collateral" })

安全

钱包密钥管理

  • 从不记录私钥 --密钥仅用于CLI签名
  • 仅环境变量 --密钥从未硬编码
  • 回复中没有关键暴露 --MCP响应不包括密钥

输入验证

  • 所有输入均已验证 黄道带 执行CLI之前
  • 令牌ID必须与十六进制模式匹配(0x[0-9a-fA-F]+)
  • 钱包地址已验证(0x[0-9a-fA-F]{40})
  • 执行价格限制(0.01至0.99)
  • 正尺寸/数量验证

速率限制

  • CLI超时:每个命令30秒
  • 缓冲区限制:最大响应大小10MB
  • 遵守Polymarket API速率限制(60请求/分钟)

命令注入保护

  • 用户输入无shell插值
  • 以数组形式传递的预验证参数
  • 用途 child_process.exec 具有超时+缓冲限制

测试

手动测试(MCP检查员)

npx @modelcontextprotocol/inspector node dist/index.js

测试只读工具

# List markets
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"markets_search","arguments":{"query":"bitcoin","limit":3}}}' | node dist/index.js

测试认证工具

需要 .env 随着 POLYMARKET_PRIVATE_KEY:

# Check balance
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"balance","arguments":{"asset_type":"collateral"}}}' | node dist/index.js

与Polygent集成

看 INTEGRATION.md 获取详细的集成指南。

快速启动:

  1. 在Polygent VPS上安装MCP服务器
  2. 配置 mcporter 使用服务器路径+env变量
  3. 更新Polygent代理以调用MCP工具
  4. 添加MCP服务器状态的健康检查

故障排除

“钱包未配置”错误

  • 集 POLYMARKET_PRIVATE_KEY 在 .env 或MCP客户端配置
  • 验证密钥格式: 0x +64个十六进制字符

“找不到命令:polymarket”

  • 安装Polymarket CLI: brew install polymarket
  • 验证: which polymarket

“无法解析CLI输出”

  • 检查CLI版本: polymarket --version
  • 确保JSON输出模式正常工作: polymarket -o json markets list --limit 1

速率限制错误(429)

  • 遵守60个要求/分钟的限制
  • 在代理逻辑中添加指数退避
  • 在可用的情况下使用批处理端点

建筑

polymarket-mcp/
├── src/
│   ├── index.ts           # MCP server (tool definitions)
│   └── lib/
│       ├── env.ts         # Environment validation (Zod)
│       ├── cli.ts         # CLI wrapper functions
│       └── types.ts       # TypeScript types
├── dist/                  # Compiled output
├── .env.example
├── package.json
├── tsconfig.json
└── README.md

设计:

  • 无数据库 --纯CLI包装器
  • 快速验证失败 --启动时检查环境变量
  • 结构化错误 --始终返回错误对象,从不抛出
  • 类型安全 --完整的TypeScript+Zod验证

相关项目

  • Polymarket CLI: https://github.com/Polymarket/polymarket-cli
  • MCP规范: https://modelcontextprotocol.io
  • 一夫多妻制: https://polygent.market

许可证

麻省理工学院