Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

ruTS-mcp

PYPI · RUTS-MCP

MCP server for ruTS: statistics of Russian texts as tools for LLM agents

Available components

+15 this week 69 Trust /100

Last scanned (4 hours ago)

Scores higher than 64% of PyPI servers

Category Education and Research

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security99
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 10 of 76 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability70
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 5041 tokens (~560/item across 9 items; 6 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 3 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
  • 2 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 29 Oct 26 54

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed pypi/ruts-mcp@0.1.4

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi
Reason No attestation published

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 76 packages
Packages resolved 76
Stale 10
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 6 exposed · ~4,605 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
analyze_text ~1,667

Измерить русский текст статистиками библиотеки ruTS. Используйте, чтобы получить точные числа о тексте, а не оценивать его на глаз. Считаются только запрошенные группы. Текст из файла передавайте через path, а не пересылайте целиком: так быстрее, и статистики считаются по исходному тексту. Группы статистик: - basic: предложения, слова, слоги, символы, буквы, пробелы и знаки препинания; уникальные, длинные (от 6 букв), сложные (от 4 слогов), простые, односложные и многосложные слова с долей от всех слов; энтропия длин слов в буквах и слогах. - readability: удобочитаемость - сводный класс и формулы Флеша-Кинкайда, Флеша, Колман-Лиау, SMOG, ARI, LIX, RIX, Соловьёва-Иванова-Солнышкиной, Мацковского, Тулдавы, Дейла-Чейла и Ганнинга, время чтения; формулы класса и сводный класс читаются классом школы и возрастом читателя, индекс Флеша, LIX и RIX - полосой своей шкалы, у формул Мацковского и Тулдавы и времени чтения шкалы нет. - diversity: лексическое разнообразие - TTR и поправки к нему, MATTR, MSTTR, MTLD, HD-D, индексы Симпсона, Юла и Оноре, мера Орлова, энтропия, законы Ципфа и Хипса, взрывность частых слов. - morph: морфология по pymorphy3 без снятия омонимии - части речи и 15 грамматических признаков (число и доля слов с каждым значением) и доли форм глагола: наклонения, инфинитив, причастия, деепричастия, совершенный вид, страдательные и возвратные формы. - phon: фоностатистики по буквам, без ударения, оглушения и редукции - доли гласных, сонорных, звонких и глухих согласных, тяжелые сочетания согласных, зияния, жесткость, открытые слоги, индексы аллитерации и ассонанса. - cohesion: связность по образцу Coh-Metrix и TAACO - повторы существительных, аргументов и знаменательных слов между предложениями (соседними, всеми парами, двумя следующими) и между соседними абзацами (абзац - строка текста), местоимения, данность, повтор времени и вида, коннекторы на 1000 слов - межпредложенческие и внутрипредложенческие, по классам. - lexical: лексическая сложность по частота…

NameTypeReqDescription
descriptionsboolean–Добавить к статистикам описания; false - короче ответ, когда описания уже известны по прошлому вызову
distributionsboolean–Добавить распределения слов по числу букв и слогов и знаков препинания по типам (группа basic)
groupsarray–Группы статистик; каждая - ключ результата
path––Абсолютный путь к текстовому файлу в UTF-8 на машине, где запущен сервер, вместо text: длинный текст не нужно пересылать в аргументе
readability_presetstring–Коэффициенты теста Флеша-Кинкайда (у academic - и индекса Флеша), группа readability: plainrussian откалиброван по школьным классам и подходит для любых текстов, в том числе художественных; fiction -…
textstring–Текст на русском языке; вместо него можно задать path

Structured output declared, but exposes no named fields.

No examples provided.

collocations ~466

Найти коллокации текста - пары слов, которые встречаются вместе чаще, чем случайно. Используйте для устойчивых сочетаний, терминологии и сочетаемости слова (параметр node). Пара упорядочена: правое слово стоит не дальше window слов после левого. Леммы pymorphy3 берутся без снятия омонимии. В результате "n_words" - число слов текста, "measure" - мера и как ее читать, "collocations" - пары по убыванию меры: левое слово "left", правое "right", их частоты "freq_left" и "freq_right", частота пары "freq_pair" и значение меры "score". freq_pair - число пар позиций, где правое слово стоит в окне после левого: слово, повторенное в окне, дает несколько пар, поэтому freq_pair бывает больше частоты слова, и такая пара - повтор, а не устойчивое сочетание. Ключ "warnings" - предупреждения: текст не на русском языке, слова node нет в тексте, пар с такой частотой нет.

NameTypeReqDescription
lemmatizeboolean–Сравнивать леммы: «точка зрения» и «точки зрения» - одна пара
measurestring–Мера ассоциации: logdice - устойчивость пары, не зависит от размера текста; mi завышает редкие пары; mi3 и t_score отдают предпочтение частым
min_freqinteger–Наименьшее значение freq_pair - числа пар позиций в окне
node––Слово, сочетаемость которого нужна; не задано - все пары
path––Абсолютный путь к текстовому файлу в UTF-8 на машине, где запущен сервер, вместо text: длинный текст не нужно пересылать в аргументе
textstring–Текст на русском языке; вместо него можно задать path
top_ninteger–Число коллокаций в ответе
windowinteger–Наибольшее расстояние между словами пары; 1 - биграммы

Structured output declared, but exposes no named fields.

No examples provided.

compare_texts ~893

Сравнить два корпуса текстов по признакам стиля и найти, чем они различаются сильнее всего. Используйте для атрибуции авторства, сравнения жанров, переводов, текстов человека и модели. Тексты режутся подряд на окна ровно по window слов (whole_texts - тексты целиком), у каждого окна считаются около 150 признаков ruTS, и распределения признака в корпусах A и B сравниваются. Остаток текста короче окна и текст короче окна отбрасываются: ответ предупреждает о таких текстах и о потере больше 10 % слов корпуса на остатках. Для сравнения нужно хотя бы по два окна в каждом корпусе. Тексты из файлов передавайте через a_paths и b_paths. Признаки по префиксам: basic_ - доли длинных, сложных, одно- и многосложных слов, букв, пробелов и знаков, буквы и слоги на слово; readability_ - формулы удобочитаемости; diversity_ - меры лексического разнообразия; morph_ - доли частей речи, отрицаний и кратких форм от слов (morph_pos_NOUN, morph_polarity_Neg, morph_style_variant_Short) и значений остальных признаков внутри признака (morph_case_Gen, morph_tense_Past); sents_ - средняя длина предложения в словах, ее стандартное отклонение, коэффициент вариации и автокорреляция соседних длин; punct_ - знаки по типам на 1000 слов и доля буквы ё; cohesion_ - статистики связности: повторы между предложениями, местоимения, данность, повтор времени и вида, коннекторы на 1000 слов. В результате "window" - размер окна (null - тексты целиком), "n_windows" и "n_texts" - число окон и текстов в A и B, "features" - признаки по убыванию модуля дельты Клиффа, при равной дельте - по относительной разности медиан: средние по окнам "mean_a" и "mean_b", разность медиан A - B "median_diff" с 95% бутстрэп-интервалом "ci_low" - "ci_high", дельта Клиффа "cliff_delta" (от -1 до 1: доля пар окон, где в A больше, минус доля, где меньше; по модулю от 0,147 - малый, от 0,33 - средний, от 0,474 - большой эффект, Romano и др. 2006) и p-значение U-критерия Манна-Уитни с поправкой Холма на число признаков "p_holm". Окна о…

NameTypeReqDescription
aarray–Тексты первого корпуса (A)
a_pathsarray–Абсолютные пути к файлам с текстами корпуса A, вместе с a или вместо
barray–Тексты второго корпуса (B)
b_pathsarray–Абсолютные пути к файлам с текстами корпуса B, вместе с b или вместо
top_ninteger–Число признаков с наибольшим различием
whole_textsboolean–Сравнивать тексты целиком, без окон; нужно хотя бы по два текста
window––Размер окна в словах; не задано - не больше 1000 и такой, чтобы самый короткий текст делился хотя бы на два окна, но не меньше 100

Structured output declared, but exposes no named fields.

No examples provided.

dispersion ~553

Измерить, насколько равномерно слова распределены по тексту (дисперсия Гриса). Используйте, чтобы отличить слово, которое проходит через весь текст, от слова, сосредоточенного в одном месте: частота их не различает. Текст делится на parts частей примерно равного размера. В результате "n_words" - число слов текста, "words" - слова в порядке запроса или по убыванию частоты, с частотой "freq" и мерами дисперсии: - dp: отклонение пропорций DP Гриса, основная мера; 0 - слово распределено пропорционально размерам частей, наибольшее значение около 1 - 1/parts - все вхождения в одной части. - dp_norm: DP, деленное на наибольшее возможное значение; 1 - все вхождения в самой малой части. - juilland_d: D Жюйана; 1 - равномерно, 0 - в одной части. - carroll_d2: D2 Кэрролла по энтропии распределения; 1 - равномерно, 0 - в одной части. - rosengren_s: S Розенгрена; 1 - пропорционально, около 1/parts - в одной части. - kl_divergence: дивергенция Кульбака-Лейблера в битах; 0 - пропорционально, растет при сосредоточении. У слова, которого нет в тексте, частота 0 и меры null. Слово с частотой меньше parts не может попасть во все части, и его меры показывают сосредоточенность даже при самом ровном распределении. Ключ "warnings" - предупреждения: текст не на русском языке, слов нет в тексте, частота слов меньше числа частей.

NameTypeReqDescription
lemmatizeboolean–Сравнивать леммы: формы слова считаются одним словом
partsinteger–Число частей текста примерно равного размера
path––Абсолютный путь к текстовому файлу в UTF-8 на машине, где запущен сервер, вместо text: длинный текст не нужно пересылать в аргументе
textstring–Текст на русском языке; вместо него можно задать path
top_ninteger–Число самых частых слов, если words не задано
words––Слова, дисперсия которых нужна; не задано - самые частые слова

Structured output declared, but exposes no named fields.

No examples provided.

keyness ~692

Найти ключевые слова текста - слова, которые в нем значимо чаще (или реже), чем в эталоне. Используйте, чтобы понять, чем лексика текста отличается от обычного языка (эталон по умолчанию - частотный словарь, его нужно скачать командой ruts-mcp download) или от другого текста (reference или reference_path). Слова сравниваются в нижнем регистре и с е вместо ё. Со словарем числа и слова с латиницей отбрасываются, а слово вне словаря получает его наименьшую частоту (freq_reference около 37): имена, термины и опечатки попадают в ключевые слова. Статьи словаря, которые лемматизатор не дает (его, ее, их, во, со), в слова, которые чаще в эталоне, не попадают: в тексте эти формы относятся к другим леммам (он, она, они, в, с). В результате "n_words" - число слов текста, которые сравниваются с эталоном, "reference" - эталон, "measure" - мера сортировки и как ее читать, "keywords" - слова по убыванию меры: частота в тексте "freq_target" и в эталоне "freq_reference", они же на миллион слов "ipm_target" и "ipm_reference", логарифм правдоподобия "g2" (значимость, со знаком минус - слово чаще в эталоне) с p-значением "p_value", Log Ratio "log_ratio" (размер эффекта; при нулевой частоте в эталоне - оценка с поправкой 0,5, бывает меньше 0) и значение меры "score". p_value не поправлено на число проверенных слов: надежнее p < 0,0001 (g2 от 15,13). Ключ "warnings" - предупреждения: текст не на русском языке, ключевых слов нет.

NameTypeReqDescription
lemmatizeboolean–Сравнивать леммы; с частотным словарем леммы сравниваются всегда
measurestring–Мера для сортировки: log_likelihood - значимость различия, log_ratio - во сколько раз слово чаще
min_freqinteger–Наименьшая частота слова там, где оно чаще
path––Абсолютный путь к текстовому файлу в UTF-8 на машине, где запущен сервер, вместо text: длинный текст не нужно пересылать в аргументе
positiveboolean–Слова, которые чаще в тексте; false - которые чаще в эталоне
reference––Текст-эталон; не задано (и не задан reference_path) - частотный словарь Ляшевской и Шарова (современный русский язык, 92 млн словоупотреблений)
reference_path––Абсолютный путь к файлу с текстом-эталоном вместо reference
textstring–Текст на русском языке; вместо него можно задать path
top_ninteger–Число ключевых слов в ответе

Structured output declared, but exposes no named fields.

No examples provided.

kwic ~334

Найти все вхождения слова или словосочетания в тексте с контекстом (конкорданс KWIC). Используйте, чтобы увидеть, как слово употребляется в тексте, и цитировать точно. Слова сравниваются без учета регистра и буквы ё, с by_lemma - по леммам pymorphy3; словосочетание не переходит через конец предложения. В результате "n_matches" - число вхождений, "matches" - строки по порядку в тексте: контекст слева "left", вхождение "keyword", как оно записано в тексте, и контекст справа "right". Строки ограничены параметром limit и общим объемом ответа около 40 тысяч символов. Ключ "warnings" - предупреждения: текст не на русском языке, показаны не все вхождения.

NameTypeReqDescription
by_lemmaboolean–Искать все формы слова по лемме: «кот» находит «кота», «коты»
keywordstringyesСлово или словосочетание
limitinteger–Наибольшее число строк ответа
path––Абсолютный путь к текстовому файлу в UTF-8 на машине, где запущен сервер, вместо text: длинный текст не нужно пересылать в аргументе
textstring–Текст на русском языке; вместо него можно задать path
windowinteger–Число слов контекста слева и справа

Structured output declared, but exposes no named fields.

No examples provided.

Install

How do I install the ruTS-mcp server?

ruTS-mcp runs locally as a PyPI package, launched with uvx ruts-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · ruts-mcp

# add to Claude Code
claude mcp add sergeyshk-ruts-mcp -- uvx ruts-mcp
Common questions

What is the ruTS-mcp server?

ruTS-mcp is listed in the public MCP registry as io.github.SergeyShk/ruts-mcp. MCP server for ruTS: statistics of Russian texts as tools for LLM agents. This page covers its PyPI package (ruts-mcp).

Is the ruTS-mcp server safe to use?

ruTS-mcp scores 69 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the ruTS-mcp server expose?

ruTS-mcp exposes 6 tools: analyze_text, kwic, collocations, dispersion, keyness, compare_texts. Their descriptions and schemas cost roughly 4,605 tokens of context every time the server is loaded.

Is the ruTS-mcp server still maintained?

ruTS-mcp is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the ruTS-mcp server under?

ruTS-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.