STE Dictionary MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@STE Dictionary MCP ServerCheck this text for STE violations: 'The device was activated by the user.'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
STE Dictionary MCP Server
An MCP server that checks text against ASD-STE100 Simple Technical English
(STE): which words are approved, which aren't, and what STE word replaces
each violation. Works entirely offline from a static dictionary snapshot in
data/ — no network access at runtime. See
docs/superpowers/specs/2026-08-21-ste-mcp-design.md for the full design.
Setup
pip install -r requirements.txt
python scripts/download_nltk_data.py
pytestThe check_structure tool needs two small NLTK data packages (the
punkt_tab sentence/word tokenizer and the averaged_perceptron_tagger_eng
POS tagger -- classic statistical models, not deep learning). Running
python scripts/download_nltk_data.py once after installing dependencies
downloads them and trims out the non-English tokenizer languages NLTK's
downloader pulls by default, keeping the on-disk footprint to a few MB
instead of ~58MB. It's safe to re-run. If you skip this step, check_structure
raises a RuntimeError telling you to run it.
The server reads its dictionary snapshot from the STE_DATA_DIR environment
variable, defaulting to ./data (relative to the working directory the
server is launched from). The snapshot in data/ is committed to this repo,
so no separate download step is needed.
Related MCP server: LexiLint MCP
Running standalone
python -m ste_mcp.serverSpeaks MCP over stdio.
Installing into Claude Code
Register the server with the Claude Code CLI. Use an absolute path to your
Python interpreter if python on your PATH doesn't have the mcp package
installed.
Local scope (available only when Claude Code is run from this repo):
cd /absolute/path/to/ste-dictionary-mcp
claude mcp add --transport stdio --env STE_DATA_DIR=/absolute/path/to/ste-dictionary-mcp/data ste-dictionary -- python -m ste_mcp.serverUser scope (available from any directory). Because user-scope servers
don't run with this repo as their working directory, wrap the launch in a
small script that cds into the repo first, e.g. ~/.claude/ste-launcher.sh:
#!/bin/sh
cd /absolute/path/to/ste-dictionary-mcp
exec python -m ste_mcp.serverThen register it:
chmod +x ~/.claude/ste-launcher.sh
claude mcp add --transport stdio --scope user --env STE_DATA_DIR=/absolute/path/to/ste-dictionary-mcp/data ste-dictionary -- ~/.claude/ste-launcher.shVerify with claude mcp list, or /mcp inside a session.
Claude Desktop configuration
Add to claude_desktop_config.json:
{
"mcpServers": {
"ste-dictionary": {
"command": "python",
"args": ["-m", "ste_mcp.server"],
"cwd": "/absolute/path/to/ste-dictionary-mcp",
"env": {
"STE_DATA_DIR": "/absolute/path/to/ste-dictionary-mcp/data"
}
}
}
}Tools
Tool | Purpose |
| Is this word/phrase STE, and what replaces it? |
| Scan a document for non-STE, ambiguous, unknown, and technical words with positions. |
| Scan a document for structural STE violations: overlong sentences, passive voice, non-imperative mood, noun clusters of 4+, overlong paragraphs, gerund-as-noun. |
| Look up an approved technical term or abbreviation. |
| Dictionary source, freshness, and coverage stats. |
check_word/check_text are word-list-based, not a grammar checker: they
check vocabulary, not sentence structure. check_structure adds lightweight
structural checks (via a small statistical POS tagger, not a full grammar
engine) for the ASD-STE100 rules a word list can't catch -- see its
docstring in ste_mcp/structure.py for the exact rules and their heuristic
limitations. It is diagnostic only (no rewrite suggestions); the agent using
these tools is responsible for rewriting.
Some words have both an STE-approved sense and a non-STE sense (e.g. "long"
as a plain adjective is STE, but "as long as"/"no longer" is not). For those,
check_word returns status: "ambiguous" (instead of "non_ste") along
with a note telling the caller to verify which sense applies in context,
and check_text reports them in a separate ambiguous bucket/summary count
rather than non_ste. status: "non_ste" is reserved for words where every
matched sense is non-STE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Prose linter + AI-slop detector: weasel words, passive voice, hedging, and research-cited AI tells
Scan manuscript text for AI-slop prose patterns before publishing to Amazon KDP.
Static linter for CLAUDE.md-style agent constitution files: 10 operational-guardrail checks.
Static linter for CLAUDE.md-style agent constitution files: 10 operational-guardrail checks.
Related MCP Servers
- AlicenseBqualityFmaintenanceProvides intelligent manuscript analysis and writing assistance for markdown projects, including semantic search, quality checks, terminology consistency, link validation, progress tracking, and comprehensive writing statistics.35131 npm13MIT
- FlicenseNot gradedqualityBmaintenanceOffline spell check and BYOK grammar checking for AI assistants. 100% offline spell check via nspell (zero tokens, zero API calls). BYOK grammar checking with your own Gemini, OpenAI, or Claude API key. Works with Claude Desktop, Cursor, ChatGPT, and any MCP-compatible tool. 8 languages supported.-
- FlicenseAqualityBmaintenanceL1-aware grammar, style, translation & tone tools with 70 local rules. Zero API keys needed.4-
- FlicenseNot gradedqualityDmaintenanceProvides lightweight documentation review tools including issue detection, readability scoring, style checking, and document summarization for integration with MCP-compatible clients.-