Cldf Mcp

io.github.hsouf由 GitHub 帳號 hsouf 發布v0.1.0更新於 Nov 2, 2026

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

概覽

AI 產生的概覽

唯讀 MCP 伺服器,讓助理取得有出處的 WALS 類型學資料並結合 Glottolog 分類,附來源與按語系統計的計數。

可以做什麼
  • 列出已載入資料集及其版本、涵蓋範圍、授權與引用方式
  • 依名稱、ISO 代碼或 Glottocode 查找語言,並以關鍵字檢索類型學特徵
  • 查詢各語言的特徵取值、單一語言的完整檔案,以及單一特徵的取值分布
  • 依最多八個特徵條件篩選語言,並對兩個特徵做交叉統計
  • 檢視 Glottolog 譜系、子群與姊妹語言,並取得資料點所引來源的完整文獻資訊
適用情境
適合回答跨語言類型學、語序、音韻或特徵共現的問題,也適合檢驗某個所謂普遍規律是否跨語系成立,而非只反映單一譜系。查詢語言分類與瀕危狀況時同樣好用。
執行需求
以 uvx 在本機執行(需 Python 3.11+ 及 uv 或 pip)。首次使用會下載固定版本的 WALS 與 Glottolog 資料(約 40 MB)並建立本機 SQLite 資料庫,也可事先執行 setup 指令完成。之後不需帳號、API 金鑰或網路。選用設定:CLDF_MCP_DATA_DIR、CLDF_MCP_CONFIG,以及 streamable-http 傳輸方式。
安裝前請注意
所有工具皆為唯讀,資料備妥後可離線使用。首次執行會從第三方發布來源下載資料並驗證校驗碼。選用設定可載入來自遠端網址或本機路徑的額外 CLDF 資料集。資料採 CC-BY-4.0 授權,須標明引用;WALS 反映約 2013 年以前的文獻,每個特徵僅涵蓋數百種語言,百分比以已編碼語言為分母,而非世界所有語言。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Cldf Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

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.

來源:README.md,提交 cf08703

工具

10

list_datasets

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

無需輸入參數。

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.

輸入參數limitquery必填

search_features

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

輸入參數limitquery必填dataset

get_feature

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

輸入參數familysamplefeature必填macroareaby_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.

輸入參數features必填languages必填

language_profile

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

輸入參數limitdatasetlanguage必填

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.

輸入參數limitfamilysamplemacroareaconditions必填

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.

輸入參數familysamplefeature_a必填feature_b必填macroareaby_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.

輸入參數language必填max_children

get_source

Full bibliographic references for source IDs cited in datapoints.

輸入參數datasetsource_ids必填

版本歷史

1
  1. v0.1.0最新Oct 26, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分