swiss-cultural-heritage-mcp
This server provides AI-native, read-only access to three major Swiss cultural heritage databases — SIK-ISEA, Nationalmuseum (SNM), and Nationalbibliothek (NB) — with no authentication or API key required.
SIK-ISEA (SIKART — Swiss Artists)
Search ~17,000 Swiss artists by name, profession, region, or keyword (e.g., "Hodler", "Basel", "Bildhauer")
Retrieve full biographical profiles (life dates, locations, biography) by SIKART ID
Nationalmuseum (SNM — Swiss National Museum)
Discover SNM datasets on opendata.swiss (e.g., numismatics ~100,000 coins, seals ~80,000 objects, special collections)
Browse individual objects within a specific collection via CKAN DataStore resource ID
Nationalbibliothek (NB — Swiss National Library / Helveticat)
Search the Swiss national bibliography via OAI-PMH, with filtering by title, author, keyword, and optional date range
List all available OAI-PMH sets (collections)
Retrieve full Dublin Core metadata for a specific publication by OAI identifier
Cross-Source Search
Run a single query in parallel across all three sources simultaneously, with configurable source selection and per-source result limits
Additional capabilities: Results returned in Markdown or JSON format; fuzzy fallback search when exact queries return no results; built-in pagination; all data under open licenses (CC0 / CC BY); read-only access only.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@swiss-cultural-heritage-mcpFind 19th century Zurich artists in SIK-ISEA and their works in Nationalmuseum"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🇨🇭 Part of the Swiss Public Data MCP Portfolio
🏛️ swiss-cultural-heritage-mcp
MCP Server for Swiss cultural heritage — SIK-ISEA artists, Nationalmuseum collections, and the Nationalbibliothek bibliography
Overview
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."
Demo
Related MCP server: swiss-academic-libraries-mcp
Features
🏛️ 8 tools, 2 resources, 2 prompts across three data sources
🔍
heritage_cross_search— parallel search across all three sources in a single call🌐 Bilingual output (Markdown / JSON)
🔓 No API key required — all data under open licenses
☁️ Dual transport — stdio (Claude Desktop) + Streamable HTTP (cloud)
📚 Prompt templates for art research and finding educational materials
Project 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.
Prerequisites
Python 3.11+
uv (recommended) or pip
Installation
# 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-mcpQuickstart
# stdio (for Claude Desktop)
python -m swiss_cultural_heritage_mcp.server
# Streamable HTTP (port 8000)
python -m swiss_cultural_heritage_mcp.server --http --port 8000Try 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 →
Configuration
Claude Desktop
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:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Cloud Deployment (SSE for browser access)
For use via claude.ai in the browser (e.g. on managed workstations without local software):
Render.com (recommended):
Push/fork the repository to GitHub
On render.com: New Web Service → connect GitHub repo
Select region
Frankfurt(EU) — required for Swiss public-sector use under revDSG / EDÖB. Seedocs/data-residency.md.Set start command:
python -m swiss_cultural_heritage_mcp.server --http --port 8000In claude.ai under Settings → MCP Servers, add:
https://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.
Available Tools
SIK-ISEA (Swiss Art Research)
Tool | Description |
| Search ~17,000 Swiss artists (SIKART) by name or place |
| Full artist profile by SIKART ID (HAUPTNR) |
Nationalmuseum (SNM)
Tool | Description |
| Search SNM datasets on opendata.swiss |
| Browse objects within a collection via CKAN DataStore |
Nationalbibliothek (NB)
Tool | Description |
| Search Swiss national bibliography via OAI-PMH |
| List available OAI-PMH sets |
| Full Dublin Core metadata for a publication |
Cross-Source
Tool | Description |
| Parallel search across SIK-ISEA + SNM + NB |
Example Use Cases
Query | Tool |
"Who is Ferdinand Hodler?" |
|
"Find Swiss artists born in Basel" |
|
"What coins from Zurich does the Nationalmuseum have?" |
|
"Find publications about Volksschule" |
|
"Search for everything about Sophie Taeuber-Arp" |
|
Architecture
┌─────────────────┐ ┌──────────────────────────────┐ ┌──────────────────────────┐
│ 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) │
└──────────────────────────────┘ └──────────────────────────┘Data Source Characteristics
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 |
Project Structure
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 versionSingle-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.
Safety & Limits
Read-only: All tools perform HTTP GET requests only — no data is written, modified, or deleted.
No personal data: The APIs return institutional records (artworks, publications, artists). No personally identifiable information (PII) is processed or stored by this server.
Rate limits: The opendata.swiss and OAI-PMH endpoints are not rate-limit-documented; use
limitparameters conservatively. The server enforces a 30s timeout per request.Data freshness: Records reflect the upstream source at query time. No caching is performed by this server.
Terms of service: Data is subject to the ToS of each source — SIK-ISEA, opendata.swiss, Nationalbibliothek OAI-PMH. All data is published under open licenses (CC0 / CC BY).
No guarantees: This server is a community project, not affiliated with SIK-ISEA, SNM, or NB. Availability depends on upstream APIs.
Known Limitations
SIK-ISEA: Artist data is updated periodically; very recent acquisitions may not yet be reflected
Nationalmuseum: Only datasets published on opendata.swiss are accessible; not all SNM collections are available
Nationalbibliothek: OAI-PMH harvesting is rate-limited; large result sets require pagination
Cross-search: Response time depends on the slowest of the three sources
Testing
# Unit tests (no API key required)
PYTHONPATH=src pytest tests/ -m "not live"
# Integration tests (live API calls)
pytest tests/ -m "live"MCP Protocol Version
Item | Value |
Supported MCP protocol version |
|
SDK |
|
Update policy | The SDK pin is the source of truth for the protocol version. Dependabot opens monthly |
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.
Changelog
See CHANGELOG.md
Contributing
See CONTRIBUTING.md
License
MIT License — see LICENSE
Author
Hayal Oezkan · malkreide
Credits & Related Projects
SIK-ISEA: www.sik-isea.ch — Swiss Institute for Art Research
Nationalmuseum: www.nationalmuseum.ch / opendata.swiss
Nationalbibliothek: www.nb.admin.ch — Swiss National Library
Protocol: Model Context Protocol — Anthropic / Linux Foundation
Related: eth-library-mcp — ETH Library: full Swiss library coverage (ETH = science, NB = humanities)
Related: fedlex-mcp — Cultural heritage law + primary legislation
Related: zurich-opendata-mcp — Spatial-historical: museum objects + Zurich geodata
Portfolio: Swiss Public Data MCP Portfolio
Installation
Run via uv's uvx — no clone or manual install needed. Add to your MCP client config (mcpServers for Claude Desktop, Cursor and Windsurf; use a top-level servers key for VS Code in .vscode/mcp.json):
{
"mcpServers": {
"swiss-cultural-heritage-mcp": {
"command": "uvx",
"args": [
"swiss-cultural-heritage-mcp"
]
}
}
}Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/malkreide/swiss-cultural-heritage-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server