使用说明
卡尔希mcp服务器
一个允许人工智能在预测市场上运行的mcp服务器,Kalshi
已实施的工具
get_tags_for_series_categories- 调用Kalshi公共端点:
GET /search/tags_by_categories - 不需要API密钥
- 调用Kalshi公共端点:
get_balance- 调用Kalshi专用端点:
GET /portfolio/balance - 需要API密钥身份验证(
KALSHI_API_KEY_ID+KALSHI_API_KEY_PATH)
- 调用Kalshi专用端点:
get_subaccount_balances- 调用Kalshi专用端点:
GET /portfolio/subaccounts/balances - 需要API密钥身份验证(
KALSHI_API_KEY_ID+KALSHI_API_KEY_PATH)
- 调用Kalshi专用端点:
create_subaccount- 调用Kalshi专用端点:
POST /portfolio/subaccounts - 没有争论
- 创建新的子帐户(每个用户最多32个)
- 退货:
subaccount_number(整数,1-32) - 需要API密钥身份验证(
KALSHI_API_KEY_ID+KALSHI_API_KEY_PATH)
- 调用Kalshi专用端点:
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)
- 调用Kalshi专用端点:
get_order- 调用Kalshi专用端点:
GET /portfolio/orders/{order_id} - 必需参数:
order_id(字符串;订单标识符)
- 返回包含所有订单字段的单个订单对象
- 需要API密钥身份验证(
KALSHI_API_KEY_ID+KALSHI_API_KEY_PATH)
- 调用Kalshi专用端点:
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)
- 调用Kalshi专用端点:
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)
- 调用Kalshi专用端点:
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)
- 调用Kalshi专用端点:
get_categories- 调用Kalshi公共端点:
GET /search/tags_by_categories - 仅返回类别名称
- 不需要API密钥
- 调用Kalshi公共端点:
get_tags_for_series_category- 调用Kalshi公共端点:
GET /search/tags_by_categories - 需要一个论点:
category(确切的类别名称) - 返回所选类别的标签
- 不需要API密钥
- 调用Kalshi公共端点:
get_series_list- 调用Kalshi公共端点:
GET /series - 可选参数:
category(字符串)tags(字符串)cursor(字符串)limit(整数,1-1000)include_product_metadata(布尔值)include_volume(布尔值)
- 从Kalshi响应返回类型化的系列对象
- 当响应字段具有意外类型/形状时,记录警告/错误详细信息
- 不需要API密钥
- 调用Kalshi公共端点:
get_series_tickers_for_category- 页面Kalshi公共端点:
GET /series - 必需参数:
category(字符串)
- 可选参数:
tags(字符串)limit(int,1-1000;默认值为1000)max_pages(int,1-10000;默认为1000)
- 仅限退货
ticker所有页面上的值 - 不需要API密钥
- 页面Kalshi公共端点:
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密钥
- 调用Kalshi公共端点:
get_open_markets_for_series- 页面Kalshi公共端点:
GET /markets - 必需参数:
series_ticker(字符串)
- 可选参数:
limit(int,1-1000;默认值为1000)max_pages(int,1-10000;默认为1000)
- 力量
status=open并返回所有页面上的所有市场 - 不需要API密钥
- 页面Kalshi公共端点:
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公共端点:
配置
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文件的路径
.envload_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
- 安装dev-deps: