Server data from the Official MCP Registry
Heritage inventories, monument lists, archaeological registers
Heritage inventories, monument lists, archaeological registers
Valid MCP server (1 strong, 3 medium validity signals). No known CVEs in dependencies. Package registry verified. Imported from the Official MCP Registry.
4 files analyzed Β· 1 issue found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-malkreide-swiss-cultural-heritage-mcp": {
"args": [
"swiss-cultural-heritage-mcp"
],
"command": "uvx"
}
}
}From the project's GitHub README.
π¨π Part of the Swiss Public Data MCP Portfolio
MCP Server for Swiss cultural heritage β SIK-ISEA artists, Nationalmuseum collections, and the Nationalbibliothek bibliography
swiss-cultural-heritage-mcp provides AI-native access to three major Swiss cultural heritage data sources, all without authentication:
| Source | Data | API |
|---|---|---|
| SIK-ISEA (SIKART) | ~17,000 Swiss artists β SIKART biographical data | opendata.swiss CKAN |
| Nationalmuseum (SNM) | Museum collections (numismatics, seals, special collections) | opendata.swiss CKAN |
| Nationalbibliothek (NB) | Swiss national bibliography (Helveticat) | OAI-PMH |
This server completes the humanistic dimension of the Swiss public data portfolio β history, literature, and art β alongside existing servers for law (fedlex-mcp), transport, statistics, and more.
Anchor demo query: "Find works by Zurich-based painters from the 19th century in the Nationalmuseum, and cross-reference with their biography in the SIK-ISEA artist database."
heritage_cross_search β parallel search across all three sources in a single callProject phase: Phase 1 β read-only. Every tool is annotated readOnlyHint: true; there are no write or destructive operations. Moving to Phase 2 (write-capable) requires the prerequisites in docs/roadmap.md.
# Clone the repository
git clone https://github.com/malkreide/swiss-cultural-heritage-mcp.git
cd swiss-cultural-heritage-mcp
# Install
pip install -e .
# or with uv:
uv pip install -e .
Or with uvx (no permanent installation):
uvx swiss-cultural-heritage-mcp
# stdio (for Claude Desktop)
python -m swiss_cultural_heritage_mcp.server
# Streamable HTTP (port 8000)
python -m swiss_cultural_heritage_mcp.server --http --port 8000
Try it immediately in Claude Desktop:
"Who is Ferdinand Hodler?" "What coins does the Nationalmuseum have from Zurich?" "Find publications about Volksschule in the Swiss national bibliography"
β More use cases by audience β
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"swiss-cultural-heritage": {
"command": "python",
"args": ["-m", "swiss_cultural_heritage_mcp.server"]
}
}
}
Or with uvx:
{
"mcpServers": {
"swiss-cultural-heritage": {
"command": "uvx",
"args": ["swiss-cultural-heritage-mcp"]
}
}
}
Config file locations:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonFor use via claude.ai in the browser (e.g. on managed workstations without local software):
Render.com (recommended):
Frankfurt (EU) β required for Swiss public-sector use under revDSG / EDΓB. See docs/data-residency.md.python -m swiss_cultural_heritage_mcp.server --http --port 8000https://your-app.onrender.com/sseπ‘ "stdio for the developer laptop, SSE for the browser."
For container deployments (Docker / Kubernetes / Cloud Run): the repository ships a hardened Dockerfile (non-root UID 10001). See docs/security.md for recommended SecurityContext and docs/network-egress.md for egress policy. The service runs single-instance by default; before scaling horizontally, see docs/scaling.md for the session-affinity prerequisites.
| Tool | Description |
|---|---|
heritage_search_artists | Search ~17,000 Swiss artists (SIKART) by name or place |
heritage_get_artist | Full artist profile by SIKART ID (HAUPTNR) |
| Tool | Description |
|---|---|
heritage_search_museum_datasets | Search SNM datasets on opendata.swiss |
heritage_browse_collection | Browse objects within a collection via CKAN DataStore |
| Tool | Description |
|---|---|
heritage_search_helveticat | Search Swiss national bibliography via OAI-PMH |
heritage_list_nb_collections | List available OAI-PMH sets |
heritage_get_publication | Full Dublin Core metadata for a publication |
| Tool | Description |
|---|---|
heritage_cross_search | Parallel search across SIK-ISEA + SNM + NB |
| Query | Tool |
|---|---|
| "Who is Ferdinand Hodler?" | heritage_get_artist |
| "Find Swiss artists born in Basel" | heritage_search_artists |
| "What coins from Zurich does the Nationalmuseum have?" | heritage_browse_collection |
| "Find publications about Volksschule" | heritage_search_helveticat |
| "Search for everything about Sophie Taeuber-Arp" | heritage_cross_search |
βββββββββββββββββββ ββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββ
β Claude / AI ββββββΆβ Swiss Cultural Heritage MCP ββββββΆβ SIK-ISEA β
β (MCP Host) βββββββ (MCP Server) βββββββ opendata.swiss / CKAN β
βββββββββββββββββββ β β ββββββββββββββββββββββββββββ€
β 9 Tools Β· 2 Resources ββββββΆβ Nationalmuseum (SNM) β
β 2 Prompts βββββββ opendata.swiss / CKAN β
β Stdio | SSE β ββββββββββββββββββββββββββββ€
β ββββββΆβ Nationalbibliothek (NB) β
β No authentication required βββββββ OAI-PMH (Helveticat) β
ββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββ
| Source | Protocol | Coverage | Auth |
|---|---|---|---|
| SIK-ISEA (SIKART) | CKAN DataStore | ~17,000 Swiss artists | None |
| Nationalmuseum | CKAN DataStore | Museum collections | None |
| Nationalbibliothek | OAI-PMH | Swiss national bibliography | None |
swiss-cultural-heritage-mcp/
βββ src/swiss_cultural_heritage_mcp/
β βββ __init__.py # Package
β βββ server.py # 8 tools, 2 resources, 2 prompts
βββ tests/
β βββ test_server.py # Unit + integration tests (mocked HTTP)
βββ .github/workflows/ci.yml # GitHub Actions (Python 3.11/3.12/3.13)
βββ .github/dependabot.yml # Monthly dependency + SDK update PRs
βββ Dockerfile # Multi-stage, non-root, HEALTHCHECK
βββ docs/ # security, network-egress, scaling, data-residency, roadmap
βββ pyproject.toml
βββ CHANGELOG.md
βββ CONTRIBUTING.md
βββ LICENSE
βββ README.md # This file (English)
βββ README.de.md # German version
Single-file server: the 8 tools live in one
server.pyrather than atools/package. At this size a single, linear module is easier to read and review than a split; if the tool count grows materially, the SIK-ISEA / SNM / NB / cross-search blocks are the natural split points.
limit parameters conservatively. The server enforces a 30s timeout per request.# Unit tests (no API key required)
PYTHONPATH=src pytest tests/ -m "not live"
# Integration tests (live API calls)
pytest tests/ -m "live"
| Item | Value |
|---|---|
| Supported MCP protocol version | 2025-11-25 (negotiated by the SDK) |
| SDK | mcp[cli] >=1.0.0,<2.0.0 (pinned in pyproject.toml) |
| Update policy | The SDK pin is the source of truth for the protocol version. Dependabot opens monthly mcp update PRs; protocol-version bumps are reviewed there and recorded in CHANGELOG.md. |
The official mcp SDK negotiates the protocol version during initialize; this server does not override it. Pin the SDK (not a hand-rolled version string) to control which protocol version is spoken.
See CHANGELOG.md
See CONTRIBUTING.md
MIT License β see LICENSE
Hayal Oezkan Β· malkreide
Be the first to review this server!
by Modelcontextprotocol Β· Developer Tools
Read, search, and manipulate Git repositories programmatically
by Modelcontextprotocol Β· Developer Tools
Web content fetching and conversion for efficient LLM usage
by Toleno Β· Developer Tools
Toleno Network MCP Server β Manage your Toleno mining account with Claude AI using natural language.