MCP Hub
Back to servers

tei-mcp

Helps AI agents read and write valid TEI XML. Element lookup, attribute resolution, content model expansion, nesting validation, document validation, and ODD customisation.

glama
Stars
1
Forks
1
Updated
Mar 16, 2026
Validated
Apr 25, 2026

tei-mcp

tei-mcp — TEI P5 for AI agents

DOI PyPI version License MCP compatible TEI P5

An MCP server that helps AI agents read and write valid TEI XML. It parses the TEI P5 specification and exposes 16 tools for element lookup, attribute resolution, content model expansion, nesting validation, document validation, and ODD customisation.

Features

  • Element, class, macro, and module lookup with case-insensitive matching and typo suggestions
  • Attribute resolution across the full TEI class hierarchy (local + inherited)
  • Content model expansion into structured trees with class and macro resolution
  • Nesting validation (direct parent-child and recursive reachability with path tracking)
  • Document validation against TEI P5: content models, attributes, closed value lists, reference integrity, deprecation warnings
  • Single-element validation for incremental editing workflows
  • ODD customisation support: load a project ODD to constrain the schema (moduleRef filtering, elementSpec delete/change, attDef modifications)
  • Regex search across all entity types (elements, classes, macros, modules)
  • Deprecation awareness with validUntil dates and replacement suggestions
  • Attribute suggestion by intent description (keyword matching against attribute descriptions)

Requirements

  • Python 3.10+
  • uv (recommended) or pip

Installation

The quickest way is via uvx, which fetches and runs the server automatically:

uvx tei-mcp

Or install from PyPI:

pip install tei-mcp

Or clone and install from source:

git clone https://github.com/Pantagrueliste/tei-mcp.git
cd tei-mcp
uv sync

On first run, the server downloads p5subset.xml from the TEI website (~5 MB) and caches it locally.

Usage

tei-mcp works with any MCP-compatible client. Add the following to your client's MCP server configuration:

{
  "mcpServers": {
    "tei": {
      "command": "uvx",
      "args": ["tei-mcp"]
    }
  }
}

Where this file lives depends on your client:

ClientConfiguration file
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
Claude Code.mcp.json in your project directory
Cursor.cursor/mcp.json in your project directory
Windsurf~/.codeium/windsurf/mcp_config.json
Other clientsConsult your client's MCP documentation

Standalone

uvx tei-mcp

The server communicates over stdio using the MCP protocol.

Tools

ToolDescription
lookup_elementLook up an element by name (e.g., persName)
lookup_classLook up a class by name (e.g., att.global)
lookup_macroLook up a macro by name (e.g., macro.paraContent)
list_module_elementsList all elements in a module (e.g., namesdates)
searchRegex search across all TEI entities
list_attributesResolve all attributes for an element (local + inherited)
class_membership_chainShow the full class hierarchy chain
expand_content_modelExpand content model into a structured tree
valid_childrenList all valid direct children of an element
check_nestingCheck if an element can appear inside another
check_nesting_batchCheck multiple nesting pairs in one call
suggest_attributeFind relevant attributes by intent description
validate_documentValidate a TEI XML file against the spec
validate_elementValidate a single element in context
load_customisationLoad an ODD customisation file
unload_customisationClear the loaded customisation

Most tools accept use_odd=True to query the customised schema instead of the full TEI P5.

ODD Customisation

Load a project-specific ODD file to constrain the schema:

1. Call load_customisation("/path/to/my-project.odd")
2. Use use_odd=True on subsequent tool calls
3. Call unload_customisation() to revert to the full spec

Supported ODD features:

  • moduleRef with include / except filtering
  • elementSpec mode="delete" to remove elements
  • elementSpec mode="change" with attDef modifications (delete, change, add)
  • Closed/semi value list restrictions

Environment Variables

VariableDefaultDescription
TEI_ODD_PATHPath to a local p5subset.xml (skips download)
TEI_ODD_URLTEI-C GitHub URLCustom URL for the ODD file

Development

# Install dev dependencies
uv sync

# Run tests
uv run pytest

# Run tests with coverage info
uv run pytest -v

License

MIT

Reviews

No reviews yet

Sign in to write a review