
Lexaudit
io.github.nareykoPublished by GitHub account nareykov0.3.1Updated Nov 7, 2026
Locale vocabulary audit (calques, inventeds, foreign slips). Local CLI via stdio — no hosted API.
Overview
Local stdio MCP server for lexaudit, a multilingual vocabulary auditor that flags calques, false friends and invented words and ranks which pages to fix first.
- What you can do
- Audit files or whole projects for odd, wrong or borrowed words in seven languages and get a ranked queue of pages to fix first
- Explain why a specific word was flagged, with status, reason and an editorial hint
- Re-rank pages by weighting or source and expand a known bad word into a to-do list of affected pages
- Compare two audit runs and optionally request a second opinion from a language model on your own endpoint
- Reports only; it does not edit the texts
- When to use it
- Useful when you write or translate articles, courses or documentation in English, German, Spanish, Polish, Russian, Swedish or Ukrainian and want a short prioritized list of suspicious vocabulary rather than a noisy spellchecker.
- Requirements
- Runs as a local process via uvx (or pipx) from the PyPI package lexaudit. CPU only, no account, no API key and no config file required. Spelling dictionaries download automatically into the user cache, so network access is needed for that step.
Installation
In SourceWeft
- Open Lexaudit in the dashboard and add it to a workspace.
- 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
lexaudit
Finds odd, wrong or copied-from-another-language words in your texts, and tells you which pages to fix first.
In plain words
You write or translate articles, courses or documentation. A normal spellchecker shouts about every brand name, abbreviation and long German word, and still misses the words that really hurt: a word copied from another language ("calque"), a real word used with the wrong meaning ("false friend"), or a word someone invented.
lexaudit reads your files, ignores the harmless things, and gives you a short ranked list: "look at this page first." It runs on an ordinary laptop in about a second. No graphics card, no internet, no account.
It only reports. It never changes your texts.
Unknown terms? See the glossary.
0.3.0 prep and publish path: docs/p1-INDEX.md.
- Languages: English (
en), German (de), Spanish (es), Polish (pl), Russian (ru), Swedish (sv), Ukrainian (uk) - Hardware: CPU only
- Author: Vadim Nareyko (github.com/nareyko, Founder at Arviser Sp. z o.o.)
- License: dual MIT package and AGPL-3.0-or-later hosted SaaS (details)
Try it in 30 seconds
Missing spelling dictionaries download automatically into your user cache. No GPU. No config file required. Exit code 1 means confirmed calques or invented words remain.
Optional helpers: lexaudit doctor, lexaudit fetch-dicts, lexaudit init.
Check a file or a whole project
Open the report
The reports are in the output folder, one subfolder per language. Start with queue.md:
A higher score means "look here first". top_words shows the words behind the score.
Ask why a word was flagged
Reproduce our test results
Then open tmp/synthetic-demo-out/<language>/queue.md.
How good is it? An honest answer
We built a 42-page test set in all 7 languages: 21 clean technical pages and 21 pages with planted problems. Some problems are known to the rules, some are brand new words the rules have never seen. Details: docs/synthetic-benchmark.md.
What this means:
- Pages with known problems come first in every language. The plain spellchecker puts clean pages first.
- Known-rule problems: 100.0% (26/26). Unseen single-occurrence neologisms (Zipf + char n-gram / affix-glue): 100.0% (7/7). Combined planted problems (honest fraction): 100.0% (33/33).
- With exactly 3 defective pages per locale,
Recall@2is 66.7% when the top-2 slots are both bad (Precision@2= 100.0%).Precision@3/Recall@3are 100.0% (singleton inventeds outrank repeated domain jargon). - Clean-page false positives: 47.1 unique flagged words per 1000 tokens (36 unique FP / 764 tokens).
- Domain terms that recur on a page (or sit in H1/title) are tagged
domain-term-candidate, nearly zero-weighted in ranking, and listed under Suggested glossary additions.
Documentation
Start with docs/README.md.
More commands
For contributors
Setup and checks:
Test layers: unit and integration tests (branch coverage 80% or more), the 7-language benchmark, property-based fuzzing (Hypothesis), golden regression with a read-only check of your files, JSON Schema contract, complexity gate (CRAP), mutation testing (kill rate 80% or more).
Pictures in docs/images are generated from code: run python scripts/render_diagrams.py (needs Inkscape and Pillow). Never edit the JPG files by hand.
License
Full wording: docs/licensing.md. Adding rules: docs/contributing-rules.md.
Origin and author
Created and maintained by Vadim Nareyko (github.com/nareyko). It grew out of auditing multilingual courses and encyclopedias at FairHelm.
Source: README.md at commit 86a0130
Tools
0Version history
1- v0.3.1LatestOct 30, 2026
Score
50% 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
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- 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 listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts