jiangshan-map
This MCP server lets you query the Jiangshan Historical Atlas for Chinese historical places, people, and atlas-wide search results.
inspect_place— Look up a city, pass, battlefield, landmark, or multi-stop route for a given year or years; returns reigning monarch/era, controlling regime, macro-region, prefecture, modern location, historical lore, and a shareable deep link.inspect_person— Retrieve a historical figure’s or monarch’s biography and geocoded life stops; optionally focus on a specific stop or compare 2–4 figures for shared encounters.search_atlas— Search across ancient cities, poetic/battlefield landmarks, strategic passes, historical figures, imperial eras, and chronological milestones, with configurable result limits.Supports Chinese, English, and Pinyin queries, plus
zh,zh-tw, andenresponse/deep-link languages.
Chronicles of the Realm · 江山时序
An Interactive Historical Atlas of China from the Warring States (403 BCE) to the Present — Scrub Through Time, Trace Ancient Cities, and Walk in the Footsteps of History
Play Live Demo (English UI) → https://deanchen.me/jiangshan-map/?lang=en
The story behind it (in Chinese): From textbook maps to 1k GitHub stars
Why It's Fun to Explore
Have you ever wondered while reading Chinese history or classical poetry:
"Where exactly on today's map are Jiankang (the Six Dynasties capital), Huangzhou (where Su Dongpo composed the Red Cliffs Rhapsody in exile), Languan Pass in the Qinling Mountains (where Han Yu halted his horse in the snow), or Zhuxianzhen (Yue Fei's northern campaign frontier)?"
"How many names did Chang'an hold across two millennia, and what pivotal events unfolded on that soil?"
"How did the realm evolve step by step—from the Partition of Jin and the Seven Warring States at the opening of Sima Guang's Zizhi Tongjian (403 BCE), Qin's unification campaigns, Emperor Wu of Han opening the Hexi Corridor, High Tang's Four Garrisons of Anxi, and Yuan's Xuanzhengyuan jurisdiction over Tibet, to Zeng Jize's recovery of Ili (1881 CE) and the 20th-century shift from the 'Begonia Leaf' (秋海棠) map to the 'Rooster' (雄鸡) map?"
Chronicles of the Realm (jiangshan-map) brings together 2,400+ years of Chinese history across 18 historical periods into a single interactive parchment atlas—featuring multi-stage territorial and prefecture snapshots, ancient cities, strategic mountain passes, poetic and battlefield landmarks, chronological milestones, and reigning monarchs & imperial eras. No heavy print atlases required—just drag the timeline and click any city to travel through space and time.
Feature 1: Scrub the Timeline to Watch Realms Rise & Fall, Track Monarchs, and Compare Ancient & Modern Borders
Multi-Polity Confrontations on a Single Canvas: From the Seven Warring States (Qin, Chu, Qi, Yan, Zhao, Wei, Han) alongside Zhou, Yue, Ba-Shu, Zhongshan, and Yiqu, to the Three Kingdoms warlords (Yuan Shao, Cao Cao, Liu Bei, Sun Quan, Gongsun's Liaodong), Northern & Southern Dynasties, Five Dynasties & Ten Kingdoms, and Song, Liao, Western Xia, Dali, Jin, and the Mongols—all rendered side-by-side in high-contrast traditional parchment hues. Hover over any polity in the bottom-left legend to highlight its territory, or click to zoom straight to it.
Multi-Stage Territorial Evolution & Dashed "Ghost Boundary Diffs": At every major territorial milestone—such as Qin's conquest of Ba-Shu (316 BCE), Yan General Qin Kai's expansion into Liaodong (300 BCE), Ma Yuan's bronze pillars in Jiaozhi (43 CE), Sima Yi's campaign in Liaodong (238 CE), Li Jing's conquest of Tuyuhun (635 CE), the Four Garrisons of Anxi & Wang Xuance's campaign in Central India (648 CE), Yuan's Xuanzhengyuan rule over Tibet (1288 CE), Ming's Hami & Seven Guards West of Jiayuguan (1404 CE), the 1881 Treaty of Saint Petersburg recovering Ili, the 1898 foreign leased territories, the 1945 retrocession of Taiwan, and the 1946 transition from the "Begonia Leaf" (秋海棠) map to the "Rooster" (雄鸡) map—click any milestone or phase dot to switch maps and reveal the previous phase's dashed vermilion Ghost Boundary Diff so territorial gains and losses are immediately visible.
Inline Reigning Monarch & Imperial Era Display: The timeline dynamically displays the reigning monarch (temple/posthumous title + personal name + reign span, e.g.,
Emperor Wu of Han · Liu Che,Emperor Taizong of Tang · Li Shimin,Emperor Shengzu of Qing · Xuanye) alongside the exact imperial era year.Ancient Prefecture Hover Inspection & Modern X-Ray Lens: First-level administrative divisions (Commanderies, Circuits, Routes, and Provinces) are rendered with deduplicated Parchment Casing borders. Zoom in and hover over any prefecture (e.g., Ming
Yingtian Prefectureor Three KingdomsJingzhou) to inspect its jurisdiction and modern provincial equivalents, or toggle the X-Ray Lens to project modern provincial boundaries directly over the historical map.Dynamic River Courses, Ancient Lakes & Grand Engineering Works: As you scrub through time, historical shifts of the Yellow River, expanding and shrinking ancient lakes (Yunmeng Marsh, Lop Nur / Puchanghai), Warring States/Qin/Han/Ming Great Walls, Sui-Tang & Grand Canals, the Silk Road, and Zheng He's maritime routes evolve in lockstep with each era; ancient coastlines around the Bohai Gulf, northern Jiangsu, the Yangtze estuary, and the Pearl River Delta also advance and retreat by era.
Zoomable Timeline: Drag the handles at either end of the timeline inward to zoom into one stretch of history (handy for short eras such as Qin, the Three Kingdoms, or the Five Dynasties); double-click the timeline to return to the full overview.

Feature 2: Click Any Ancient City or Strategic Pass to Uncover 2,400 Years of History (Trace Place)
Click any ancient city or mountain pass on the map (or double-click anywhere on the canvas) to open its Trace Place genealogy card:
Bilingual City Lore Banner & 2,400-Year Administrative Genealogy: At the top of the card, read a curated poetic epigraph and historical biography for the city; below, trace how its name and administrative jurisdiction evolved across all 18 historical eras—from Warring States and Qin commanderies, Han regional inspectorates, Tang circuits, and Song routes to Yuan/Ming/Qing provinces and modern municipalities—complete with
Imperial Capitalbadges and dynastic seat remarks.Site-Specific Landmark Events: Beneath each dynasty row, inspect major historical events that took place right on that spot (e.g., Shang Yang's Reforms and Qin's Unification at Xianyang, Guan Yu Flooding the Seven Armies at Fancheng, the Xuanwu Gate Incident at Chang'an, or Yue Fei's Martyrdom at Lin'an). Click the
Key Eventspill in the top-right of the card to filter for dynasties with major events, and click any event to time-travel straight to that year!Strategic Mountain Passes & Poetic / Battlefield Landmarks: Explore famous mountain passes—including Hangu Pass, Tongguan, Jianmen Pass, Yanmen Pass, Yumen Pass, Yangguan, and Shanhai Pass—rendered with traditional Hanque gatehouse icons and strategic terrain notes, alongside famous battlefields and literary landmarks such as Red Cliffs (Chibi), Gaixia, Wuzhang Plains, Orchid Pavilion (Lanting), Yueyang Tower, Pavilion of Prince Teng, Languan Pass, Loulan, Lop Nur, and Issyk-Kul.
Try It Live: High Tang Kaiyuan 29 (741 CE) · Open Chang'an's 2,400-Year Genealogy Card →

Feature 3: Person Chronicles — Trace Any Historical Figure Across Time & Space
Click the top-left Universal Search Box (with a rotatable e.g. figure preview and quick-search chips, or type any monarch, general, statesman, monk, or poet such as Cao Cao, Huo Qubing, Sima Qian, Yue Fei, or Zheng He) to open Person Chronicle (点人溯事), plotting every milestone of their life with delicate cartographic hairline arcs and directional ticks across changing dynastic borders:
Qin Shi Huang's Unification Campaigns (238–221 BCE): From suppressing the rebellion at Xianyang and Wang Jian's attack on Ye, to the fall of Han, Zhao, Yan, Wei, Chu, and Dai, culminating in the surrender of Qi at Linzi—as you advance stop by stop, watch the six rival kingdoms merge into the Qin Empire right on the map!
Zhang Qian's Mission to the Western Regions (138–126 BCE): Depart Chang'an, endure over a decade of Xiongnu captivity without surrendering the Han imperial staff, and blaze the trail to Dayuan (Fergana), Kangju, and the Greater Yuezhi.
Zhuge Liang's Emergence & Northern Expeditions (207–234 CE): From the Three Visits at Longzhong and the alliance at Chaisang before Red Cliffs, to entering Shu, the White Emperor City entrustment, the Southern Campaign across the Lu River, Hanzhong's Memorial on Deploying the Troops, Mount Qi, and the autumn winds of Wuzhang Plains.
Xuanzang's Pilgrimage to India (627–645 CE): Slip past Yumen Pass alone across the Moheyan Desert, scale the icy Bedel Pass, cross the Indus, study at Nalanda Monastery, and debate at Kanyakubja (Kanauj) before returning to Chang'an.
Li Bai's Grand Travels Across Tang China (701–762 CE): From Suyab and boyhood in Shu, sailing out through the Three Gorges at twenty-four, scattering gold in Yangzhou, serving in the Hanlin Academy at Chang'an, meeting Du Fu in Luoyang, receiving amnesty at White Emperor City, to his final years at Dangtu.
Su Shi's Literary Exile Across Song China (1056–1101 CE): From leaving Meishan for the capital Kaifeng and gazing at the moon in Mizhou, to composing the Red Cliffs Rhapsody in Huangzhou exile, Huizhou, and crossing the sea to Danzhou on Hainan Island.
Wang Yangming's Unity of Knowledge & Action (1472–1529 CE): From birth in Yuyao and imprisonment in Beijing, to his enlightenment at Longchang in Guizhou, pacifying bandits in Southern Ganzhou, capturing the rebel Prince of Ning in 35 days, teaching at the Tianquan Bridge in Shaoxing, and his final words "This mind is bright and clear; what more is there to say?" at Nan'an.
Multi-Person Chronicles: Type two or three names into the search box (e.g.
Li Bai, Du Fu, Gao ShiorCao Cao, Liu Bei, Sun Quan) to merge their journeys onto one timeline. Places where they met in the same year are marked as shared encounters, and theShared Npill narrows the list to just those stops.Event Storylines: Major events unfold stop by stop, just like a person's life. The An Lushan Rebellion (755–763 CE) is laid out in ten stops across three acts, with the Tang loyalists and the rebels drawn in two colors so each side's advances are easy to follow.
Each time you step to the next event (‹ / ›, ← / →, or Space to auto-play), the timeline year, reigning monarch, imperial era, and dynastic territories evolve in sync with their footsteps, highlighting the active transition arc alongside bilingual primary-source excerpts and poems written at that exact site.
Try It Live: Follow Su Dongpo's Exile to Mizhou & Huangzhou (1075–1082 CE) →

Feature 4: Easter Egg · Map Pinpoint Challenge — What Imperial Court Rank Would You Earn?
Think you know Chinese historical geography? Click Quiz › in the corner of the Universal Search Box guide bar (or type quiz for Map Pinpoint · Ancient Place Quiz):
Dynastic Historical Clues + Blind Map Pinpointing: City labels are hidden while the prompt asks you to locate an ancient city across a 10-round progressive difficulty deck—accompanied by dynastic historical clues (without spoiling the modern city name). Drop your pin to preview and adjust, click the on-pin
✓ Confirmbutton to lock in your answer with concentric distance score rings, and earn points based on great-circle distance to the true coordinates!Complete 10 rounds to receive a traditional imperial cartographic title such as Grand Historian & Master Cartographer (太史令 · 舆图大家), Director of the Bureau of Operations (职方郎中), or Prefectural Retainer (州郡从事).
Try It Live: Western Han Emperor Wu, Yuanshou 2 (121 BCE) · Start the Map Pinpoint Challenge →

Related MCP server: Timepoint MCP
Keyboard Shortcuts & Shareable Deep Links
Keyboard Shortcuts
Key / Action | Effect |
| Focus the Universal Search Box: search historical figures ( |
| Jump to the previous / next historical phase, milestone event, or person event stop (hold |
| Auto-play / pause timeline evolution (or auto-advance stops in Person Chronicle mode) |
| Close active popups/cards, clear search highlights, or exit custom multi-stop routes |
| Open the 18-era Trace Place & Key Events genealogy card for that location |
| Hover to isolate & highlight that polity's territory; click to auto-zoom to its bounding box |
Shareable Deep Links
Append query parameters to share any historical moment, battle, city genealogy, or multi-stop route:
Jump to a specific year or territorial shift:
?year=-403&lang=en(403 BCE · Partition of Jin) /?year=-121&lang=en(121 BCE · Huo Qubing opens the Hexi Corridor) /?year=648&lang=en(648 CE · Four Garrisons of Anxi & Wang Xuance in India) /?year=1288&lang=en(1288 CE · Yuan Xuanzhengyuan over Tibet) /?year=1881&lang=en(1881 CE · Zeng Jize recovers Ili) /?year=1945&lang=en(1945 CE · Retrocession of Taiwan)Pinpoint a famous battle:
?year=-260&place=长平&lang=en(Battle of Changping) /?year=208&place=赤壁&lang=en(Battle of Red Cliffs) /?year=383&place=淝水&lang=en(Battle of Fei River)Inspect a city's 2,400-year genealogy:
?year=741&place=长安&lang=en(Chang'an / Xi'an) /?year=1415&place=应天府&lang=en(Jiankang / Yingtian / Nanjing) /?year=819&place=蓝关&lang=en(Han Yu at Languan Pass)Plot a custom poetic or campaign route:
?year=763&place=剑外,巴峡,巫峡,襄阳,洛阳&lang=en(Du Fu's 763 CE homeward route) /?year=1079,1080,1094,1097&place=湖州,黄州,惠州,儋州&lang=en(Su Shi's multi-year exile route across Huzhou, Huangzhou, Huizhou, and Danzhou)Open a person's spatio-temporal chronicle:
?person=qinshihuang&lang=en(Qin Shi Huang) /?person=zhangqian&lang=en(Zhang Qian) /?person=zhugeliang&lang=en(Zhuge Liang) /?person=xuanzang&lang=en(Xuanzang) /?person=libai&lang=en(Li Bai) /?person=sushi&lang=en(Su Shi) /?person=wangyangming&lang=en(Wang Yangming)Compare several people or follow an event:
?person=libai,dufu&lang=en(Li Bai & Du Fu) /?person=caocao,liubei,sunquan&lang=en(Cao Cao, Liu Bei & Sun Quan) /?event=anshi&lang=en(An Lushan Rebellion)Start a quiz round:
?year=-121&quiz=locate&lang=en(Map Pinpoint Challenge)Switch UI language:
?lang=en(English) /?lang=zh-tw(Traditional Chinese) //(Simplified Chinese)
Embed in Your Page
Put any view of the atlas into a blog post, Notion page, or course site:
Open the atlas and set up the view you want (a year, a regime profile, a place card, or a person's trajectory). The address bar always mirrors what you see.
Copy the URL and add
&embed=1.Paste it into an
<iframe>:
<iframe
src="https://deanchen.me/jiangshan-map/?embed=1&year=1104&trace=101.778,36.617&from=1072&to=1126&lang=en"
width="100%" height="480" loading="lazy" style="border:0"
title="Chronicles of the Realm · 1104 CE, Northern Song"></iframe>The embedded map hides the site chrome and keeps only the map, a compact timeline, a title chip, an "Open in Jiangshan Atlas ↗" link, and a note that historical borders are approximate. Readers click once to start panning and zooming, so scrolling your page never gets stuck on the map.
Parameter | Effect |
| Turn on embed mode (required) |
| Same as the share links above |
| Limit the timeline to this range; the timeline zooms to show only it |
| Freeze the map at |
| Play a person's trajectory stop by stop (with |
WeChat Official Accounts, Zhihu, and Xiaohongshu do not allow iframes; share the plain link there instead.
AI Agent, MCP & LLM Integration
Chronicles of the Realm works out of the box as a historical-geography visualization engine for LLMs, MCP Clients, and AI Agents. Models never need to guess latitude/longitude coordinates—simply extract two semantic parameters from a poem or historical text, year and place, and the atlas automatically resolves ancient/modern place names, centers the camera, renders dynastic borders and multi-stop trajectories, and opens the Trace Place genealogy card:
Machine-Readable Specification:
llms.txtZero-Dependency Local MCP Server (
stdio):scripts/mcp_server.js— add to Claude Desktop, Cursor, Windsurf, or Gemini CLImcpServers:{ "mcpServers": { "jiangshan-atlas": { "command": "node", "args": ["/absolute/path/to/jiangshan-map/scripts/mcp_server.js"] } } }Exposes 3 native MCP tools (
<5msoffline response, zero npm dependencies):inspect_place({ year, place, lang? }): Returns reigning monarch/era, controlling regime (polity), macro-region (dao/lu/province), prefecture (jun/zhou/fu), modern province/city, 2,400-yearlore, and shareable deep-link URL.inspect_person({ person, stop?, lang? }): Returns a historical figure or monarch's biography, chronological geocoded stops across dynasties, and shareable deep-link URL.search_atlas({ query, limit?, lang? }): Searches across all ancient cities, poetic & battlefield landmarks, mountain passes, historical figures, imperial eras, and chronological milestones.
Ready-to-Use Agent Skill:
skills/jiangshan-atlas/SKILL.md(includes the zero-dependency CLI rendererskills/jiangshan-atlas/scripts/jiangshan.py)# Install into Claude Code / Gemini / Jetski global skills directory: mkdir -p ~/.claude/skills ~/.gemini/config/skills && cp -r skills/jiangshan-atlas ~/.claude/skills/ && cp -r skills/jiangshan-atlas ~/.gemini/config/skills/
1. Zero-Coordinate Dual-Parameter URL Protocol (0D Pinpoint / 1D Same-Year Route / 4D Multi-Year Route)
Mode | Example URL | Automatic Rendering Behavior |
Single-Point Pinpoint (0D) |
| Jumps to Tang Yuanhe 14 (819 CE), drops a pin on Languan Pass in the Qinling Mountains, and opens its 2,400-year administrative genealogy card |
Same-Year Multi-Stop Route (1D) |
| Plots numbered vermilion arcs |
Multi-Year Space-Time Route (4D) |
| Pairs |
2. CLI One-Command Screenshot & JSON Lookup (for Agent Tool Calls)
# Single-point poetic landmark screenshot
python3 skills/jiangshan-atlas/scripts/jiangshan.py --year 819 --place 蓝关 --out /tmp/languan_819.png
# Same-year multi-stop trajectory screenshot
python3 skills/jiangshan-atlas/scripts/jiangshan.py --year 763 --place 剑外,巴峡,巫峡,襄阳,洛阳 --out /tmp/dufu_763.png
# Multi-year space-time trajectory screenshot
python3 skills/jiangshan-atlas/scripts/jiangshan.py --year 1079,1080,1094,1097 --place 湖州,黄州,惠州,儋州 --out /tmp/sushi_exile.png3. Browser JavaScript API (window.atlasAPI) & In-Browser WebMCP (navigator.modelContext)
In browser automation environments (Playwright) or WebMCP-enabled AI browsers (navigator.modelContext), the page automatically registers jiangshan_locate, jiangshan_inspect, and jiangshan_open_person, and exposes window.atlasAPI:
window.atlasAPI.locate({ year, place, zoom? }): Drives the map to a single location or multi-stop trajectory and returns structured historical-geographic metadata.window.atlasAPI.inspect({ year, place, person?, stop? }): Read-only query returning the controlling polity, ancient prefecture, modern province/city, leg distances, person events, and canonical shareable URL.window.atlasAPI.resolvePlace(place, year?): Resolves ancient and modern names for cities, strategic passes, poetic landmarks, and battlefields.window.atlasAPI.openPerson(person, stop?)&window.atlasAPI.search(query): Opens a person chronicle on the map or searches across the entire atlas.
Run Locally
No dependencies or build steps required. Clone and serve with any static HTTP server:
git clone https://github.com/DeanChensj/jiangshan-map.git
cd jiangshan-map
python3 -m http.server 8000Then open http://localhost:8000 in your browser.
Run with Docker
No local dependency needed. Build and start with Docker Compose:
docker compose up -d --buildThen open http://localhost:8008 (the port mapping 8008:80 is set in docker-compose.yml).
The image is a plain nginx:alpine that serves this repository as static files: Dockerfile copies the working tree into /usr/share/nginx/html, and .dockerignore keeps the build context small by excluding .git, .github, data/, docs/, scripts/, skills/, Markdown files and geojson/demo.html — the site does not need any of them at runtime.
To use another port, change the ports mapping in docker-compose.yml (e.g. "9000:80") and run docker compose up -d again.
After pulling upstream changes, rebuild with docker compose up -d --build. Without Compose: docker build -t jiangshan-map:latest . then docker run -d -p 8008:80 --name jiangshan-map jiangshan-map:latest.
Note: the image is built locally; it is not published to any registry.
GeoJSON Export (for Leaflet / MapLibre / QGIS)
The app ships its geometry as compact topology-deduplicated VLQ bundles. To use the vector layers in other projects, generate standard RFC 7946 GeoJSON (EPSG:4326, lon/lat) locally; the output goes to geojson/ and is not committed. The export covers 403 BCE to 1948; later years and the modern province layer are not included. The prefecture layer (郡 / 州 / 府) is left out by default because it derives from CHGIS, whose terms forbid redistribution; add --with-prefectures to include it for local academic, non-commercial use, and do not publish the result.
node scripts/export_geojson.js # or: node scripts/export_geojson.js <outDir>
node scripts/export_geojson.js --with-prefectures # adds the CHGIS-derived prefecture layer (local academic use only)snapshots/<id>.geojson— one file per territorial phase; each feature has abboxandlayer(polity/region, plusprefecturewith--with-prefectures),title,title_en,category,tint,anchor.index.json— every dynasty's phases withfrom/toyears (negative = BCE, no year 0) and the matching snapshot file.corridors.geojson(walls, canals, roads, sea routes),settlements.geojson,milestones.geojson,neighbors.geojson, andmodern/(rivers, lakes, hydro labels;appear/vanishgive the years historical river courses and lakes are shown).
To look up a point without loading every phase, use geojson/jiangshan-locate.js: it loads index.json plus only the snapshot covering the year, then runs a bbox-filtered point-in-polygon test.
const atlas = JiangshanLocate.create(); // or create({ base: '<url of geojson/>' })
const hit = await atlas.locate(118.78, 32.06, 1415); // lon, lat, year
hit.polity.properties.title; // 明
hit.region.properties.title; // 南直隶
hit.prefecture; // null unless exported with --with-prefectures (then 应天府)After exporting, serve the repository (python3 -m http.server 8000) and open http://localhost:8000/geojson/demo.html for a Leaflet example: drag the year slider, click the map, or open demo.html?year=1415&lon=118.78&lat=32.06 to load, highlight and zoom automatically. Historical borders are schematic approximations, not surveyed boundaries. The data is GPL-3.0 except the prefecture-level boundaries; see Data Sources & License.
Data Sources & License
Code and the data created by this project are released under GPL-3.0. One layer is not: the prefecture-level boundaries derived from CHGIS, which stay under CHGIS's own terms.
Layer | Source | License |
Code (app, scripts, CLI, MCP server) | This project | GPL-3.0 |
Polity outlines ( | Started from aourednik/historical-basemaps (GPL-3.0), then redrawn by hand against historical texts | GPL-3.0 |
First-level divisions ( | Drawn by hand from historical texts; the source of early versions was not recorded | GPL-3.0 |
Prefecture-level boundaries ( | Derived from CHGIS V6 and the Robert M. Hartwell China Historical GIS, simplified to 0.01° and edited by hand | Not GPL-3.0. Academic, non-commercial use only; do not redistribute. See below |
Settlements, milestones, journeys, person chronicles, place lore | Compiled by this project from historical texts | GPL-3.0 |
Modern provinces | DataV GeoAtlas (Alibaba Cloud) | Subject to DataV GeoAtlas terms |
Rivers, lakes, neighbouring countries | Public-domain data | Public domain |
Terrain hillshade | Rendered by | GPL-3.0 (images) |
Guqin audio | Wikimedia Commons (Liu Shui, Pingsha Luoyan, Yangguan Sandie, Zuiyu Changwan, Jiu Kuang) | Public domain |
Scholarly references (not data sources). Boundaries are checked against historical texts and Tan Qixiang's The Historical Atlas of China (谭其骧主编《中国历史地图集》). No map images or data from that atlas are included in this repository.
Prefecture-level boundaries (CHGIS). This layer is not covered by GPL-3.0 and is shown here for non-commercial, educational use. Do not republish it from this repository; if you need prefecture boundaries, download CHGIS from its official distribution (Harvard Dataverse) under its terms. scripts/export_geojson.js leaves this layer out unless run with --with-prefectures. Cite it as: CHGIS, Version: 6. © Fairbank Center for Chinese Studies of Harvard University and the Center for Historical Geographical Studies at Fudan University, 2016. Provenance details: data/atlas/README.md.
Approximate boundaries. Historical territories and administrative boundaries are schematic approximations of broad jurisdictions, not surveyed borders. Do not cite them as precise or authoritative.
Reusing this project. For the GPL-3.0 layers, credit 江山时序 Jiangshan Atlas with a link to https://github.com/DeanChensj/jiangshan-map and cite the upstream sources above. Screenshots that show the prefecture layer carry the CHGIS terms as well.
Rights holders. If you hold rights in any material here and believe it is used improperly, please open an issue; we will respond and remove it if needed.
Contributing: see CONTRIBUTING.md (中文贡献指南) for repository structure, data conventions, and validation checks.
Report a data error: found a wrong year, place or description? Open a data correction issue and cite a source if you can.
Copyright © 2026 DeanChensj. Licensed under GPL-3.0 (see LICENSE), except as noted above.
Available Tools
3 toolsinspect_personA
Query the spatio-temporal life & poetry chronicle (点人溯事) of a single Chinese historical figure/monarch, or compare 2–4 figures for shared encounters & parallel lives (同途相逢 / 时空平行对照) on the Jiangshan Historical Atlas. Returns biographical summary, chronological geocoded stops, shared encounter events, and a shareable deep-link URL.
Inputs: person (required), lang, stop.
inspect_placeA
Query the historical and administrative context of a Chinese city, poem landmark, strategic pass, battlefield, or multi-stop route on the Jiangshan Historical Atlas (403 BCE – 2026 CE). Returns the reigning monarch/era, controlling regime (polity), macro-region (dao/lu/province), prefecture (jun/zhou/fu), modern province/city, 2,400-year city/pass lore, and a shareable deep-link URL.
Inputs: year (required), place (required), lang.
search_atlasB
Search the Jiangshan Historical Atlas across 1,753 ancient cities, 185 poetic/battlefield landmarks, 20 strategic mountain passes, 125+ historical figures, 351 imperial eras, and 473 chronological milestones.
Inputs: query (required), lang, limit.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 3 tools
Each tool targets a clearly different operation and entity type: place inspection, person inspection/comparison, and broad atlas search. There is no meaningful overlap that would cause an agent to misselect between them.
All three tools use a consistent snake_case verb_noun pattern: inspect_place, inspect_person, search_atlas. The naming is predictable and readable.
Three tools is compact and each maps to a distinct workflow, but the atlas domain includes several entity types and possible route/comparison workflows that could justify a few more focused tools. It is slightly thin rather than poorly scoped.
The surface covers place inspection, person inspection/comparison, and global search, but eras and chronological milestones are only searchable, not directly inspectable as first-class entities. Route and timeline-specific workflows are also only partially implied.
Maintenance
Related MCP Connectors
MCP server for classical Chinese texts: sentence lookup, source attribution and full-text search
Historical borders and dated map events with source attribution and coverage limits.
MCP server for classical Chinese poetry: search poems by title, author, dynasty or verse, with full
Structured Chinese official data for AI agents: 426 entries, JSON-LD, read-only. find/get/list
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables querying of China Historical Geographic Information System (CHGIS) database for historical place names, administrative divisions, and geographical data from 222 BCE to 1911 CE. Supports searching by place ID, name, year, administrative type, and retrieving historical context and hierarchical relationships.33MIT

Timepoint MCPofficial
FlicenseNot gradedqualityBmaintenanceProvides structured access to a temporal knowledge platform for searching historical events and browsing a causal graph of over 2,000 years of history. It enables users to generate rich historical scenes, interact with period-appropriate characters, and run complex temporal simulations.-- FlicenseNot gradedqualityDmaintenanceEnables querying 10,000 years of historical social-complexity data from the Seshat Global History Databank through 9 tools, allowing counterfactual analysis and comparison of polities in natural language.1-
- AlicenseAqualityCmaintenanceA traceable Chinese-history MCP server that enables querying of nine classical Chinese texts (e.g., 史记, 汉书) with citations and honest status labels. It provides four tools to search events, persons, places, and qualities, all with provenance.449 PyPI3MIT