ASD-STE100 Simplified Technical English

io.github.dfch由 GitHub 帳號 dfch 發布v3.0.0更新於 Oct 24, 2026

An MCP server for the ASD-STE100 (Simplified Technical English) Issue 9 standard.

已驗證STDIO僅桌面知識與記憶開發者工具

概覽

AI 產生的概覽

讓助理查詢 ASD-STE100 簡化技術英語的詞彙與規則,以檢查技術寫作是否符合規範。

可以做什麼
提供對內建 ASD-STE100 Issue 9 詞彙表與規則集的唯讀查詢工具。詞彙工具支援以精確名稱、批次、正規表示式、模糊比對或 WordNet 同義詞查詢,回傳核准或拒絕狀態、詞性、範例與核准的替代詞。規則工具支援依編號、樣式、全文、章節或類別搜尋,並回傳範例、概觀與目錄。唯讀資源可瀏覽規則目錄、依編號取得單一規則以及版本資訊。
適用情境
適合在撰寫或檢查技術文件是否符合簡化技術英語時使用,也適合助理確認某個詞是否被核准以及應改用哪個詞。依章節或類別瀏覽規則集時同樣有用。
執行需求
以本機 Python 套件執行(pip install biz-dfch-asdste100mcp),預設透過 stdio 通訊,也可用 ASDSTE100_MCP_TRANSPORT、ASDSTE100_MCP_HOST 與 ASDSTE100_MCP_PORT 啟用 SSE。可透過 ASDSTE100_MCP_FILES 與 ASDSTE100_MCP_RULES_FILES 加入額外的詞彙與規則檔案。不需要帳號或 API 金鑰。
安裝前請注意
此伺服器為唯讀,不需要任何憑證。若將 SSE 傳輸暴露到 localhost 之外,README 說明它不會自行驗證請求,應在網路層(例如反向代理)加以保護。ASD-STE100 版權屬 ASD 所有,作者聲明與 ASD 無關聯,也未獲其背書。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 ASD-STE100 Simplified Technical English,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

biz.dfch.AsdSte100Mcp

[ASD-STE100: Issue 9] [License: AGPL v3] [Python] [Lint and Test] [TestPyPI version] [PyPI version] [PyPI downloads] [MCP Registry] [Auth: none]

An MCP server for the ASD-STE100 (Simplified Technical English) Issue 9 standard.

ASD-STE100: Copyright by (c) ASD.

I am in no way affiliated with ASD. ASD does not endorse my work.

Table of Contents

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

ToolDescription
word_findSearch 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_manySearch 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_matchSearch 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_fuzzySearch 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_listReturn 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_countReturn the total number of entries in the vocabulary. Use instead of word_list when you only need the count.
word_synonymSearch 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

ToolDescription
rules_findSearch 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_matchSearch rules using a regular expression matched against the rule name and summary.
rules_searchFull-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_sectionSearch for rules by exact section name (case-insensitive), e.g. Words.
rules_by_categorySearch for rules by exact category name (case-insensitive), e.g. Technical nouns.
rules_examplesReturn content items across rules, optionally scoped by id/section/category and filtered by content type. Paginated (max_results/offset); returns a RulesExamplesResult.
rules_overviewReturn a lightweight, per-rule overview (id, type, section, category, name, optional summary, and content counts/flags) without shipping every content item.
rules_tocReturn 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 URIDescription
asdste100://rules/tocTable-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://versionInstalled 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:

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.

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

[MCP Inspector with stdio]

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 serveruvx --from . asdste100-mcp -t sse
bash
# terminal 2: launch the inspector and connect it to the running serverbunx @modelcontextprotocol/inspector

[Start the MCP server with uvx and then start the MCP Inspector with bunx]

[MCP Inspector with sse]

Options

OptionEnv varDefaultDescription
--transportASDSTE100_MCP_TRANSPORTstdioTransport mode: stdio or sse
--hostASDSTE100_MCP_HOSTlocalhostBind address (SSE only)
--portASDSTE100_MCP_PORT8000TCP port (SSE only)
--env—auto-discoveredPath to a .env file
--file / -fASDSTE100_MCP_FILES(empty)Path to a vocabulary file (*.jsonl); repeatable
--rules-file / -rASDSTE100_MCP_RULES_FILES(empty)Path to a rules file (a single JSON array); repeatable

Vocabulary configuration

Env varDefaultDescription
ASDSTE100_MCP_FILES(empty)Colon-separated paths to additional vocabulary files
ASDSTE100_MCP_USE_STE100trueLoad the built-in ASD-STE100 Issue 9 vocabulary
ASDSTE100_MCP_USE_STE100_TECHNICAL_WORDSfalseAlso load the technical words vocabulary

Rules configuration

Env varDefaultDescription
ASDSTE100_MCP_RULES_FILES(empty)Colon-separated paths to additional rules files (each a single JSON array)
ASDSTE100_MCP_USE_STE100_RULEStrueLoad 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"]}
  1. 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 --checkuv run --frozen ruff checkuv run --frozen pylint $(git ls-files '*.py')

Run tests

bash
uv run --frozen python -m unittest discover -v -s tests -t . -p "test_*.py"

Related Projects

This server is part of the ASD-STE100 tooling family:

Make a Release

1. Make sure all tests pass

Before releasing, make sure the CI pipeline is green on the dev branch:

bash
uv run --frozen ruff format --checkuv run --frozen ruff checkuv 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:

toml
version = "x.y.z"

3. Commit and push to dev

bash
git add pyproject.toml CHANGELOG.mdgit commit -m "chore: bump version to vx.y.z"git push origin dev

4. Merge dev into main

bash
git checkout maingit merge devgit push origin main

5. Create and push a version tag

bash
export VERSION=x.y.zgit tag v${VERSION}git push origin v${VERSION}

Pushing the tag triggers the publish.yml workflow, which will:

  1. Build the sdist and wheel.
  2. Publish to TestPyPI (environment testpypi).
  3. Publish to PyPI (environment pypi), only if TestPyPI succeeded.
  4. Publish to the MCP Registry (publish-to-mcp-registry job) — requires the new version to be live on PyPI first.
  5. Create a GitHub Release with auto-generated notes and the distribution artifacts attached.

Then switch back to dev to continue work:

bash
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:

EnvironmentRecommended protection
testpypiNone required
pypiAdd a required reviewer to prevent accidental production releases
TestPyPI

Log in at test.pypi.org → Your account → Publishing → Add a new pending publisher:

FieldValue
PyPI project namebiz-dfch-asdste100mcp
Ownerdfch
Repositorybiz.dfch.AsdSte100Mcp
Workflow namepublish.yml
Environmenttestpypi
PyPI

Log in at pypi.org → Your account → Publishing → Add a new pending publisher:

FieldValue
PyPI project namebiz-dfch-asdste100mcp
Ownerdfch
Repositorybiz.dfch.AsdSte100Mcp
Workflow namepublish.yml
Environmentpypi

MCP Registry Publishing

The publish-to-mcp-registry job uses GitHub OIDC authentication and does not require additional setup — it will automatically publish to the official MCP Registry once the package is live on PyPI.

Verify your server is registered:

bash
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.dfch/biz-dfch-asdste100mcp"

License

AGPL-3.0-or-later

來源:README.md,提交 1dc94f5

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v3.0.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分