io.github.9crusher/mcp-server-kalshi
MCP server for end-to-end trading on Kalshi prediction markets: discover, research, trade.
What can you do with io.github.9crusher/mcp-server-kalshi?
- Discovery —
list_markets,get_market,list_events,get_event,list_series, - Research —
get_market_orderbook,get_market_candlesticks,get_market_trades. - Deep rules —
get_market_rulesconsolidates a market'srules_primary/rules_secondary, - Exchange —
get_exchange_status,get_exchange_schedule(is the market open, and its hours). - Portfolio —
get_balance,get_positions,get_fills,get_settlements. - Trading —
create_order,cancel_order,amend_order,decrease_order,
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
mcp-server-kalshiclaude mcp add mcp-server-kalshi -e 'KALSHI_ENV=demo' -e 'KALSHI_API_KEY=<your kalshi_api_key>' -e 'KALSHI_PRIVATE_KEY_PATH=<KALSHI_PRIVATE_KEY_PATH>' -e 'BASE_URL=<BASE_URL>' -- uvx mcp-server-kalshi==0.2.1
{
"mcpServers": {
"mcp-server-kalshi": {
"command": "uvx",
"args": [
"mcp-server-kalshi==0.2.1"
],
"env": {
"KALSHI_ENV": "demo",
"KALSHI_API_KEY": "<your kalshi_api_key>",
"KALSHI_PRIVATE_KEY_PATH": "<KALSHI_PRIVATE_KEY_PATH>",
"BASE_URL": "<BASE_URL>"
}
}
}
}
Environment variables
KALSHI_ENVdemo (sandbox) or prod (real money)KALSHI_API_KEYsecret Kalshi API key ID; required only for portfolio/order toolsKALSHI_PRIVATE_KEY_PATHPath to your RSA private key .pem; required for authenticated toolsBASE_URLOptional explicit REST base override (must include /trade-api/v2)
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Contents
MCP Server Kalshi
An MCP server that gives Claude Code and other agent harnesses a first-class interface to Kalshi. It is built for end-to-end trading: browse markets, research them, read the exact settlement rules (including pulling the contract-terms PDFs), and execute trades — all through MCP tools.
Highlights
- Discovery —
list_markets,get_market,list_events,get_event,list_series,get_series. (Kalshi has no free-text search;list_marketsfilters are the search.) - Research —
get_market_orderbook,get_market_candlesticks,get_market_trades. - Deep rules —
get_market_rulesconsolidates a market'srules_primary/rules_secondary, early-close conditions, settlement sources, and series prohibitions;fetch_rules_pdfdownloads and extracts the text of the actual legal contract PDF so the agent can read it. - Exchange —
get_exchange_status,get_exchange_schedule(is the market open, and its hours). - Portfolio —
get_balance,get_positions,get_fills,get_settlements. - Trading —
create_order,cancel_order,amend_order,decrease_order, pluslist_orders/get_order.
Safety by default
- The server targets Kalshi's demo (sandbox) environment unless you explicitly set
KALSHI_ENV=prod. - Order-placing tools (
create_order,amend_order) requireconfirm=true. Without it they return a preview — a human-readable summary and the exact payload — and place nothing. - Credentials are optional: all market/rules tools work unauthenticated. Only portfolio and order tools need an API key + RSA private key.
Intuitive order model
Kalshi's V2 order API quotes everything from the YES leg (bid/ask in fixed-point dollars).
This server exposes the natural model instead — action (buy/sell) + side (yes/no) + a whole
cents limit price — and translates it (including the buy-NO ⇄ sell-YES price inversion).
Configuration
| Variable | Default | Purpose |
|---|---|---|
KALSHI_ENV | demo | demo (sandbox) or prod (real money). Derives the base URL. |
KALSHI_API_KEY | (none) | Kalshi API key ID. Required only for authenticated tools. |
KALSHI_PRIVATE_KEY_PATH | (none) | Path to your RSA private key .pem. Required for authenticated tools. |
BASE_URL | (derived) | Optional explicit REST base override (must include /trade-api/v2). |
See .env-example. Get API credentials at
docs.kalshi.com/getting_started/api_keys
and a demo account via the
demo environment guide.
Claude Desktop (uvx)
"mcpServers": {
"kalshi": {
"command": "uvx",
"args": ["mcp-server-kalshi"],
"env": {
"KALSHI_ENV": "demo",
"KALSHI_API_KEY": "<YOUR KALSHI API KEY>",
"KALSHI_PRIVATE_KEY_PATH": "PATH TO YOUR RSA KEY FILE"
}
}
}
Claude Desktop (Docker)
"mcpServers": {
"kalshi": {
"command": "docker",
"args": ["run", "--rm", "-i",
"--mount", "type=bind,src=/Users/username,dst=/Users/username",
"-e", "KALSHI_ENV", "-e", "KALSHI_API_KEY", "-e", "KALSHI_PRIVATE_KEY_PATH",
"mcp-server-kalshi"],
"env": {
"KALSHI_ENV": "demo",
"KALSHI_API_KEY": "<YOUR KALSHI API KEY>",
"KALSHI_PRIVATE_KEY_PATH": "PATH TO YOUR RSA KEY FILE"
}
}
}
Local Development
- Create a
.envfile (see.env-example). - Install deps:
uv sync(add--extra devfor dev tools). Requires Python 3.10+. - Run:
uv run start. - Test:
uv run pytest.
MCP Inspector
npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-server-kalshi run start
Testing & code quality
uv sync --extra dev # install dev tools (ruff, mypy, pytest, ...)
uv run pytest # run the test suite
uv run pytest --cov # tests with a coverage report
uv run ruff check src tests # lint
uv run black src tests # format (add --check to verify only)
uv run mypy # type check
uv run pre-commit install # (once) run ruff + black on every commit
Tests are pure/offline — they exercise the order translation and confirm-gate, the HTTP client
(via an injected httpx.MockTransport), the MCP tool registry, config, and PDF extraction, all
without touching the live Kalshi API. CI (.github/workflows/ci.yml) runs ruff + black + mypy +
pytest across Python 3.10–3.13 on every push/PR, and releases are gated on that same suite.
Authentication
Requests are signed with RSA-PSS (MGF1-SHA256, max salt). Each authenticated request sends
KALSHI-ACCESS-KEY, KALSHI-ACCESS-TIMESTAMP, and KALSHI-ACCESS-SIGNATURE, where the signed
message is timestamp_ms + METHOD + path (path includes /trade-api/v2, excludes the query
string).
Frequently asked questions
What is io.github.9crusher/mcp-server-kalshi?
MCP server for end-to-end trading on Kalshi prediction markets: discover, research, trade.
How do I install io.github.9crusher/mcp-server-kalshi?
It runs on your machine. In Claude Code: claude mcp add mcp-server-kalshi -e 'KALSHI_ENV=demo' -e 'KALSHI_API_KEY=<your kalshi_api_key>' -e 'KALSHI_PRIVATE_KEY_PATH=<KALSHI_PRIVATE_KEY_PATH>' -e 'BASE_URL=<BASE_URL>' -- uvx mcp-server-kalshi==0.2.1. For other clients, paste the JSON configuration from this page into their MCP settings.
Does io.github.9crusher/mcp-server-kalshi need an API key?
Yes. It expects KALSHI_API_KEY, which you set in its configuration.
Is io.github.9crusher/mcp-server-kalshi open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains io.github.9crusher/mcp-server-kalshi?
It is published by 9crusher. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.