loading…
Search for a command to run...
loading…
Enables AI models to search and retrieve bibliographic and digitized records from Swiss academic libraries (swisscovery, e-rara, e-periodica, e-manuscripta) via
Enables AI models to search and retrieve bibliographic and digitized records from Swiss academic libraries (swisscovery, e-rara, e-periodica, e-manuscripta) via open protocols without requiring API keys.
🇨🇭 Part of the Swiss Public Data MCP Portfolio
PyPI version
License: MIT
Python 3.11+
MCP
No Auth Required
MCP server providing access to Swiss academic libraries — swisscovery, e-rara, e-periodica, e-manuscripta. No API key required.
swiss-academic-libraries-mcp connects AI models to the full Swiss academic library infrastructure via standardised, open protocols. It covers the swisscovery union catalogue (500+ libraries, 10M+ records) and three digitalisation platforms: historical prints (e-rara), periodicals (e-periodica) and manuscripts (e-manuscripta).
All data sources use open, authentication-free protocols (SRU/MARC21, OAI-PMH/Dublin Core). The server supports both local use via Claude Desktop (stdio transport) and cloud deployment (Streamable HTTP).
Anchor demo query: "Which Swiss university dissertations on primary school pedagogy are held in Swiss libraries, and are any of them digitised in e-rara?"
research-workflow and education-research| Source | Protocol | Content | Records |
|---|---|---|---|
| swisscovery (SLSP) | SRU / MARC21 | 500+ Swiss libraries | 10M+ |
| e-rara | OAI-PMH / Dublin Core | Digitised historical prints | 250k+ |
| e-periodica | OAI-PMH / Dublin Core | Digitised periodicals (1750–today) | 1M+ articles |
| e-manuscripta | OAI-PMH / Dublin Core | Manuscripts & archival material | 100k+ |
| Tool | Source | Function |
|---|---|---|
library_info |
— | Entry point: overview of all sources and tools |
swisscovery_search |
swisscovery | Full-text / CQL search across the union catalogue |
swisscovery_get_record |
swisscovery | Single record by MMS-ID |
erara_list_records |
e-rara | Prints filtered by date / collection |
erara_get_record |
e-rara | Single item by OAI identifier |
erara_list_collections |
e-rara | All participating libraries |
eperiodica_list_records |
e-periodica | Articles filtered by date |
eperiodica_get_record |
e-periodica | Single article by OAI identifier |
emanuscripta_list_records |
e-manuscripta | Manuscripts filtered by date / collection |
emanuscripta_get_record |
e-manuscripta | Single object by OAI identifier |
emanuscripta_list_collections |
e-manuscripta | All archives / collections |
| Query | Tool |
|---|---|
| "Which books about Swiss primary schools are held in Swiss libraries?" | swisscovery_search |
| "Show digitised historical works from ETH Library" | erara_list_records |
| "Which Swiss periodicals were digitised in 2023?" | eperiodica_list_records |
| "What manuscript collections does e-manuscripta hold?" | emanuscripta_list_collections |
Add to claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"swiss-academic-libraries": {
"command": "uvx",
"args": ["swiss-academic-libraries-mcp"]
}
}
}
Restart Claude Desktop — the server starts automatically on first use.
uvx swiss-academic-libraries-mcp --http --port 8000 [--host 127.0.0.1]
Security & Deployment Notes
127.0.0.1 (loopback only). The server has no
built-in authentication.--host 0.0.0.0 only when running behind a reverse proxy that
provides authentication and per-IP rate limits (e.g. nginx with
limit_req + OAuth2-Proxy). Non-loopback bindings emit a WARN log.MCP_LOG_LEVEL=DEBUG|INFO|WARNING.git clone https://github.com/malkreide/swiss-academic-libraries-mcp
cd swiss-academic-libraries-mcp
pip install -e .
Start by calling library_info for a full overview. Then:
"Which books about Swiss primary schools are held in Swiss libraries?"
→ swisscovery_search(query='subject = "Volksschule"', max_records=20)
"Show digitised historical works from ETH Library"
→ erara_list_records(set_spec="zut")
"Which Swiss periodicals were digitised in 2023?"
→ eperiodica_list_records(from_date="2023-01-01", until_date="2023-12-31")
"What manuscript collections does e-manuscripta hold?"
→ emanuscripta_list_collections()
→ [More use cases by audience](EXAMPLES.md) →
💡 "No API key — just install and query."
Full text: Volksschule Zürich
Title: title = "education reform"
Author: creator = "Pestalozzi"
Subject: subject = "pedagogy"
ISBN: isbn = "978-3-05-006234-0"
Combined: title = "school" AND creator = "Pestalozzi"
Pagination: start_record = 11
No API keys or environment variables required.
| Parameter | Default | Description |
|---|---|---|
--http |
off | Enable Streamable HTTP transport |
--port |
8000 | Port for HTTP transport |
swiss-academic-libraries-mcp/
├── src/
│ └── swiss_academic_libraries_mcp/
│ ├── __init__.py # Package init
│ ├── server.py # FastMCP server, 11 tools, 2 prompts, 1 resource
│ └── api_client.py # HTTP client, MARC21 + OAI-PMH/DC parsers
├── tests/
│ └── test_server.py # 34 unit tests + 6 live smoke tests
├── pyproject.toml
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md # This file (English)
└── README.de.md # German version
# Unit tests (no network required)
PYTHONPATH=src pytest tests/ -m "not live"
# Live smoke tests (internet required)
PYTHONPATH=src pytest tests/ -m "live"
from_date / until_date and keep max_records reasonable. The server enforces a 30s timeout per request.Contributions are welcome! Please read CONTRIBUTING.md for guidelines on:
This project follows the conventions of the Swiss Public Data MCP Portfolio.
See CHANGELOG.md
If you self-host this server for a Swiss school authority, archive, or municipal use case:
MaxRetentionSec).MIT License — see LICENSE
Hayal Oezkan · github.com/malkreide
| Server | Description |
|---|---|
| zurich-opendata-mcp | City of Zurich Open Data |
| eth-library-mcp | ETH Library Discovery & Persons API |
| swiss-statistics-mcp | Swiss Federal Statistics (BFS) |
| fedlex-mcp | Swiss Federal Law via Fedlex SPARQL |
| swiss-transport-mcp | OJP journey planning, SIRI-SX disruptions |
Выполни в терминале:
claude mcp add swiss-academic-libraries-mcp -- npx Web content fetching and conversion for efficient LLM usage.
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
автор: modelcontextprotocolProvides auto-configuration for setting up an MCP server in Spring Boot applications.
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
автор: xuzexin-hzНе уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории ai