MCP Server for ETH Library Zurich – Access 30M+ resources (books, maps, images, archives) via Discovery & Persons API
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · streamable-http · http
verified
reported
listed in the official MCP registry counts 6 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
eth_get_resource
-
eth_library_info
-
eth_search_archive
-
eth_search_by_type
-
eth_search_education
-
eth_search_resources
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 8eb179d · analyzer v33 · 1w ago
skills & prompt files 1
- agent-rules malkreide-eth-library-mcp-8eb179d/CLAUDE.md
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 13
filesystem 5
- fs (weak) malkreide-eth-library-mcp-8eb179d/scripts/check_ruff_pin.py :35
import shutil - fs (weak) malkreide-eth-library-mcp-8eb179d/scripts/check_version_sync.py :35
from pathlib import Path - fs (weak) malkreide-eth-library-mcp-8eb179d/scripts/record_fixtures.py :55
from pathlib import Path - fs (weak) malkreide-eth-library-mcp-8eb179d/tests/fixture_data.py :22
from pathlib import Path - fs (weak) malkreide-eth-library-mcp-8eb179d/tests/test_werkzeug_versionen.py :18
import pathlib
shell / exec 1
- shell (weak) malkreide-eth-library-mcp-8eb179d/scripts/check_ruff_pin.py :36
import subprocess
network 5
- net (weak) malkreide-eth-library-mcp-8eb179d/scripts/record_fixtures.py :57
import httpx - net malkreide-eth-library-mcp-8eb179d/src/eth_library_mcp/client.py :15
from urllib.parse import urlparse - net malkreide-eth-library-mcp-8eb179d/src/eth_library_mcp/formatting.py :13
import httpx - net (weak) malkreide-eth-library-mcp-8eb179d/tests/test_server.py :97
import httpx - net (weak) malkreide-eth-library-mcp-8eb179d/tests/test_tools.py :14
import httpx
secrets 3
- secrets (weak) malkreide-eth-library-mcp-8eb179d/scripts/record_fixtures.py :171
if not os.environ.get("ETH_LIBRARY_API_KEY"): - secrets malkreide-eth-library-mcp-8eb179d/src/eth_library_mcp/client.py :45
return os.environ.get("ETH_LIBRARY_API_KEY") - secrets malkreide-eth-library-mcp-8eb179d/src/eth_library_mcp/server.py :644
api_key = os.environ.get("ETH_LIBRARY_API_KEY")
tool registrations 6
- eth_search_resources malkreide-eth-library-mcp-8eb179d/src/eth_library_mcp/server.py :189
- eth_get_resource malkreide-eth-library-mcp-8eb179d/src/eth_library_mcp/server.py :301
- eth_search_archive malkreide-eth-library-mcp-8eb179d/src/eth_library_mcp/server.py :365
- eth_search_by_type malkreide-eth-library-mcp-8eb179d/src/eth_library_mcp/server.py :456
- eth_search_education malkreide-eth-library-mcp-8eb179d/src/eth_library_mcp/server.py :555
- eth_library_info malkreide-eth-library-mcp-8eb179d/src/eth_library_mcp/server.py :632
declared dependencies 9
- mcp@>=2.0.0,<3
- httpx@>=0.27.0,<1.0.0
- pydantic@>=2.0.0,<3.0.0
- structlog@>=24.0.0,<26.0.0
- pytest@>=8.0.0,<9.0.0
- pytest-asyncio@>=0.23.0,<2.0.0
- pytest-cov@>=5.0.0,<7.0.0
- respx@>=0.21.0,<1.0.0
- ruff@==0.16.1