Skip to main content
Glama
nestordemeure

ANNO MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_annoA

Search ANNO, the Austrian National Library's historical newspaper archive.

Covers roughly 28 million pages from over 1,600 Austrian newspaper and magazine titles, 1735 to the present, overwhelmingly German-language. Over 91% of holdings are full-text searchable.

Results resolve to an ISSUE, not a page. Use get_snippets with a returned identifier to find which page a term appears on.

Args: query: Text to search in OCR content. - Bare words are ANDed: "Hanussen Hellseher" needs both - Exact phrases: '"Erik Jan Hanussen"' - AND / OR / NOT, which MUST BE UPPERCASE - Trailing wildcard: "Hanuss*" page: Page number for pagination, 1-indexed (default: 1). ANNO fixes the page size at 10 results and offers no way to raise it. sort: Result ordering — "relevance" (default), "date_asc" or "date_desc". ANNO's totals are true match counts rather than a relevance tail, so date ordering is safe on any query you mean to sweep.

Returns: Dictionary containing: - page: Current page number - total_results: True count of matching issues - total_pages: Total number of pages available - documents: List of issues with: - identifier: Document id, e.g. ANNO_dmo19330626 - title: Issue title with its date - date: ISO date for newspapers, None for periodicals - year: Year of publication - type: Zeitung (newspaper) or Zeitschrift (periodical) - is_periodical: True when OCR download is unavailable - places, languages: Publication place and language - page_count: Pages in the issue - hits_in_document: Occurrences of the query in the issue - url: Stable citation URL

Examples: search_anno(query="Hanussen") search_anno(query='"Erik Jan Hanussen"') search_anno(query="Hellseher OR Gedankenleser") search_anno(query="Hanuss*")

get_snippetsA

Find which pages of one ANNO issue a query appears on, with context.

This is the cheap triage step and the reason ANNO is worth using: a hit resolves to a page with the matched terms in context, so a false positive can be rejected without downloading anything. It also works for periodicals, whose OCR text cannot be downloaded at all.

Args: identifier: Document id from a search result, e.g. "ANNO_dmo19330626" query: Terms to locate within the issue

Returns: Dictionary containing: - identifier: The document id - query: The query used - snippets: List of occurrences with: - page: Page number the occurrence sits on - page_label: Page label as printed - text: Snippet with matched terms in {braces} - url: Stable citation URL for that exact page - image_url: IIIF crop of the matched region

Note: ANNO returns at most 10 snippets per issue however many hits it reports, so a heavily-covered issue shows a sample rather than every occurrence.

Examples: get_snippets("ANNO_dmo19330626", "Hanussen") get_snippets("ANNO_wsb18840309", "Cumberland")

download_textA

Download OCR plain text for an ANNO newspaper issue and cache it locally.

Args: identifier: Document id, e.g. "ANNO_dmo19330626" page: Single page to fetch. Omit for the whole issue.

Returns: Path to the cached text file (as string)

IMPORTANT: ANNO serves text one page at a time, so a whole issue costs one request per page — a 104-page issue is 104 paced requests. Pass page whenever get_snippets has already told you which page you want.

Periodicals (identifiers starting ANNOP_) have no text endpoint at all
and will raise. Use get_snippets for those.

Example: path = download_text("ANNO_dmo19330626", page=7)

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
server_infoProvide information about the ANNO MCP server.

Latest Blog Posts

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/nestordemeure/anno-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server