An MCP for the ASD-STE100 (Simplified Technical English) Issue 9 vocabulary.
Project description
biz.dfch.AsdSte100Mcp
An MCP server for the ASD-STE100 (Simplified Technical English) Issue 9 vocabulary.
Tools
| Tool | Description |
|---|---|
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 asdste100_match with a wildcard if this tool returns no items. |
match |
Search the vocabulary using a regular expression pattern. Return all entries whose term matches. Return all entries whose term matches. Use it to find all words with a common prefix or pattern (e.g. ^de or .*tion$). |
similar -- Search for a term with sequence-matching (Python difflib.get_close_matches). Results may not be obvious — use when find returns nothing and you want suggestions. |
|
list |
Return all vocabulary entries. Only use when you need to process the full vocabulary. Use asdste100_count instead if you only need the total. This operation is expensive and return a large number of text. |
count |
Return the total number of entries in the vocabulary. Use instead of asdste100_list when you only need the count. |
Installation
pip install biz-dfch-asdste100mcp
Or with uv:
uv add biz-dfch-asdste100mcp
Usage
stdio (Claude Desktop, OpenCode, and other MCP hosts)
ste100-mcp
SSE / network
ste100-mcp --transport sse --host 127.0.0.1 --port 8000
Options
| Option | Env var | Default | Description |
|---|---|---|---|
--transport |
STE100_MCP_TRANSPORT |
stdio |
Transport mode: stdio or sse |
--host |
STE100_MCP_HOST |
127.0.0.1 |
Bind address (SSE only) |
--port |
STE100_MCP_PORT |
8000 |
TCP port (SSE only) |
--env |
— | auto-discovered | Path to a .env file |
Vocabulary configuration
| Env var | Default | Description |
|---|---|---|
STE100_MCP_FILES |
(empty) | Colon-separated paths to additional vocabulary files |
STE100_MCP_USE_STE100 |
true |
Load the built-in ASD-STE100 Issue 9 vocabulary |
STE100_MCP_USE_STE100_TECHNICAL_WORDS |
false |
Also load the technical words vocabulary |
OpenCode Configuration
Adding ASD-STE100 MCP Server to OpenCode
To add the ASD-STE100 (Simplified Technical English) MCP server to your OpenCode configuration:
-
Open your OpenCode config file (typically
~/.config/opencode/opencode.jsonor~/.config/opencode/opencode.jsonc) -
Add the following configuration to the
mcpsection (and use it viastdio):
"asdste100": {
"type": "local",
"enabled": true,
"command": ["uvx", "--from", "biz-dfch-asdste100mcp", "ste100-mcp"]
}
- Save the file and restart OpenCode
This enables OpenCode to access ASD-STE100 vocabulary lookups for technical writing and documentation compliance.
Development
Install dev dependencies
uv sync --all-extras
Run linters
uv run --frozen ruff format --check
uv run --frozen ruff check
uv run --frozen pylint $(git ls-files '*.py')
Run tests
uv run --frozen python -m unittest discover -v -s tests -t . -p "test_*.py"
Make a Release
1. Make sure all tests pass
Before releasing, make sure the CI pipeline is green on the dev branch:
uv run --frozen ruff format --check
uv run --frozen ruff check
uv run --frozen pylint $(git ls-files '*.py')
uv run --frozen python -m unittest discover -v -s tests -t . -p "test_*.py"
2. Increase the version
Update the version in pyproject.toml:
version = "x.y.z"
3. Commit and push to dev
git add pyproject.toml CHANGELOG.md
git commit -m "chore: bump version to vx.y.z"
git push origin dev
4. Merge dev into main
git checkout main
git merge dev
git push origin main
5. Create and push a version tag
export VERSION=x.y.z
git tag v${VERSION}
git push origin v${VERSION}
Pushing the tag triggers the publish.yml workflow, which will:
- Build the sdist and wheel.
- Publish to TestPyPI (environment
testpypi). - Publish to PyPI (environment
pypi), only if TestPyPI succeeded. - Create a GitHub Release with auto-generated notes and the distribution artifacts attached.
Then switch back to dev to continue work:
git checkout dev
Configure Trusted Publishing
The workflow uses OIDC Trusted Publishing — no API tokens or secrets are needed.
GitHub: create environments
Go to your repo → Settings → Environments and create two environments:
| Environment | Recommended protection |
|---|---|
testpypi |
None required |
pypi |
Add a required reviewer to prevent accidental production releases |
TestPyPI
Log in at test.pypi.org → Your account → Publishing → Add a new pending publisher:
| Field | Value |
|---|---|
| PyPI project name | biz-dfch-asdste100mcp |
| Owner | dfch |
| Repository | biz.dfch.AsdSte100Mcp |
| Workflow name | publish.yml |
| Environment | testpypi |
PyPI
Log in at pypi.org → Your account → Publishing → Add a new pending publisher:
| Field | Value |
|---|---|
| PyPI project name | biz-dfch-asdste100mcp |
| Owner | dfch |
| Repository | biz.dfch.AsdSte100Mcp |
| Workflow name | publish.yml |
| Environment | pypi |
License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file biz_dfch_asdste100mcp-0.1.2.tar.gz.
File metadata
- Download URL: biz_dfch_asdste100mcp-0.1.2.tar.gz
- Upload date:
- Size: 27.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc1df83d84c3e02945d48b670fd550361a516617447725e945577270098da78e
|
|
| MD5 |
5b220dff4e75a6967b147b10a05805c2
|
|
| BLAKE2b-256 |
cbaee8e7910f3cca1faf8a861723a7eaa12f0bf18bf2cf34fe8cba2307a0d9f2
|
Provenance
The following attestation bundles were made for biz_dfch_asdste100mcp-0.1.2.tar.gz:
Publisher:
publish.yml on dfch/biz.dfch.AsdSte100Mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
biz_dfch_asdste100mcp-0.1.2.tar.gz -
Subject digest:
bc1df83d84c3e02945d48b670fd550361a516617447725e945577270098da78e - Sigstore transparency entry: 2288697236
- Sigstore integration time:
-
Permalink:
dfch/biz.dfch.AsdSte100Mcp@9027b0653c1b082409db331c730d09b71f863acd -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/dfch
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@9027b0653c1b082409db331c730d09b71f863acd -
Trigger Event:
push
-
Statement type:
File details
Details for the file biz_dfch_asdste100mcp-0.1.2-py3-none-any.whl.
File metadata
- Download URL: biz_dfch_asdste100mcp-0.1.2-py3-none-any.whl
- Upload date:
- Size: 35.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d51a7b4f0539c3e795d3e134fbb888a4d061abad96072ab73abee3ea206592f5
|
|
| MD5 |
0e9be0a4545eb853e74b9461406e7b7d
|
|
| BLAKE2b-256 |
9efd88b129c29e0c01239863745be6453f8f64fe3b83aea205d6374960873fd8
|
Provenance
The following attestation bundles were made for biz_dfch_asdste100mcp-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on dfch/biz.dfch.AsdSte100Mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
biz_dfch_asdste100mcp-0.1.2-py3-none-any.whl -
Subject digest:
d51a7b4f0539c3e795d3e134fbb888a4d061abad96072ab73abee3ea206592f5 - Sigstore transparency entry: 2288697285
- Sigstore integration time:
-
Permalink:
dfch/biz.dfch.AsdSte100Mcp@9027b0653c1b082409db331c730d09b71f863acd -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/dfch
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@9027b0653c1b082409db331c730d09b71f863acd -
Trigger Event:
push
-
Statement type: