Skip to content

telota/bbaw-dse-mcp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bbaw-dse-mcp

An MCP server for dialogical, exploratory access to digital scholarly editions.

DHd2026 Poster: Agenten im Dienst der Edition

Overview

Instead of complex search forms and navigation structures, this MCP server enables natural-language conversation with digital scholarly editions. An AI agent translates questions like "Who was important for Schleiermacher in 1810?" into structured database queries — and maintains conversational context across follow-up questions.

The server aggregates three editions from BBAW/TELOTA into a single MCP endpoint using FastMCP composition:

Edition Prefix Backend Content
schleiermacher digital sd_ eXist-db Letters, diaries, lectures, chronology
Praktiken der Monarchie mop_ eXist-db Documents on Prussian monarchy and governance
correspSearch cs_ REST API Cross-edition correspondence network search

Available Tools

Schleiermacher Digital (sd_*) — 19 tools

Tool Description
sd_search_documents Fulltext search with facets (document type, year, date range)
sd_filter_letters Filter letters by sender, receiver, place, period
sd_get_correspondent_stats Correspondent statistics for network analysis
sd_get_document_by_id Retrieve a complete document as Markdown
sd_get_document_passages Retrieve text passages from a document
sd_search_register Lucene fulltext search in person/place/work registers
sd_get_register_entry Detailed register entry with optional mention summary
sd_get_diary_entry / sd_get_diary_entries Diary entries by date or date range
sd_get_chronology_entry / sd_get_chronology_entries / sd_get_chronology_year Chronology lookup
sd_list_collections / sd_list_collection_contents Browse collection structure
sd_get_collection_stats / sd_get_file_info Collection and file metadata
sd_execute_xquery Execute raw XQuery
sd_check_database_connection Health check
sd_get_raw_document_by_id / sd_get_raw_document_by_path Raw XML retrieval

Praktiken der Monarchie (mop_*) — 17 tools

Tool Description
mop_browse_documents Browse files and subcollections
mop_search_documents Fulltext search in MoP documents
mop_get_document Retrieve a complete document
mop_search_register / mop_get_register_entry Search registers (persons, places, institutions, courts, works, offices)
mop_search_biogramme / mop_get_biogramm_by_id Search and retrieve detailed biographies
mop_extract_family_network Extract family network from a biography
mop_get_residential_topography / mop_search_residential_topography / mop_list_available_wohntopo_years Residential topography data
mop_search_adjutanten_journals / mop_get_adjutanten_journal_entry / mop_list_adjutanten_by_monarch Court adjutant journals
mop_execute_xquery Execute raw XQuery
mop_check_database_connection Health check

correspSearch (cs_*) — 8 tools

Tool Description
cs_search_correspondences Cross-edition correspondence search
cs_get_edition_info Information about a correspSearch edition
cs_search_correspondent_network Analyze correspondence network of a person
cs_search_for_gnd_id Look up GND authority IDs by name
cs_search_for_geonames_id / cs_get_place_geonames_id Look up GeoNames IDs
cs_search_wikidata_entity / cs_search_for_wikidata_occupation Wikidata lookups

Installation

# Clone the repository
git clone https://github.com/telota/bbaw-dse-mcp.git
cd bbaw-dse-mcp

# Install with uv (recommended)
uv sync

Requires Python 3.11+.

Configuration

Configuration uses environment variables (prefix EDITIONS_). Create a .env file:

# Schleiermacher Digital eXist-db
EDITIONS_SD_URL=http://localhost:8080
EDITIONS_SD_USERNAME=admin
EDITIONS_SD_PASSWORD=

# Praktiken der Monarchie eXist-db
EDITIONS_AB_URL=https://actaborussica.bbaw.de
EDITIONS_AB_USERNAME=
EDITIONS_AB_PASSWORD=

# correspSearch API (no auth required)
EDITIONS_CS_API_URL=https://correspsearch.net/api/v2.0

# Optional: GeoNames API
EDITIONS_GEONAMES_USERNAME=

# Optional: Anthropic API (for research agent)
EDITIONS_ANTHROPIC_API_KEY=

Usage

Running the server

uv run bbaw-dse-mcp

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "editions": {
      "command": "uv",
      "args": ["run", "bbaw-dse-mcp"],
      "cwd": "/path/to/bbaw-dse-mcp"
    }
  }
}

Example Conversation

User: Search for letters mentioning Humboldt.

Agent: → sd_search_documents(query="Humboldt", doc_type="letters")
       Found 23 letters mentioning Humboldt, mostly from 1810 —
       the year of the Berlin university founding...

User: Who was important for Schleiermacher in 1810?

Agent: → sd_get_correspondent_stats(year=1810)
       Based on letter frequency, the most important correspondents in 1810:
       1. Charlotte Schleiermacher (15 letters) — his sister
       2. Wilhelm von Humboldt (8 letters) — central figure in university reform
       ...

User: Can we trace Humboldt's correspondence network beyond this edition?

Agent: → cs_search_correspondent_network(name="Humboldt, Wilhelm von")
       Cross-edition network across 12 editions: ...

Tech Stack

  • FastMCP 2.x — Python MCP server framework
  • httpx — Async HTTP client for eXist-db REST API
  • lxml — TEI-XML parsing
  • Pydantic v2 — Data models and settings

Documentation

License

MIT

Author

Tim Westphal, BBAW TELOTA

About

BBAW-DSE-MCP Server

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages