loading…
Search for a command to run...
loading…
Enables AI-native access to Swiss cultural heritage data from SIK-ISEA (artists), Nationalmuseum (collections), and Nationalbibliothek (bibliography) via MCP to
Enables AI-native access to Swiss cultural heritage data from SIK-ISEA (artists), Nationalmuseum (collections), and Nationalbibliothek (bibliography) via MCP tools, without authentication.
🇨🇭 Part of the Swiss Public Data MCP Portfolio
License: MIT
Python 3.11+
MCP
No Auth Required
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 call# 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.
| 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 # 9 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)
├── pyproject.toml
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md # This file (English)
└── README.de.md # German version
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"
See CHANGELOG.md
See CONTRIBUTING.md
MIT License — see LICENSE
Hayal Oezkan · malkreide
Run in your terminal:
claude mcp add swiss-cultural-heritage-mcp -- npx Security
Low riskAutomated heuristic from public metadata — not a security guarantee.