STE Dictionary MCP Server

STE Dictionary MCP Server

Checks text against ASD-STE100 Simple Technical English, identifying non-approved words and suggesting STE replacements, and detects structural violations such as overlong sentences, passive voice, and noun clusters. Works entirely offline from a static dictionary snapshot with no network access at runtime.

Category
Visit Server

README

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
pytest

The 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.

Running standalone

python -m ste_mcp.server

Speaks 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.server

User 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.server

Then 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.sh

Verify 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
check_word(word) Is this word/phrase STE, and what replaces it?
check_text(text, include_unknown=True) Scan a document for non-STE, ambiguous, unknown, and technical words with positions.
check_structure(text) Scan a document for structural STE violations: overlong sentences, passive voice, non-imperative mood, noun clusters of 4+, overlong paragraphs, gerund-as-noun.
lookup_technical_term(term) Look up an approved technical term or abbreviation.
dictionary_info() 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.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured