ANNO MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| 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_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 Example: path = download_text("ANNO_dmo19330626", page=7) |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| server_info | Provide information about the ANNO MCP server. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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