bbaw-dse-mcp
Enables natural-language querying of multiple digital scholarly editions, aggregating Schleiermacher digital, Praktiken der Monarchie, and correspSearch into a single MCP endpoint.
README
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
- AGENT.md — Project overview and design decisions
- docs/TOOLS.md — Detailed tool specifications
- docs/ARCHITECTURE.md — Technical architecture
License
MIT
Author
Tim Westphal, BBAW TELOTA
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.