Cldf Mcp

io.github.hsoufPublished by GitHub account hsoufv0.1.0Updated Nov 2, 2026

WALS typology joined with Glottolog classification, with provenance and family-aware counts.

Overview

AI-generated overview

Read-only MCP server giving assistants grounded WALS typological data joined with Glottolog classification, with sources and family-aware counts.

What you can do
  • List loaded datasets with releases, coverage, licenses and citations
  • Resolve languages by name, ISO code or Glottocode, and search typological features by keyword
  • Look up feature values per language, full language profiles, and single-feature distributions
  • Filter languages by up to eight feature conditions and cross-tabulate two features
  • Explore Glottolog lineage, children and sisters, and fetch bibliographic references for cited sources
When to use it
Useful when answering questions about cross-linguistic typology, word order, phonology or feature co-occurrence, or when checking whether a claimed universal holds across families rather than one lineage. Also handy for language classification and endangerment details from Glottolog.
Requirements
Local process run with uvx (Python 3.11+ and uv or pip). On first use it downloads pinned WALS and Glottolog releases (about 40 MB) and builds a local SQLite database; a setup command can do this ahead of time. No accounts, API keys or network access are needed after that. Optional settings: CLDF_MCP_DATA_DIR, CLDF_MCP_CONFIG, and a streamable-http transport option.
Before you install
All tools are read-only and work offline once data is prepared. The first run downloads data from third-party releases and verifies checksums. The optional config setting can load additional CLDF datasets from remote URLs or local paths. Data is CC-BY-4.0 and must be cited; WALS reflects literature up to about 2013 and covers only a few hundred languages per feature, so counts are of coded languages, not of all languages.

Installation

In SourceWeft

  1. Open Cldf Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

cldf-mcp

An MCP server that gives AI assistants grounded access to cross-linguistic data published in the CLDF format. Version 0.1 ships with:

  • WALS, the World Atlas of Language Structures: 192 typological features (word order, phonology, morphology…) for 2,660 languages, with sources for every datapoint;
  • Glottolog: the catalog of the world's ~27,000 languoids, their classification, alternate names, endangerment and description status.

Language models know WALS exists but are unreliable on specifics: which value a language has for feature 85A, or how many languages combine SOV order with prepositions. This server returns the actual data, with the release it came from and the reference behind it.

What makes it different from a lookup table

  • Family-aware counts. Related languages inherit features, so "400 languages do X" can mean "three big families do X". Every count comes with the number of distinct families (from Glottolog) and WALS genera, plus the share of the largest family, so the model can tell a cross-linguistic tendency from the signature of one lineage. WALS's balanced 100- and 200-language samples are available as filters.
  • Provenance everywhere. Each answer names the dataset, release and citation; datapoints carry their bibliographic sources and page numbers.
  • No silent guessing. bsq is WALS's code for Basque and the ISO code for Bassa, so the server asks instead of picking one. "No data" is never reported as "absent".
  • Pinned, verified data. Datasets are fetched from tagged releases and checked against SHA-256 checksums before loading.

Quick start

Requires Python 3.11+ and uv (or pip).

Claude Code

bash
claude mcp add cldf -- uvx cldf-mcp

Claude Desktop and other clients that use an mcpServers config:

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

On first use the server downloads the pinned releases (about 40 MB) and builds a local SQLite database (about 35 MB) in a few seconds. To do this ahead of time:

bash
uvx cldf-mcp setup

Then ask things like:

  • Which languages in WALS are SOV but use prepositions? Are they spread across families?
  • Is "VSO implies prepositions" a real tendency? Check it within the WALS 200-language sample.
  • Give me Basque's word-order features, with sources.
  • How does WALS cover the Austronesian family? Which branches have the most data?

Tools

ToolWhat it does
list_datasetsLoaded datasets, release versions, coverage, licenses and citations
find_languageNames (including alternate names and misspellings), ISO 639-3 codes, Glottocodes or dataset codes → ranked candidates with family, macroarea and which entries have data
search_featuresKeyword search over feature names, chapters and value labels → feature IDs and possible values
get_featureDefinition, chapter, authors and value distribution, counted by languages, families and genera; optional filters by macroarea, family/subgroup or WALS sample
get_valuesLanguage × feature grid with values, comments, sources and full citations; unresolvable names are reported with candidates instead of failing the call
language_profileEverything about one language: Glottolog identity, lineage, endangerment, description status and all feature values
filter_languagesLanguages matching up to 8 conditions (AND, with exclude), across datasets, with the denominator (languages coded for all conditions) and family counts
crosstabTwo features cross-tabulated: languages, families, genera and largest-family share per cell, zero cells kept, optional macroarea breakdown
classificationGlottolog lineage, children (with how many dataset entries fall under each), sisters
get_sourceFull bibliographic references for the source IDs cited in datapoints

Resources:

  • cldf://guide/typology-caveats: how to use counts responsibly (sampling bias, areal effects, coverage, citation). The server's instructions point the model to it.
  • cldf://datasets: versions, licenses and citations of the loaded data.

All tools are read-only and work offline once the data is prepared.

Configuration

SettingDefault
--data-dir / CLDF_MCP_DATA_DIR~/.cache/cldf-mcp (Linux), ~/Library/Caches/cldf-mcp (macOS), %LOCALAPPDATA%\cldf-mcp (Windows)
--config / CLDF_MCP_CONFIGnone: extra TOML to add or override datasets (experimental, see below)
--transportstdio; streamable-http with --host / --port for remote use

Other commands: cldf-mcp info (where data lives, whether it is current) and cldf-mcp setup --force (rebuild).

Adding a dataset (experimental)

Any CLDF StructureDataset whose languages carry Glottocodes can be loaded alongside WALS. Feature tools, family counting and cross-dataset filters work on it automatically:

toml
# my-datasets.toml[datasets.mydata]title = "My typological survey"role = "features"version = "v1.0"base_url = "https://raw.githubusercontent.com/me/mydata/v1.0/cldf/"   # or: local_path = "/path/to/cldf"metadata = "StructureDataset-metadata.json"license = "CC-BY-4.0"citation = "Me. 2026. My typological survey."
[datasets.mydata.files]   # every file the loader needs, with optional sha256 checksums"StructureDataset-metadata.json" = """languages.csv" = """parameters.csv" = """codes.csv" = """values.csv" = ""
bash
cldf-mcp setup --config my-datasets.toml

Data, licenses and citation

The server code is MIT-licensed. The data is not part of this package: it is downloaded from the original releases, which are licensed under CC-BY-4.0. If you publish results obtained with this server, cite the datasets (see DATA_LICENSES.md):

Dryer, Matthew S. & Haspelmath, Martin (eds.) 2013. The World Atlas of Language Structures Online. Leipzig: Max Planck Institute for Evolutionary Anthropology. https://wals.info (CLDF release v2020.6)

Hammarström, Harald & Forkel, Robert & Haspelmath, Martin & Bank, Sebastian. 2026. Glottolog 5.3. Leipzig: Max Planck Institute for Evolutionary Anthropology. https://glottolog.org

This is an independent project and is not affiliated with the WALS, Glottolog or CLDF teams.

Limitations

  • WALS reflects the literature up to about 2013, and most features are coded for a few hundred languages. Percentages are of coded languages, not of the world's languages.
  • Family counts follow Glottolog, which does not recognise proposed macro-families (e.g. Altaic). Of the 17 WALS languages without a Glottocode, 10 are matched to a Glottolog family through WALS's family or genus name; the other 7 keep WALS's own label (e.g. "Niger-Congo").
  • Glottolog's full bibliography is not bundled; its references are returned as links.

Roadmap

  • 0.2: Grambank, the first dataset that overlaps with WALS, with side-by-side comparison of related features.
  • 0.3: PHOIBLE sound inventories and Lexibank wordlists (get_inventory, get_forms).

Development

bash
git clone https://github.com/hsouf/cldf-mcp && cd cldf-mcppython -m venv .venv && . .venv/bin/activatepip install -e ".[dev]"pytest                # offline tests on small fixtures (tests/fixtures)pytest -m network     # downloads the real pinned releases and checks known WALS countsruff check src tests && ruff format --check src tests

See RELEASING.md for publishing to PyPI and the MCP Registry.

Source: README.md at commit cf08703

Tools

10

list_datasets

List the loaded datasets with their release versions, coverage, licenses and how to cite them.

Takes no parameters.

find_language

Find languages by name or code. Returns Glottocodes, family, macroarea and which dataset entries have data. Use this before other tools when a name might be ambiguous (e.g. 'Arabic' is a family; WALS has Arabic varieties). Candidates are ranked: exact codes, exact names, alternate names, then partial matches.

Parameterslimitqueryrequired

search_features

Search typological features by keyword. Returns feature IDs, names, possible values and how many languages are coded for each.

Parameterslimitqueryrequireddataset

get_feature

Describe one feature: definition, chapter and authors, and how its values are distributed, counted by languages, families and genera.

Parametersfamilysamplefeaturerequiredmacroareaby_macroarea

get_values

Look up specific datapoints: the value of each feature for each language, with sources, comments and full citations. Unresolvable names are reported in 'errors' with candidates instead of failing the call. When several dataset entries share a Glottocode (e.g. Basque and Basque dialects), the main entry is used and the others are listed; pass a dataset ref like 'wals:bso' to pick a specific one.

Parametersfeaturesrequiredlanguagesrequired

language_profile

Everything known about one language: Glottolog identity, classification, endangerment and description status, plus all its feature values per dataset.

Parameterslimitdatasetlanguagerequired

filter_languages

Find languages matching feature conditions, e.g. SOV order AND postpositions. Returns match counts against the number of languages coded for all conditions (the denominator), with family and genus counts and the families contributing most matches, plus the matching languages.

Parameterslimitfamilysamplemacroareaconditionsrequired

crosstab

Cross-tabulate two features over the languages coded for both. Each cell gives languages, families and genera attesting the combination and the share of its largest family, so you can tell a cross-linguistic tendency from the signature of one big family. Use this to check implicational universals.

Parametersfamilysamplefeature_arequiredfeature_brequiredmacroareaby_macroarea

classification

Glottolog classification of a language or group: lineage, children (with how many dataset entries fall under each), sisters, and the number of languages below.

Parameterslanguagerequiredmax_children

get_source

Full bibliographic references for source IDs cited in datapoints.

Parametersdatasetsource_idsrequired

Version history

1
  1. v0.1.0LatestOct 26, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts