MCPサーバー

scythian

com.valksor/scythian
教育 検索・リサーチ 公開・接続可能 MCP 2025-11-25

このMCPでできること

Looks up Proto-Scythian lemmas, etymologies, glosses, and descendant language reflexes.

scythian_get_descendants
Get a Proto-Scythian entry's descendants
Fetch the full descendants payload — etymology, glosses and the reflex tree (Sarmatian→Alanic→Ossetian, Saka→Khotanese) — for a lemma identified by a search result's descendant handle (entry_id + word_class). Use this only when a search ran without inline payloads or left a match un-expanded — a default search already returns each match's payload inline. Returns Markdown plus the payload as structuredContent with the shape {"result": <payload>} per the declared outputSchema — switch on result.category ('descendants' | 'not_found') before reading the body. Content from en.wiktionary.org (CC BY-SA 4.0).
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', 'title': 'scythian_get_descendantsArguments', 'required': ['entry_id', 'word_class'], 'properties': {'entry_id': {'type': 'string', 'title': 'Entry Id', 'maxLength': 80, 'minLength': 1, 'description': "The bare lemma (no asterisk) from a search result's descendant handle, e.g. 'tiÉ£ri', 'baga' â\x80\x94 a typed leading asterisk is tolerated."}, 'word_class': {'type': 'string', 'title': 'Word Class', 'pattern': '^[a-z ]+$', 'maxLength': 24, 'minLength': 1, 'description': "The part-of-speech section from a search result's descendant handle, e.g. 'noun', 'adjective', 'proper noun'."}}}
出力スキーマ
{'type': 'object', '$defs': {'DescendantNode': {'type': 'object', 'title': 'DescendantNode', 'required': ['language'], 'properties': {'form': {'type': 'string', 'title': 'Form', 'default': '', 'description': 'The reflex as printed (asterisk kept on reconstructions); may be empty for a branch header or a transliteration-only term.'}, 'children': {'type': 'array', 'items': {'$ref': '#/$defs/DescendantNode'}, 'title': 'Children'}, 'language': {'type': 'string', 'title': 'Language', 'description': "Language name as printed, e.g. 'Alanic'."}, 'qualifier': {'type': 'string', 'title': 'Qualifier', 'default': '', 'description': "How the word travelled or which variety carries it, e.g. 'borrowed', 'Digor'; empty for plain inheritance."}, 'transliteration': {'type': 'string', 'title': 'Transliteration', 'default': '', 'description': "Romanization as printed beside the form, e.g. 'cirǧ'."}}, 'description': 'One node of a descendants tree: a reflex of the Proto-Scythian lemma in a\ndescendant (or borrowing) language, with its own descendants nested below.\n``form`` keeps the asterisk on reconstructed reflexes (``*Ä\x87irÉ£``) and may be\nempty for a branch header (``Ossetian`` above its dialect lines) or a term\nWiktionary records only in transliteration ("script needed").'}, 'DescendantsNotFound': {'type': 'object', 'title': 'DescendantsNotFound', 'required': ['entry_id', 'word_class'], 'properties': {'found': {'type': 'boolean', 'const': False, 'title': 'Found', 'default': False}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Proto-Scythian reconstruction entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'not_found', 'title': 'Category', 'default': 'not_found'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': 'No Proto-Scythian entry for this page/POS (no such page, no Proto-Scythian\nsection, or nothing parseable in it). ``found`` is False and there is no body.'}, 'ScythianDescendants': {'type': 'object', 'title': 'ScythianDescendants', 'required': ['entry_id', 'word_class'], 'properties': {'tree': {'type': 'array', 'items': {'$ref': '#/$defs/DescendantNode'}, 'title': 'Tree', 'description': 'The descendants tree in page order; empty when the entry records no reflexes.'}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Proto-Scythian reconstruction entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'glosses': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Glosses', 'description': "The entry's English glosses â\x80\x94 also what an eng search matches."}, 'category': {'type': 'string', 'const': 'descendants', 'title': 'Category', 'default': 'descendants'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'The bare lemma (page-title tail, no asterisk).'}, 'headword': {'type': 'string', 'title': 'Headword', 'default': '', 'description': "The headword as printed, asterisk included: '*tiÉ£ri'."}, 'etymology': {'type': 'string', 'title': 'Etymology', 'default': '', 'description': "The entry's etymology line, plain text; may be empty."}, 'word_class': {'type': 'string', 'title': 'Word Class', 'description': "The part-of-speech section, e.g. 'noun'."}}, 'description': "One entry's descendants payload: the headword, its English glosses and the\nreflex tree. ``tree`` MAY be empty â\x80\x94 the entry exists but Wiktionary records no\nreflexes â\x80\x94 while ``glosses`` still feed the English-query reverse index.\n``category`` discriminates this from the not-found shape â\x80\x94 switch on it before\nreading the body."}}, 'title': 'scythian_get_descendantsOutput', 'required': ['result'], 'properties': {'result': {'oneOf': [{'$ref': '#/$defs/ScythianDescendants'}, {'$ref': '#/$defs/DescendantsNotFound'}], 'title': 'Result', 'discriminator': {'mapping': {'not_found': '#/$defs/DescendantsNotFound', 'descendants': '#/$defs/ScythianDescendants'}, 'propertyName': 'category'}}}}
scythian_search
Look a Proto-Scythian word up
Look a Proto-Scythian lemma up on Wiktionary and return its senses plus its full descendants payload — the reconstructed etymology and the reflex tree down to Ossetian and Khotanese, attested scholarship, not invention. Plain ASCII spellings are folded to the reconstruction's diacritics and the result notes the resolution. With search_language='eng' the query is an English word instead: the result lists the lemmas whose glosses match it (the translations block) plus their expanded entries. Returns Markdown plus the same result as structuredContent matching the declared outputSchema. Results are cached server-side; first-time queries reach the live upstream politely and calls are rate limited — on a rate-limit error, wait a few seconds and retry. Content is from en.wiktionary.org (CC BY-SA 4.0 — attribute and share alike if republished).
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$defs': {'SearchLanguage': {'enum': ['xsc', 'eng'], 'type': 'string', 'title': 'SearchLanguage', 'description': "The query language. ``xsc`` (ISO 639-3 Scythian; Wiktionary's entry code is\n``xsc-pro``) looks a Proto-Scythian lemma up directly â\x80\x94 ASCII spellings are\nfolded (``tigri`` finds ``*tiÉ£ri``) via the reverse index. ``eng`` searches in\nreverse: the English query is matched against the indexed glosses of all\nlemmas, and each match is then looked up normally."}}, 'title': 'scythian_searchArguments', 'required': ['query'], 'properties': {'query': {'type': 'string', 'title': 'Query', 'maxLength': 80, 'minLength': 1, 'description': "The word to look up, in the language search_language names. Scythian (default): a SINGLE Proto-Scythian lemma â\x80\x94 plain ASCII works ('tigri' finds *tiÉ£ri: macrons and carons are folded, and É£â\x86\x92g, δâ\x86\x92d, βâ\x86\x92b, É\x99â\x86\x92e, θâ\x86\x92t or th), with or without the reconstruction asterisk. English (search_language='eng'): the English word whose Proto-Scythian equivalents you want â\x80\x94 matched against every entry's glosses."}, 'max_forms': {'anyOf': [{'type': 'integer', 'maximum': 12, 'minimum': 0}, {'type': 'null'}], 'title': 'Max Forms', 'default': None, 'description': 'Optional override for how many descendants payloads to expand this call (0â\x80\x9312). On an uncached query each payload is one politely paced upstream fetch, so high values on cold queries are slow. Omit for the server default.'}, 'include_forms': {'type': 'boolean', 'title': 'Include Forms', 'default': True, 'description': "When true (default), each match's full descendants payload â\x80\x94 etymology, glosses and the reflex tree down to Ossetian and Khotanese â\x80\x94 is returned INLINE in ONE call, no follow-up scythian_get_descendants. Set false for a cheap screen of which entries exist. Bounded by a per-search cap â\x80\x94 use max_forms to adjust per call. For eng queries this governs the expanded entries; the matched-lemmas list itself is always returned."}, 'search_language': {'$ref': '#/$defs/SearchLanguage', 'default': 'xsc', 'description': "Language the query word is in: 'xsc' (default) looks the Proto-Scythian lemma up directly; 'eng' finds the lemmas whose English glosses match the query (the local gloss index â\x80\x94 reconstructed languages have no translation tables) and returns their full entries. Glosses are in English either way."}}}
出力スキーマ
{'type': 'object', '$defs': {'Entry': {'type': 'object', 'title': 'Entry', 'required': ['headword'], 'properties': {'senses': {'type': 'array', 'items': {'$ref': '#/$defs/Sense'}, 'title': 'Senses'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'default': '', 'description': 'Bare lemma â\x80\x94 feed to scythian_get_descendants.'}, 'headword': {'type': 'string', 'title': 'Headword', 'description': 'The reconstructed headword, asterisk included.'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'default': '', 'description': 'POS section â\x80\x94 feed to scythian_get_descendants.'}, 'part_of_speech': {'type': 'string', 'title': 'Part Of Speech', 'default': ''}}, 'description': "One Proto-Scythian entry on the page: the reconstructed headword (asterisk\nincluded) with one part-of-speech section's senses."}, 'Sense': {'type': 'object', 'title': 'Sense', 'required': ['gloss'], 'properties': {'gloss': {'type': 'string', 'title': 'Gloss'}, 'label': {'type': 'string', 'title': 'Label', 'default': ''}, 'examples': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Examples'}}, 'description': 'One sense of an entry: the (HTML-stripped) Wiktionary definition line.'}, 'DescendantNode': {'type': 'object', 'title': 'DescendantNode', 'required': ['language'], 'properties': {'form': {'type': 'string', 'title': 'Form', 'default': '', 'description': 'The reflex as printed (asterisk kept on reconstructions); may be empty for a branch header or a transliteration-only term.'}, 'children': {'type': 'array', 'items': {'$ref': '#/$defs/DescendantNode'}, 'title': 'Children'}, 'language': {'type': 'string', 'title': 'Language', 'description': "Language name as printed, e.g. 'Alanic'."}, 'qualifier': {'type': 'string', 'title': 'Qualifier', 'default': '', 'description': "How the word travelled or which variety carries it, e.g. 'borrowed', 'Digor'; empty for plain inheritance."}, 'transliteration': {'type': 'string', 'title': 'Transliteration', 'default': '', 'description': "Romanization as printed beside the form, e.g. 'cirǧ'."}}, 'description': 'One node of a descendants tree: a reflex of the Proto-Scythian lemma in a\ndescendant (or borrowing) language, with its own descendants nested below.\n``form`` keeps the asterisk on reconstructed reflexes (``*Ä\x87irÉ£``) and may be\nempty for a branch header (``Ossetian`` above its dialect lines) or a term\nWiktionary records only in transliteration ("script needed").'}, 'SearchLanguage': {'enum': ['xsc', 'eng'], 'type': 'string', 'title': 'SearchLanguage', 'description': "The query language. ``xsc`` (ISO 639-3 Scythian; Wiktionary's entry code is\n``xsc-pro``) looks a Proto-Scythian lemma up directly â\x80\x94 ASCII spellings are\nfolded (``tigri`` finds ``*tiÉ£ri``) via the reverse index. ``eng`` searches in\nreverse: the English query is matched against the indexed glosses of all\nlemmas, and each match is then looked up normally."}, 'TranslationTerm': {'type': 'object', 'title': 'TranslationTerm', 'required': ['word'], 'properties': {'word': {'type': 'string', 'title': 'Word', 'description': "The bare Proto-Scythian lemma, e.g. 'tiÉ£ri'."}, 'word_class': {'type': 'string', 'title': 'Word Class', 'default': '', 'description': "The lemma's part-of-speech section, e.g. 'adjective'."}}, 'description': 'One Proto-Scythian lemma the gloss index offers for an English query.\n``word`` is the bare lemma (what an ``eng`` search re-searches and what\n``scythian_get_descendants`` needs).'}, 'TranslationSense': {'type': 'object', 'title': 'TranslationSense', 'required': ['sense'], 'properties': {'sense': {'type': 'string', 'title': 'Sense', 'description': 'The matched English gloss key â\x80\x94 the query.'}, 'terms': {'type': 'array', 'items': {'$ref': '#/$defs/TranslationTerm'}, 'title': 'Terms'}}, 'description': "One English query sense and the Proto-Scythian lemmas whose glosses match\nit. Matching is by the local gloss index (built from every entry's glosses) â\x80\x94\nWiktionary's translation tables exclude reconstructed languages, so there is no\nper-sense table to mine; the single sense carries the query itself."}, 'DescendantsHandle': {'type': 'object', 'title': 'DescendantsHandle', 'required': ['entry_id', 'word_class'], 'properties': {'forms': {'anyOf': [{'oneOf': [{'$ref': '#/$defs/ScythianDescendants'}, {'$ref': '#/$defs/DescendantsNotFound'}], 'discriminator': {'mapping': {'not_found': '#/$defs/DescendantsNotFound', 'descendants': '#/$defs/ScythianDescendants'}, 'propertyName': 'category'}}, {'type': 'null'}], 'title': 'Forms', 'default': None, 'description': "The full descendants payload, populated when a search is asked to include it; None when not requested or beyond the cap. (Proto-Scythian has no inflection tables â\x80\x94 this 'forms' slot carries descendants.)"}, 'context': {'type': 'string', 'title': 'Context', 'default': '', 'description': 'Nearby headword / hint.'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'The bare lemma â\x80\x94 the page-title tail, no asterisk.'}, 'pos_hint': {'type': 'string', 'title': 'Pos Hint', 'default': '', 'description': 'Part-of-speech hint.'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'description': "Part-of-speech section, e.g. 'noun', 'adjective'."}}, 'description': "A structured anchor for fetching one entry's descendants: feed ``entry_id``\n(the bare lemma) + ``word_class`` (the POS section) to\n``scythian_get_descendants`` â\x80\x94 or ask ``search`` to include the tree inline\n(``forms``)."}, 'DescendantsNotFound': {'type': 'object', 'title': 'DescendantsNotFound', 'required': ['entry_id', 'word_class'], 'properties': {'found': {'type': 'boolean', 'const': False, 'title': 'Found', 'default': False}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Proto-Scythian reconstruction entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'not_found', 'title': 'Category', 'default': 'not_found'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': 'No Proto-Scythian entry for this page/POS (no such page, no Proto-Scythian\nsection, or nothing parseable in it). ``found`` is False and there is no body.'}, 'ScythianDescendants': {'type': 'object', 'title': 'ScythianDescendants', 'required': ['entry_id', 'word_class'], 'properties': {'tree': {'type': 'array', 'items': {'$ref': '#/$defs/DescendantNode'}, 'title': 'Tree', 'description': 'The descendants tree in page order; empty when the entry records no reflexes.'}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Proto-Scythian reconstruction entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'glosses': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Glosses', 'description': "The entry's English glosses â\x80\x94 also what an eng search matches."}, 'category': {'type': 'string', 'const': 'descendants', 'title': 'Category', 'default': 'descendants'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'The bare lemma (page-title tail, no asterisk).'}, 'headword': {'type': 'string', 'title': 'Headword', 'default': '', 'description': "The headword as printed, asterisk included: '*tiÉ£ri'."}, 'etymology': {'type': 'string', 'title': 'Etymology', 'default': '', 'description': "The entry's etymology line, plain text; may be empty."}, 'word_class': {'type': 'string', 'title': 'Word Class', 'description': "The part-of-speech section, e.g. 'noun'."}}, 'description': "One entry's descendants payload: the headword, its English glosses and the\nreflex tree. ``tree`` MAY be empty â\x80\x94 the entry exists but Wiktionary records no\nreflexes â\x80\x94 while ``glosses`` still feed the English-query reverse index.\n``category`` discriminates this from the not-found shape â\x80\x94 switch on it before\nreading the body."}}, 'title': 'SearchResult', 'required': ['query', 'language', 'found'], 'properties': {'found': {'type': 'boolean', 'title': 'Found', 'description': 'False when nothing matched. For an eng query, True means the gloss index named Proto-Scythian lemmas â\x80\x94 entries may still be empty when none of them could be expanded (see translations).'}, 'query': {'type': 'string', 'title': 'Query'}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Proto-Scythian reconstruction entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'entries': {'type': 'array', 'items': {'$ref': '#/$defs/Entry'}, 'title': 'Entries'}, 'handles': {'type': 'array', 'items': {'$ref': '#/$defs/DescendantsHandle'}, 'title': 'Handles'}, 'language': {'$ref': '#/$defs/SearchLanguage'}, 'translations': {'type': 'array', 'items': {'$ref': '#/$defs/TranslationSense'}, 'title': 'Translations', 'description': 'Populated only for eng queries (always [] for xsc): the Proto-Scythian lemmas whose glosses match the query. Entries/handles below are the expanded dictionary entries of those lemmas.'}, 'resolved_from': {'type': 'string', 'title': 'Resolved From', 'default': '', 'description': 'The original query when resolved via the index; else empty. xsc queries only â\x80\x94 always empty for eng results.'}, 'search_method': {'enum': ['direct', 'lemma_index', 'translations'], 'type': 'string', 'title': 'Search Method', 'default': 'direct', 'description': "How the match was found: 'direct' = the query itself matched; 'lemma_index' = an ASCII/diacritic-folded spelling resolved via the reverse index; 'translations' = an English query resolved via the local gloss index."}, 'resolved_lemma': {'type': 'string', 'title': 'Resolved Lemma', 'default': '', 'description': 'The lemma actually searched when resolved; else empty. xsc queries only â\x80\x94 always empty for eng results.'}, 'forms_truncated': {'type': 'integer', 'title': 'Forms Truncated', 'default': 0, 'description': 'How many handles did NOT get an inline descendants payload because the per-search cap was reached.'}, 'translations_truncated': {'type': 'integer', 'title': 'Translations Truncated', 'default': 0, 'description': 'How many distinct matched lemmas were NOT expanded into entries because the per-search expansion cap was reached (they still appear under translations).'}}, 'description': 'The result of a dictionary search.'}
追加
scythian_get_descendants
2026年9月17日12:38
追加
scythian_search
2026年9月17日12:38