Kulturerbe MCP Server
Model Context Protocol (MCP) server for searching Austrian Cultural Heritage via the Kulturpool API.
Overview
This MCP server provides secure, rate-limited access to Austria's cultural heritage through the Kulturpool API. It implements a 6-tool progressive disclosure architecture designed for efficient context window usage and comprehensive cultural object discovery.
Features
π 6-Tool Progressive Disclosure Architecture
kulturpool_explore- Initial exploration with facet analysis (< 2KB response)kulturpool_search_filtered- Targeted search with comprehensive filters (β€ 20 results)kulturpool_get_details- Find related objects using content-based search (β€ 3 IDs)kulturpool_get_institutions- Complete institution directory with locationskulturpool_get_institution_details- Detailed institution metadatakulturpool_get_assets- Optimized image assets with transformations
π‘οΈ Built-in Security
Input Sanitization: Protection against injection attacks
Rate Limiting: 100 requests/hour per client
Response Limits: < 10KB responses for context efficiency
Parameter Validation: Comprehensive Pydantic-based validation
Safe URL Handling: Restricted to Kulturpool API endpoints
β‘ Performance Optimized
Progressive Disclosure: Start broad, then narrow down
Compressed Responses: Essential metadata only
Facet-Based Navigation: Smart filtering recommendations
Connection Pooling: Efficient HTTP client with retry logic
Installation
Prerequisites
Python 3.8 or higher
pip package manager
Git (for cloning the repository)
Setup
Clone the repository:
git clone https://github.com/yourusername/kulturerbe_mcp.git cd kulturerbe_mcpCreate and activate virtual environment:
Windows:
python -m venv .venv .venv\Scripts\activateLinux/WSL/macOS:
python3 -m venv .venv source .venv/bin/activateInstall dependencies:
pip install -r requirements.txtTest the server:
Windows:
python server.pyLinux/WSL/macOS:
python3 server.py
Claude Desktop Configuration
Add the server to your Claude Desktop MCP configuration file:
Configuration file locations:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Option 1: Windows with WSL (Recommended for this project)
Option 2: Windows Native
Option 3: Linux/macOS
Claude Code Configuration
For Claude Code in WSL/Linux environment:
π Note: Pre-configured options are available in
mcp_config.json- copy the relevant section to your configuration file.
Alternative: Launcher Scripts
Windows:
Linux/WSL/macOS:
Usage Guide
1. Initial Exploration
Start with broad exploration to understand available data:
Returns: Facet counts by institution, type, and time period with sample results.
2. Filtered Search
Use facets to narrow down results:
Advanced Filters:
Date Range: Interval overlap semantics (object's [dateMin,dateMax] overlaps [date_from,date_to])
Creators: Partial matching with wildcards
Subjects: Exact matching for topics
Media: Filter by material/medium
Dublin Core Types: Performance-limited object categorization
3. Related Object Discovery
Find related cultural objects using content-based search:
4. Institution Management
Explore participating institutions:
5. Asset Optimization
Access optimized images with transformations:
Selection of supported institutions
Major Austrian cultural institutions participate in the Kulturpool network:
Albertina - Graphics and modern art
Belvedere - Austrian art and baroque collections
Γsterreichische Nationalbibliothek - National library and archives
Wiener Stadt- und Landesarchiv - Vienna city archives
MAK - Applied arts and contemporary art
Weltmuseum Wien - Ethnographic collections
Technisches Museum Wien - Technology and industry
Naturhistorisches Museum Wien - Natural history
Development
Architecture
The server is built as a single-file implementation (server.py, ~1300 lines) with:
MCP Protocol: Traditional stdio transport
Async/Await: Full asynchronous operation
Pydantic Validation: Type-safe parameter handling
Security Layer: Input sanitization and rate limiting
Error Handling: Comprehensive exception management
Key Components
Configuration
Environment Variables
No environment variables required - the server connects directly to the public Kulturpool API.
Rate Limiting
Default: 100 requests per hour per client
Configurable: Modify
RateLimiter(max_requests=100, time_window=3600)Scope: Global across all tool calls
Response Limits
Explore: < 2KB responses with facets
Search: β€ 20 results with full metadata
Details: β€ 3 object IDs per request
Overall: < 10KB response size limit
API Reference
Data Sources
This server provides access to:
Base API:
https://api.kulturpool.at/search/Institution API:
https://api.kulturpool.at/institutions/Asset API:
https://api.kulturpool.at/assets/
Object Types
IMAGE: Photographs, paintings, drawings, graphics
TEXT: Manuscripts, books, documents, letters
SOUND: Audio recordings, music, oral history
VIDEO: Film recordings, documentaries
3D: Three-dimensional objects, sculptures
Sort Options
titleSort:asc/desc- Alphabetical by titledataProvider:asc/desc- By institutiondateMin:asc/desc- By earliest datedateMax:asc/desc- By latest date
Contributing
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE.txt file for details.
Support
Issues: GitHub Issues
Discussions: GitHub Discussions
API Documentation: Kulturpool API
Development Credits
This MCP server was developed at the ΓAW-ACDH using Vibe Coding methodologies with assistance from Claude Sonnet 4 via the Claude Code CLI.
β οΈ Beta Disclaimer
This MCP server is a beta version and experimental software.
This software has undergone limited testing and should be considered experimental
Use at your own risk in production environments
The developers assume no liability for any damages, data loss, or other consequences arising from the use of this software
No warranty is provided, either express or implied, regarding the functionality, reliability, or suitability of this software for any particular purpose
Acknowledgments
Kulturpool - Austrian Cultural Heritage Platform
Model Context Protocol - Protocol specification
Anthropic - Claude Desktop integration
Austrian Academy of Sciences - Research institution support
This server cannot be installed