预测市场API服务器

一个允许AI操作预测市场的MCP服务器,提供Kalshi平台的API集成和功能调用。

  • by xilei-wang-90
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 xilei-wang-90/kalshi-mcp-server

使用说明

卡尔希mcp服务器

一个允许人工智能在预测市场上运行的mcp服务器,Kalshi

已实施的工具

  • get_tags_for_series_categories
    • 调用Kalshi公共端点: GET /search/tags_by_categories
    • 不需要API密钥
  • get_balance
    • 调用Kalshi专用端点: GET /portfolio/balance
    • 需要API密钥身份验证(KALSHI_API_KEY_ID + KALSHI_API_KEY_PATH)
  • get_subaccount_balances
    • 调用Kalshi专用端点: GET /portfolio/subaccounts/balances
    • 需要API密钥身份验证(KALSHI_API_KEY_ID + KALSHI_API_KEY_PATH)
  • create_subaccount
    • 调用Kalshi专用端点: POST /portfolio/subaccounts
    • 没有争论
    • 创建新的子帐户(每个用户最多32个)
    • 退货: subaccount_number (整数,1-32)
    • 需要API密钥身份验证(KALSHI_API_KEY_ID + KALSHI_API_KEY_PATH)
  • get_orders
    • 调用Kalshi专用端点: GET /portfolio/orders
    • 可选参数:
      • ticker (字符串;市场行情)
      • event_ticker (字符串;逗号分隔的事件收报机,最多10个)
      • status (字符串:休息|取消|执行)
      • min_ts/max_ts (int;unix秒)
      • limit (整数,1-200)
      • cursor (字符串)
      • subaccount (整数,0-32)
    • 返回投资组合订单(和可选的分页光标)
    • 需要API密钥身份验证(KALSHI_API_KEY_ID + KALSHI_API_KEY_PATH)
  • get_order
    • 调用Kalshi专用端点: GET /portfolio/orders/{order_id}
    • 必需参数:
      • order_id (字符串;订单标识符)
    • 返回包含所有订单字段的单个订单对象
    • 需要API密钥身份验证(KALSHI_API_KEY_ID + KALSHI_API_KEY_PATH)
  • create_order
    • 调用Kalshi专用端点: POST /portfolio/orders
    • 必需参数:
      • ticker (字符串;市场行情)
      • side (字符串:是|否)
      • action (字符串:买入|卖出)
    • 可选参数:
      • client_order_id (字符串;调用者指定的订单ID)
      • count (int,>=1;合同数量)
      • count_fp (字符串;定点合约计数)
      • yes_price (整数,1-99;价格单位为美分)
      • no_price (整数,1-99;价格单位为美分)
      • yes_price_dollars (字符串;是,价格以美元计)
      • no_price_dollars (字符串;无美元价格)
      • expiration_ts (int;订单到期的unix时间戳)
      • time_in_force (字符串:fill_or_kill | good_till_canceled | immediate_or_cancel)
      • buy_max_cost (int;最高成本,单位为美分)
      • sell_position_floor (int;已弃用,仅限 0 如果设置,则允许)
      • post_only (布尔值)
      • reduce_only (布尔值)
      • self_trade_prevention_type (字符串:taker_at_cross|maker)
      • order_group_id (字符串)
      • cancel_order_on_pause (布尔值)
      • subaccount (整数,0-32)
    • 返回创建的订单详细信息
    • 需要API密钥身份验证(KALSHI_API_KEY_ID + KALSHI_API_KEY_PATH)
  • cancel_order
    • 调用Kalshi专用端点: DELETE /portfolio/orders/{order_id}
    • 必需参数:
      • order_id (字符串;订单标识符)
    • 可选参数:
      • subaccount (整数,0-32)
    • 返回已取消的订单对象和减少的合同数量(reduced_by, reduced_by_fp)
    • 需要API密钥身份验证(KALSHI_API_KEY_ID + KALSHI_API_KEY_PATH)
  • get_positions
    • 调用Kalshi专用端点: GET /portfolio/positions
    • 可选参数:
      • cursor (字符串)
      • limit (int,1-1000;默认为100)
      • count_filter (字符串;逗号与 position 和 total_traded)
      • ticker (字符串;市场行情)
      • event_ticker (字符串;逗号分隔的事件收报机,最多10个)
      • subaccount (整数,0-32)
    • 通过以下方式返回投资组合头寸 market_positions 和 event_positions 数组,加上分页光标
    • 需要API密钥身份验证(KALSHI_API_KEY_ID + KALSHI_API_KEY_PATH)
  • get_categories
    • 调用Kalshi公共端点: GET /search/tags_by_categories
    • 仅返回类别名称
    • 不需要API密钥
  • get_tags_for_series_category
    • 调用Kalshi公共端点: GET /search/tags_by_categories
    • 需要一个论点: category (确切的类别名称)
    • 返回所选类别的标签
    • 不需要API密钥
  • get_series_list
    • 调用Kalshi公共端点: GET /series
    • 可选参数:
      • category (字符串)
      • tags (字符串)
      • cursor (字符串)
      • limit (整数,1-1000)
      • include_product_metadata (布尔值)
      • include_volume (布尔值)
    • 从Kalshi响应返回类型化的系列对象
    • 当响应字段具有意外类型/形状时,记录警告/错误详细信息
    • 不需要API密钥
  • get_series_tickers_for_category
    • 页面Kalshi公共端点: GET /series
    • 必需参数:
      • category (字符串)
    • 可选参数:
      • tags (字符串)
      • limit (int,1-1000;默认值为1000)
      • max_pages (int,1-10000;默认为1000)
    • 仅限退货 ticker 所有页面上的值
    • 不需要API密钥
  • get_markets
    • 调用Kalshi公共端点: GET /markets
    • 可选参数:
      • cursor (字符串)
      • limit (整数,1-1000)
      • status (字符串;Kalshi文档列出了未打开|打开|暂停|关闭|已解决等值)
      • tickers (字符串;逗号分隔的市场行情)
      • event_ticker (字符串;逗号分隔的事件收报机)
      • series_ticker (字符串)
      • mve_filter (字符串:only | exclude)
      • min_created_ts/max_created_ts (int;unix秒)
      • min_updated_ts (int;unix秒)
      • min_close_ts/max_close_ts (int;unix秒)
      • min_settled_ts/max_settled_ts (int;unix秒)
    • 从Kalshi响应中返回类型化市场
    • 不需要API密钥
  • get_open_markets_for_series
    • 页面Kalshi公共端点: GET /markets
    • 必需参数:
      • series_ticker (字符串)
    • 可选参数:
      • limit (int,1-1000;默认值为1000)
      • max_pages (int,1-10000;默认为1000)
    • 力量 status=open 并返回所有页面上的所有市场
    • 不需要API密钥
  • get_open_market_titles_for_series
    • 页面Kalshi公共端点: GET /markets
    • 必需参数:
      • series_ticker (字符串)
    • 可选参数:
      • limit (int,1-1000;默认值为1000)
      • max_pages (int,1-10000;默认为1000)
    • 力量 status=open 仅返回 ticker, title, subtitle, yes_sub_title, no_sub_title 针对所有页面上的每个市场
    • 不需要API密钥

配置

  • KALSHI_API_BASE_URL
    • 违约: https://api.elections.kalshi.com/trade-api/v2
  • KALSHI_TIMEOUT_SECONDS
    • 违约: 10
  • KALSHI_API_KEY_ID
    • 需要经过身份验证/私有端点(例如 get_balance)
  • KALSHI_API_KEY_PATH
    • 需要经过身份验证/私有端点
    • Kalshi API私钥PEM文件的路径
  • .env
    • load_settings() 阅读本地 .env 从repo根目录加载文件并加载变量 当它们尚未在环境中设置时

以MCP stdio服务器运行

  • 命令(已安装/可编辑):
    • python3 -m pip install -e .
    • python3 -m kalshi_mcp.server
  • 命令(不安装):
    • PYTHONPATH=src python3 -m kalshi_mcp.server
  • 运输:
    • JSON-RPC 2.0在stdin/stdout上使用换行符分隔的JSON

发展

  • 运行单元测试(unittest):
    • python3 -m unittest discover -s tests -p 'test_*.py'
  • 运行单元测试(pytest):
    • 安装dev-deps: python3 -m pip install -r requirements-dev.txt
    • 然后: python3 -m pytest -q