MCP Server
Query and analyze ~100,000 historical events enriched by four AI models — Gemini, DeepSeek, Claude, and ChatGPT.
https://mcp.historank.fun/mcp
Connect your client
Claude Desktop
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{ "mcpServers": { "historank": { "command": "npx", "args": ["mcp-remote", "https://mcp.historank.fun/mcp"] } } }
Restart Claude Desktop after saving.
Claude Code (CLI)
Run in your terminal:
claude mcp add --transport http \
historank \
https://mcp.historank.fun/mcp
Or add with scope flag: --scope user to make it available across all projects.
Cursor
Project: .cursor/mcp.json · Global: ~/.cursor/mcp.json
{ "mcpServers": { "historank": { "url": "https://mcp.historank.fun/mcp" } } }
Windsurf
~/.codeium/windsurf/mcp_config.json
{ "mcpServers": { "historank": { "serverUrl": "https://mcp.historank.fun/mcp" } } }
Gemini CLI
~/.gemini/settings.json
{ "mcpServers": { "historank": { "httpUrl": "https://mcp.historank.fun/mcp" } } }
ChatGPT Desktop
Open Settings → Connectors in the ChatGPT desktop app and add a new MCP server with the endpoint URL:
https://mcp.historank.fun/mcp
Requires ChatGPT desktop app with MCP support enabled.
Quick start
Once connected, follow these steps:
- Call
get_event_schemato see all available field names — needed forsort,fields, andgroup_by. - Use
query_eventsto retrieve events across all models, orquery_model_eventsto scope to one model with clean field names. - Use
aggregate_eventsto count, sum, or average events grouped by any field (e.g. events per decade).
Tools
get_event_schema
Returns the list of all available field names. Call this first to discover valid values for sort, fields, and group_by.
query_events
Query events across all four AI models with full filtering, sorting, and pagination. Returns records with model-prefixed fields (e.g. gemini_title).
get_event
Fetch a single event by its numeric ID.
search_events
Full-text search across event titles, descriptions, and significance explanations.
aggregate_events
Aggregate events by one or more fields. Supports running totals and partitioned cumulative calculations. All filter params from query_events are supported.
aggregate options: count · avg · min · max · sum · weighted_avg
filter_gt/filter_lt on count, value, aggregated_value, or cumulative_value become HAVING clauses.
get_distinct_values
All distinct values for any field across the full dataset. Useful for exploring categories, countries, or tags.
query_model_events
Like query_events but scoped to one AI model. Returns clean field names without the model prefix — title instead of gemini_title. Bare and prefixed field names both work.
aggregate_model_events
Like aggregate_events but scoped to one model's annotations. Bare field names are auto-prefixed.
get_distinct_model_values
Distinct values for a field scoped to a specific model. Bare field names are auto-prefixed (e.g. country_name → gemini_country_name).
get_significance_buckets
Histogram of a model's historical significance ratings grouped into buckets. Shows the full rating distribution for the filtered subset.
count_words_in_description
Word frequency analysis across the description field for a filtered subset. Stop words excluded. Results sorted by frequency descending.
count_words_in_tags
Word frequency across all tags for a specific model. Multi-word tags are tokenized; stop words excluded.
Filter params
All filter params use field:value format. Comma-separate for multiple conditions.
| Param | Operator | Example |
|---|---|---|
filter_gt | field > value | filter_gt=year:-100 |
filter_lt | field < value | filter_lt=year:1 |
filter_eq | field = value | filter_eq=main_category:War |
filter_ne | field != value | filter_ne=main_category:War |
filter_in | field IN (…) | filter_in=year:1939|1940|1945 |
filter_nin | field NOT IN (…) | filter_nin=main_category:War|Politics |
On aggregate tools, filter_gt/filter_lt on aggregate result fields (count, value, etc.) become HAVING clauses rather than WHERE.
Date formats
| Format | Example | Notes |
|---|---|---|
| CE date | 1939-09-01 | Standard ISO 8601 |
| BC date | 0044-03-15 BC | Append space + BC |
| BC shorthand | -44-03-15 | Negative year prefix |
year param | year=-44 | BC years are negative integers |
decade param | decade=-40 | 44 BC → decade -40 |
century param | century=-100 | 44 BC → century -100 |
Sorting: prefix any field with - for descending. Example: sort=-gemini_historical_significance_rating. NULLs always sort last.
AI models
Each event is annotated independently by four models. Model-specific fields are prefixed with the model name.
| Model | Prefix | Key fields |
|---|---|---|
| Gemini | gemini_ | title · historical_significance_rating · historical_significance_explanation · tags · location · country_name · latitude · longitude |
| DeepSeek | deepseek_ | |
| Claude | claude_ | |
| ChatGPT | chatgpt_ |