ddb-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DDB_API_KEY | No | Your DDB API key (optional, but recommended to avoid potential future enforcement). Obtain from https://www.deutsche-digitale-bibliothek.de/user/apikey after registering for a free account. | |
| DDB_CACHE_DIR | No | Override the cache directory. Defaults to $XDG_CACHE_HOME/ddb-mcp. | |
| DDB_MIN_REQUEST_INTERVAL | No | Minimum interval between requests in seconds (default: 1). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_ddbA | Search German newspaper pages in the Deutsches Zeitungsportal. Covers ~33.8M digitised pages, densest between 1850 and 1949. Results are individual newspaper pages, and each carries highlighted snippets showing where the query matched, with matched terms in {braces} - so a single search is usually enough to judge a hit without downloading anything. Args: query: Solr query over page OCR text. Supports: - Exact phrases: '"Bert Reese"' - Boolean operators: 'Hellseher AND Telepathie', 'A OR B', 'A NOT B' - Wildcards: 'Hellseh*' - Fuzziness for OCR damage: 'Hanussen~1' - Proximity: '"Hellseher Hanussen"~10' page: Result page number, 1-indexed rows: Results per page (max 100) from_year: Earliest publication year, inclusive to_year: Latest publication year, inclusive paper_title: Restrict to one newspaper title place: Restrict to a place of distribution language: Language code, ISO 639-2 (e.g. 'ger') Returns: total_results (a true count, not a ranking depth), total_pages, and the matching pages with their metadata, viewer URL and snippets. Results are ordered by relevance; DDB cannot order by date, so chronological work means bounding the query with from_year/to_year and sweeping it whole. |
| get_ddb_snippetsA | Find where a query appears inside one page or one whole issue. Args: identifier: A page id ('ITEMID-pagename') or an issue item id ('ITEMID') query: Solr query over page OCR text Returns: The matching pages, with snippets showing the terms in {braces}. |
| download_ddb_textA | Download the OCR text of a page, or of every page of an issue. Args: identifier: A page id ('ITEMID-pagename') or an issue item id ('ITEMID') refresh: Ignore any cached copy and fetch again Returns: Path to the cached text file. Files run to tens of kilobytes per page, so read slices of them rather than the whole thing. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 3 tools
Each tool has a distinct purpose: search_ddb for searching across the database, get_ddb_snippets for finding query matches within a specific page or issue, and download_ddb_text for downloading OCR text. No overlap in functionality.
All tool names follow a consistent verb_noun pattern in snake_case. However, 'get' and 'download' are slightly different verbs for similar retrieval actions, causing minor inconsistency.
With 3 tools covering search, snippet retrieval, and text download, the count is well-scoped for the domain of accessing digitized newspaper pages. No excess or shortage.
The tool set supports a complete workflow: search across pages, examine snippets in context, and download full text. Minor gap: no dedicated metadata retrieval tool, but metadata is included in search results.