Castles
FreeNot checked2,400 castles, fortresses & palaces: name search, nearby, fame ranking, statistics. No key, CC0.
About
2,400 castles, fortresses & palaces: name search, nearby, fame ranking, statistics. No key, CC0.
README
A Model Context Protocol server for the Castlemap atlas: 2,400 castles, fortresses and palaces across 131 countries, with coordinates, founding dates, categories, fame ranking and Wikipedia summaries.
It is already running. Point a client at the hosted endpoint — there is no install, no signup and no API key:
https://thecastlemap.com/mcp
Streamable HTTP, stateless, POST-only (a GET returning 405 is correct).
Protocol revisions 2025-06-18 and 2025-03-26 are accepted.
Client configuration
{
"mcpServers": {
"castles": {
"type": "http",
"url": "https://thecastlemap.com/mcp"
}
}
}
Registry entry: com.thecastlemap/castles.
Tools
| Tool | What it does |
|---|---|
search_castles |
Find castles by name, country or category |
get_castle |
Full record for one castle |
castles_near |
Nearest castles to a coordinate (haversine); geocode first |
top_castles |
Best-known castles, by fame rank |
list_countries |
The 131 countries, with counts |
get_statistics |
Live aggregates — totals, per-country, per-century |
random_castle |
One castle at random |
Data
Derived from Wikidata, with summaries from Wikipedia and images from Wikimedia Commons. The atlas is curated rather than exhaustive: it covers castles with a documented history, a real photo and exact coordinates, not every earthwork and ruin.
The factual records are released as CC0 and downloadable as GeoJSON and CSV
from thecastlemap.com/data — also mirrored on
GitHub,
Hugging Face,
Kaggle
and Zenodo (DOI
10.5281/zenodo.21322360).
Running it yourself
server.mjs has zero dependencies — no SDK, no node_modules. It needs
Node 18+ and a castles.geojson to read (download one from
/data):
CASTLES_GEOJSON=/path/to/castles.geojson PORT=8891 node server.mjs
It binds 127.0.0.1:8891 by default; HOST, PORT and CASTLES_GEOJSON
override that. The file is re-read when its mtime changes (throttled to 60s), so
updating the data needs no restart.
castlemap-mcp.service is the systemd unit used in production — loopback-bound,
DynamicUser, ProtectSystem=strict, with nginx terminating TLS in front. Set
ExecStart to your own node path and ReadOnlyPaths/CASTLES_GEOJSON to
wherever the data lives.
Provenance
Built by Alban Zaja with AI assistance: the concept, direction and review are mine; much of the implementation was written with Claude. The underlying data is not generated — it comes from Wikidata, and every record is traceable to its Wikidata item.
License
Code: MIT (see LICENSE). Data: CC0. Wikipedia summary text remains CC BY-SA
and is attributed per record.
Installing Castles
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/Flightmussy/castlemap-mcpFAQ
Is Castles MCP free?
Yes, Castles MCP is free — one-click install via Unyly at no cost.
Does Castles need an API key?
No, Castles runs without API keys or environment variables.
Is Castles hosted or self-hosted?
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
How do I install Castles in Claude Desktop, Claude Code or Cursor?
Open Castles on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Castles with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
