An MCP Server for the ASD-STE100 Issue 9 standard.
claude mcp add biz-dfch-asdste100mcp -- uvx asdste100-mcp{
"mcpServers": {
"biz-dfch-asdste100mcp": {
"command": "uvx",
"args": ["asdste100-mcp"]
}
}
}MCP Servers overview
# biz.dfch.AsdSte100Mcp
<!-- mcp-name: io.github.dfch/biz-dfch-asdste100mcp -->
[](https://www.asd-ste100.org/)
[](https://www.gnu.org/licenses/agpl-3.0)

[](https://github.com/dfch/biz.dfch.AsdSte100Mcp/actions/workflows/ci.yml)
[](https://test.pypi.org/project/biz-dfch-asdste100mcp/)
[](https://www.pypi.org/project/biz-dfch-asdste100mcp/)
[](https://pypistats.org/packages/biz-dfch-asdste100mcp)
[](https://registry.modelcontextprotocol.io/?q=io.github.dfch/biz-dfch-asdste100mcp)
[](#authentication)
An MCP server for the [ASD-STE100 (Simplified Technical English) Issue 9 standard](https://www.asd-ste100.org/).
ASD-STE100: Copyright by (c) [ASD](https://www.asd-europe.org/).
I am in no way affiliated with ASD. ASD does not endorse my work.
## Table of Contents
- [Tools](#tools)
- [Resources](#resources)
- [Installation](#installation)
- [Usage](#usage)
- [Authentication](#authentication)
- [Add to OpenCode](#add-to-opencode)
- [Development](#development)
- [Related Projects](#related-projects)
- [Make a Release](#make-a-release)
- [License](#license)
## Authentication
This server exposes only read-only lookup tools and resources over
vocabulary and rules data that is bundled with the package; there is
nothing to authenticate against. No API keys, tokens, or credentials are
required or supported in either `stdio` or `sse` transport mode. If you
expose the `sse` transport beyond `localhost`, secure it at the network
layer (e.g. a reverse proxy) rather than expecting the server to
authenticate requests itself.
## Tools
### Vocabulary
| Tool | Description |
|---|---|
| `word_find` | Search for a term by exact name (case-insensitive) in the ASD-STE100 Issue 9 vocabulary. Return approved/rejected status, part of speech, STE examples, and approved alternatives. Use this first when you know the exact word. Use `word_match` with a wildcard if this tool returns no items. |
| `word_find_many` | Search for multiple terms by exact name (case-insensitive) in a single call. Returns one `WordFindEntry` per input term (`term` + `results`), in the same order as the input, each holding 0, 1, or more matching vocabulary entries. |
| `word_match` | Search the vocabulary using a regular expression pattern. Return all entries whose term matches. Use it to find all words with a common prefix or pattern (e.g. ^de or .*tion$). Paginated (`max_results`/`offset`); returns a `WordResult`. |
| `word_fuzzy` | Search for a term with sequence-matching (Python difflib.get_close_matches). Results may not be obvious — use when `word_find` returns nothing and you want fuzzy suggestions. |
| `word_list` | Return all vocabulary entries. Only use when you need to process the full vocabulary. Use `word_count` instead if you only need the total. Paginated (`max_results`/`offset`); returns a `WordResult`. |
| `word_count` | Return the total number of entries in the vocabulary. Use instead of `word_list` when you only need the count. |
| `word_synonym` | Search for vocabulary entries that are WordNet synonyms of a word, via the `biz-dfch-asdste100nlp` library's `Nlp` class. Use this to find approved alternatives for a non-STE word. |
### Rules
| Tool | Description |
|---|---|
| `rules_find` | Search for rules in the ruleset by exact id (case-insensitive), e.g. `R1.1` or `GR-8`. Use this first when you know the exact id. |
| `rules_match` | Search rules using a regular expression matched against the rule `name` and `summary`. |
| `rules_search` | Full-text search across every text a rule carries (section, category, name, summary, and all content blocks: text, notes, examples, technical noun/verb lists). Optionally restrict to specific content types. Paginated (`max_results`/`offset`); returns a `SearchResult`. |
| `rules_by_section` | Search for rules by exact section name (case-insensitive), e.g. `Words`. |
| `rules_by_category` | Search for rules by exact category name (case-insensitive), e.g. `Technical nouns`. |
| `rules_examples` | Return content items across rules, optionally scoped by id/section/category and filtered by content type. Paginated (`max_results`/`offset`); returns a `RulesExamplesResult`. |
| `rules_overview` | Return a lightweight, per-rule overview (id, type, section, category, name, optional summary, and content counts/flags) without shipping every content item. |
| `rules_toc` | Return the distinct (section, category) pairs as a table-of-contents outline, optionally scoped to one section. |
## Resources
Read-only resources let a client browse or attach ruleset data directly (e.g. via
an "@mention" or resource picker), without going through a tool call.
| Resource URI | Description |
|---|---|
| `asdste100://rules/toc` | Table-of-contents outline of the ruleset: the distinct (section, category) pairs, each with the ids they contain. Mirrors the `rules_toc` tool with no `section` filter. |
| `asdste100://rules/rule/{id_}` | A single rule/recommendation/information item by exact id (case-insensitive), e.g. `asdste100://rules/rule/R1.1`. Mirrors the `rules_find` tool; an unknown id resolves to an empty list rather than an error. |
| `asdste100://version` | Installed version numbers of the MCP server itself and its three data-backing libraries: `biz-dfch-asdste100vocab`, `biz-dfch-asdste100rules`, and `biz-dfch-asdste100nlp`. |
## Installation
```bash
pip install biz-dfch-asdste100mcp
```
Or with [uv](https://docs.astral.sh/uv/):
```bash
uv add biz-dfch-asdste100mcp
```
## Usage
### MCP Inspector
If you want to test the MCP server without a tool like `OpenCode`, you can do this with [`MCP Inspector`](https://modelcontextprotocol.io/docs/2026-07-28/tools/inspector).
`MCP Inspector` is part of the `mcp[cli]` package. When you install this project with `--extra dev` you can use `MCP Inspector`.
NOTE: The examples below use `bunx` instead of `npx` to launch `MCP Inspector`; `npx` has not been tested.
### stdio (Claude Desktop, OpenCode, and other MCP hosts)
```bash
asdste100-mcp
```
Run `MCP Inspector` against the server over `stdio`:
```bash
bunx @modelcontextprotocol/inspector uv run --frozen --directory . asdste100-mcp
```

NOTE: Sometimes, the MCP Inspector cannot connect to the MCP server via `stdio`. Use the `sse` option (see below) instead.
### SSE / network
```bash
asdste100-mcp --transport sse --host localhost --port 8000
```
NOTE: You do not have to supply the option `--port` to the MCP server. The default value of `port` is `8000`.
Start the server, then connect `MCP Inspector` to it — these are two separate commands, run in two separate terminals:
```bash
# terminal 1: start the server
uvx --from . asdste100-mcp -t sse
```
```bash
# terminal 2: launch the inspector and connect it to the running server
bunx @modelcontextprotocol/inspector
```


### Options
| Option | Env var | Default | Description |
|---|---|---|---|
| `--transport` | `ASDSTE100_MCP_TRANSPORT` | `stdio` | Transport mode: `stdio` or `sse` |
| `--host` | `ASDSTE100_MCP_HOST` | `localhost` | Bind address (SSE only) |
| `--port` | `ASDSTE100_MCP_PORT` | `8000` | TCP port (SSE only) |
| `--env` | — | auto-discovered | Path to a `.env` file |
| `--file` / `-f` | `ASDSTE100_MCP_FILES` | _(empty)_ | Path to a vocabulary file (`*.jsonl`); repeatable |
| `--rules-file` / `-r` | `ASDSTE100_MCP_RULES_FILES` | _(empty)_ | Path to a rules file (a single JSON array); repeatable |
### Vocabulary configuration
| Env var | Default | Description |
|---|---|---|
| `ASDSTE100_MCP_FILES` | _(empty)_ | Colon-separated paths to additional vocabulary files |
| `ASDSTE100_MCP_USE_STE100` | `true` | Load the built-in ASD-STE100 Issue 9 vocabulary |
| `ASDSTE100_MCP_USE_STE100_TECHNICAL_WORDS` | `false` | Also load the technical words vocabulary |
### Rules configuration
| Env var | Default | Description |
|---|---|---|
| `ASDSTE100_MCP_RULES_FILES` | _(empty)_ | Colon-separated paths to additional rules files (each a single JSON array) |
| `ASDSTE100_MCP_USE_STE100_RULES` | `true` | Load the built-in ASD-STE100 Issue 9 ruleset |
## Add to OpenCode
To add the ASD-STE100 (Simplified Technical English) MCP server to your OpenCode configuration:
1. Open your OpenCode config file (typically `~/.config/opencode/opencode.json` or `~/.config/opencode/opencode.jsonc`)
2. Add the following configuration to the `mcp` section (and use it via `stdio`):
```json
"asdste100": {
"type": "local",
"enabled": true,
"command": ["uvx", "--from", "biz-dfch-asdste100mcp", "asdste100-mcp"]
}
```
3. Save the file and restart OpenCode
This enables OpenCode to access ASD-STE100 vocabulary and rules lookups for technical writing and documentation compliance.
## Development
### Install dev dependencies
```bash
uv sync --all-extras
```
### Run linters
```bash
uv run --frozen ruff format --check
uv run --frozen ruff check
uv run --frozeWhat people ask about biz.dfch.AsdSte100Mcp
What is dfch/biz.dfch.AsdSte100Mcp?
+
dfch/biz.dfch.AsdSte100Mcp is mcp servers for the Claude AI ecosystem. An MCP Server for the ASD-STE100 Issue 9 standard. It has 1 GitHub stars and was last updated today.
How do I install biz.dfch.AsdSte100Mcp?
+
You can install biz.dfch.AsdSte100Mcp by cloning the repository (https://github.com/dfch/biz.dfch.AsdSte100Mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is dfch/biz.dfch.AsdSte100Mcp safe to use?
+
dfch/biz.dfch.AsdSte100Mcp has not been audited yet by our security agent. Review the original repository on GitHub before using it in production.
Who maintains dfch/biz.dfch.AsdSte100Mcp?
+
dfch/biz.dfch.AsdSte100Mcp is maintained by dfch. The last recorded GitHub activity is from today, with 0 open issues.
Are there alternatives to biz.dfch.AsdSte100Mcp?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy biz.dfch.AsdSte100Mcp to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/dfch-biz-dfch-asdste100mcp)<a href="https://claudewave.com/repo/dfch-biz-dfch-asdste100mcp"><img src="https://claudewave.com/api/badge/dfch-biz-dfch-asdste100mcp" alt="Featured on ClaudeWave: dfch/biz.dfch.AsdSte100Mcp" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!