prediction-market-mcp
Give Claude (or any MCP-compatible LLM) a live view into Polymarket + Kalshi + Manifold, plus a single tool that hunts for 3-venue arb.
Just want to look at Polymarket data without installing an MCP server? Try the live dashboard: https://creampig666.github.io/prediction-markets-live/
An MCP server in ~400 lines of Python. No keys, no auth, no signup. Stdio transport, Claude Desktop ready.
You: "Find me anything interesting on bitcoin right now."
Claude (calls find_arb_opportunities("bitcoin")):
"Polymarket has 'BTC > $150k by Jun 30' at 12%. Kalshi's matched
contract is at 19%. Manifold's 'Bitcoin to $150k in 2026?' is at 22%.
12 percentage points between Polymarket and Manifold — worth a
look at whether they're really the same underlying..."
What it exposes
11 tools across 3 venues:
| Tool | What it does |
|---|---|
polymarket_top_markets(limit) |
Top Polymarket markets by 24h volume |
polymarket_get_market(slug) |
Single market detail by slug |
polymarket_search(query, limit) |
Keyword search across active markets |
kalshi_top_events(limit) |
Active Kalshi events |
kalshi_get_market(ticker) |
Single Kalshi market by ticker |
kalshi_markets_for_event(event_ticker) |
All sub-markets under a Kalshi event |
kalshi_search_events(query) |
Keyword search across open Kalshi events |
manifold_top_markets(limit) |
Recent BINARY Manifold markets |
manifold_get_market(slug) |
Single Manifold market by slug |
manifold_search(query, limit) |
Keyword search across Manifold |
find_arb_opportunities(query, min_divergence_pp) |
3-venue search + cross-pair divergence report. Returns matched pairs (any 2 of 3 venues) ranked by abs implied-prob gap. |
All tools return structured JSON ready for the LLM to summarize.
Install
pip install git+https://github.com/creampig666/prediction-market-mcp.git
Or local dev:
git clone https://github.com/creampig666/prediction-market-mcp.git
cd prediction-market-mcp && pip install -e .
Hook it up to Claude Desktop
Edit your Claude Desktop config (on Windows: %APPDATA%\Claude\claude_desktop_config.json, on Mac: ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"prediction-market": {
"command": "prediction-market-mcp"
}
}
}
Restart Claude Desktop. The 8 tools above will appear in the tool list and you can ask things like:
- "What are the biggest Polymarket markets right now?"
- "Find Kalshi markets about the next Pope."
- "Run
find_arb_opportunitieson 'iran' and tell me which one has the biggest gap."
Hook it up to other MCP clients
Anything that speaks MCP stdio works. The server has no state and no config — just run prediction-market-mcp and pipe JSON-RPC over stdin/stdout.
How find_arb_opportunities works
- Search all three venues (Polymarket / Kalshi / Manifold) for the keyword.
- For Kalshi, drill from matched events into their sub-markets.
- Build a flat candidate list of
{venue, label, yes_price, url}per matched market. - Enumerate all cross-venue pairs (poly×kalshi, poly×manifold, kalshi×manifold).
- Compute divergence in percentage points, filter by
min_divergence_pp(default 3), sort desc, return top 30.
Caveats the LLM should know:
- It's a keyword match, not a semantic match. "BTC 150k" on one venue might be matched to "Bitcoin 150,000" on the other. Edge cases will produce false pairs.
- The matched markets may not be exactly the same underlying (timeframe, strike, resolution criteria can differ).
- Polymarket prices in this API are mid; Kalshi prices are last-trade. They're not directly tradeable.
- All of which is why the LLM should treat results as leads to investigate, not signals to act on.
Family
- 🟢 polywatch — Polymarket alert CLI
- 🟢 kalshiwatch — Kalshi alert CLI
- 🟢 manifold-watch — Manifold Markets alert CLI
- 🟢 polywatch-presets — ready-made polywatch configs
- 🟢 prediction-markets-live — read-only Polymarket dashboard
- 🟢 prediction-market-mcp — you're here
Tip jar
Free and stays free. If it surfaced an arb for you, tips welcome:
0x17Fb06dE9D5945eaFf6FBBf4c264E505D38182A4 # EVM (ETH / USDC / any EVM L2)
License
MIT. See LICENSE.
Release files for prediction-market-mcp 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| prediction_market_mcp-0.2.0.tar.gz | 12.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| prediction_market_mcp-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.6 kB
Release files / prediction_market_mcp-0.2.0.tar.gz
| Download URL | prediction_market_mcp-0.2.0.tar.gz |
|---|---|
| Size | 12.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6369dc3c11b9bcb1b11e2ef6b92b58f6f94c91ebf98575ba49eadfeedb4283e4
|
|
BLAKE2b-256 checksum How to use checksums |
7e77f0af49bf5f4c7f8565c5c4bec03b6a612765dd908c7cd78a573a4746c8af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / prediction_market_mcp-0.2.0-py3-none-any.whl
| Download URL | prediction_market_mcp-0.2.0-py3-none-any.whl |
|---|---|
| Size | 12.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
598f2cb191ca2e14989d4ce1ccc9bde3786b3713a659395d55ab25cc5c3316e4
|
|
BLAKE2b-256 checksum How to use checksums |
c7e84082bce8b90a7e1674cc420e2ba72eba33402613528360a7bd3ae3a5f5fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|