面向 Claude 和 Cursor 的 Kalshi + Polymarket MCP
Claude 和 Cursor 可以通过 Dino 原生的 Model Context Protocol 服务器查看 Kalshi 和 Polymarket。这个连接会把匹配市场作为工具暴露出来。智能体可以将一个市场名称解析为稳定的 Dino id,然后读取其价格比较背后的结算披露信息。
本指南使用免费的 Dino 密钥连接一个 MCP 客户端。该服务器是只读的:它返回市场数据和已确认的 Opportunity,而所有交易仍然留在你自己的平台账户中。
创建密钥并将它放在源代码之外
创建一个免费 API 密钥,然后将下面这段服务器配置添加到 Claude Desktop 或 Cursor 中。两个客户端都可以使用 mcp-remote,将本地 MCP 进程桥接到 Dino 的 Streamable HTTP 端点。在私有的本地客户端配置中替换占位符:
{
"mcpServers": {
"dino-markets": {
"command": "npx",
"args": [
"mcp-remote",
"https://api.dino.markets/v2/mcp/",
"--header",
"Authorization:Bearer ${DINO_API_KEY}"
],
"env": {
"DINO_API_KEY": "sk_live_..."
}
}
}
}
env 块负责把 DINO_API_KEY 提供给本地的 mcp-remote 进程,header 参数会读取这个值。这份客户端配置现在包含了密钥,所以要让它远离代码仓库和共享文件夹,并将访问权限限制在你自己的用户账户内。
/v2/mcp/ 末尾的斜杠很重要,因为严格的客户端可能在处理无斜杠 URL 的重定向时失败。保存配置后重启客户端。避免截图暴露密钥。
用具体问题验证工具
一旦服务器出现在客户端的工具列表中,就可以提出对应到单一明确操作的问题。以下提示会调用发现和详情流程,而不需要智能体从标题推断市场身份:
- "列出 Dino 提供的市场类别和可用的筛选条件。"
- "在 Kalshi 和 Polymarket 上查找已开放的 BTC 阈值市场。"
- "打开第一个结果,总结它的结果结构和结算风险。"
- "查找已确认的棒球 Opportunity,然后查看第一个结果背后完整的 Market。"
答案中可以看到预期的工具调用路径。类别发现会调用 list_categories。按名称或主题查询会调用 find_markets。完整条款来自 get_market。已确认的 Opportunity 来自 find_arbitrage,之后应该用返回的 market_id 调用 get_market。
让智能体先阅读条款,再看价格
一个有用的跨平台研究提示,会告诉智能体需要执行哪些检查。当一个市场同时出现在两个平台上时,使用下面这种结构:
查找 [topic] 对应的匹配市场,对选中的 id 使用 get_market。
在讨论价格之前,先报告:
- 匹配 Market 上的结果键和名称
- 两个平台是否为每个结果都提供了价格
- settlement 的一致性,以及每一项已披露的风险
- 以百分点表示的价格差异,附带 priced_at
把 spread 视为一个观测到的差异。只有当 find_arbitrage 返回结果时,
才能把某个结果称为已确认的 Opportunity。
这个顺序很重要,因为两条挂牌可能标题相同,却使用不同的截止时间、数据来源、结果分组或边界措辞。Dino 的 Market 详情会把这些差异记录在 settlement.risks[] 下。除非这对挂牌通过完整的一致性和风险检查,否则 signal 字段会保持为 spread。
了解 MCP 服务器的边界
MCP 服务器读取 Dino 的匹配目录和公开的 Opportunity 资源。它无法访问平台账户或资金,也不能下单。这是开发者数据,不构成交易或金融建议。watch_markets 会返回一张 WebSocket 票据,以及你的 Dino 套餐允许访问的频道。消费这个数据流仍然需要通过 WebSocket 客户端或某个官方 SDK 来完成。
所有文档中列出的 MCP 工具在 Free 套餐上都可以使用。频道访问权限因套餐而异:Free 可以使用精选的 sample 和 status 频道,付费套餐则可以使用完整的 markets:* 数据流。完整参数请参阅 MCP 工具参考文档,服务器使用的置信度和结算检查请参阅匹配指南。
创建一个免费密钥并连接服务器。从上面的类别提示开始。