s1000d-reader-mcp
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., "@s1000d-reader-mcpList all data modules related to the engine subsystems for this project."
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.
@shuji-bonji/s1000d-reader-mcp
English | 日本語
An MCP server that lets an LLM read S1000D® data modules and publication modules as structure rather than as XML. It returns the heading hierarchy, numbered steps, warnings, cautions and notes, illustrations (ICN), tables and the titles of reference targets intact, and the server evaluates which product the content applies to (applicability) and passes on only the result. Every response carries how far the document has been verified (verification).
This is a personal project and is not affiliated with ASD (Aerospace, Security and Defence Industries Association of Europe). S1000D® is a registered trademark of ASD.
The S1000D specification, XML schemas, default BREX and official samples are not included in any package or repository, because their terms of use do not grant redistribution. Obtain them froms1000d.org and point the S1000D_SPEC_DIR environment variable at the extracted folder.
What it does
Tool | Description |
| Lists the data modules in a CSDB (and, on request, PMs, DMLs, DDNs, IMFs and UPFs) with their DMC, title, issue, language, schema name and applicability display text. Filters by model identification code, system code, information code, schema name and title text. A DML or DDN row also carries its code, issue date, entry or item count and a reconciliation summary against the CSDB ( |
| Reads one data module as structure: the identification and status section, the body tree (sections, paragraphs, lists, tables, illustrations, warnings, numbered steps and requirements, process branches, fault isolation questions and answers), references (with titles) and the verification status. Pass |
| Reads a publication module as a table of contents: the |
| Resolves a DMC, PMC or ICN to a file in the CSDB. For an ICN it also returns the DOCTYPE declaration of the referencing DM (file name and NOTATION) |
| Returns the applicability vocabulary: product attributes from the ACT (id, name, enumerations, identifiers), conditions from the CCT, products from the PCT (values that can be passed to |
| Reads an ICN metadata file (IMF): ICN, issue, title, keywords, security classification and a list of the items in the status section |
Reading applicability
State | Meaning |
| Applies to the product you passed |
| Does not apply. |
| Cannot be evaluated. |
The server does not return assert / evaluate expressions. Look up the attributes and values you need with describe_applicability and pass them to product in the form { "attributes": { "model": "…" }, "conditions": { … } }.
Verification status (verification)
By default the server runs XSD validation only (verify: "schema"). verify: "full" also checks against the BREX (Business Rules Exchange) chain and resolves references; verify: "none" skips them. A skipped step is reported as not-run, and a missing XSD as schema-not-found; neither is valid. In a document that violates the XSD, elements may be in positions that differ from the specification, so treat the reading of the body with suspicion as well.
Security classification (securityClassification) and size (size)
Every read_data_module and read_publication_module response starts with securityClassification: dataModule (the value in the identification and status section) and inContent (the number of body elements per value). The server does not interpret the values (S1000D leaves their meaning to the project). An agent can decide how to handle the content before quoting it. The body carries size (nodes, characters, count per kind, number of warnings) so the amount to read can be estimated.
Related MCP server: Synergy/DE MCP Server
What it does not do
It does not summarise or translate. Its job is to return the material a summary needs (headings, step numbers, warning types, reference targets) without dropping anything.
It does not judge conformance to S1000D. Read the details of XSD and BREX violations with
s1000d-verify-mcp, and the explanation of BREX rules withs1000d-brex-mcp.The body is structured for 5 types only:
descript/proced/process/fault/pm. Other types returncontent.structured: falseand only the identification and status section. Unknown elements are kept askind: "unknown"with their text only and counted incontent.unknownElements.
Configuration
Environment variable | Description |
| The folder where you extracted the S1000D distribution you obtained. The server looks for the XSD ( |
| The folder that holds the project's data modules. Several folders can be given, separated by |
Folders can also be added with the tool argument csdbDirs.
Config file (when environment variables are not passed, as with plugins in Claude Desktop)
If S1000D_SPEC_DIR / S1000D_CSDB_DIR are not set, the server reads the config file ~/.config/s1000d-stack/config.json (under XDG_CONFIG_HOME if it is set; S1000D_CONFIG changes the location). Claude Desktop does not pass environment variables to servers installed as plugins, and does not substitute ${VAR} written in the plugin's env. When you install the server as a plugin, write the folders here.
{
"specDir": "/path/to/s1000d/issue-7",
"csdbDirs": ["/path/to/your/csdb"]
}Environment variables take precedence when they are set. Paths that start with ~/ are accepted. The config file is read again on every call, so the server does not need to be restarted after you edit it.
Example configuration for Claude Desktop / Claude Code
{
"mcpServers": {
"s1000d-reader": {
"command": "npx",
"args": ["-y", "@shuji-bonji/s1000d-reader-mcp"],
"env": {
"S1000D_SPEC_DIR": "/path/to/s1000d/issue-7",
"S1000D_CSDB_DIR": "/path/to/your/csdb"
}
}
}
}Running over HTTP (embedding in a product)
The default is stdio. With --http the server starts over Streamable HTTP, so a CSDB product's server or a web application can call it over HTTP (the embedding foundation of stage 2.5).
npx -y @shuji-bonji/s1000d-reader-mcp --http # http://127.0.0.1:3000/mcp
npx -y @shuji-bonji/s1000d-reader-mcp --http --port 3101 --path /readerArgument | Default | Meaning |
|
| Address to bind to |
|
| Port; |
|
| Path of the MCP endpoint. |
| (see below) | Host names allowed in the |
| (see below) | Host names allowed in the |
When --host is a loopback address (127.0.0.1 / ::1 / localhost), Host and Origin are limited to localhost names (DNS rebinding protection). When bound to any other address they are not checked, so put the server behind the product's reverse proxy or authentication. Authentication, authorization and multi-tenancy are not part of this server. Environment variables and the config file work the same as with stdio.
How it works
All reading, evaluation and validation code lives in the shared library @shuji-bonji/s1000d-core; this server holds only the interpretation of arguments and the shape of the responses. The verification status is built with the same function as s1000d-verify-mcp, so the results of the two servers agree.
Development
npm install
npm test # runs on self-made test data only
npm run test:spec # uses the distribution you obtained (location given by S1000D_SPEC_DIR; default ../../specs/s1000d/issue-7)
npm run build && S1000D_SPEC_DIR=/path/to/issue-7 S1000D_CSDB_DIR=/path/to/csdb npm start # start over stdioLicense
MIT. S1000D® is a registered trademark of ASD. This software is not affiliated with ASD and does not include the specification, schemas or official samples.
Available Tools
6 toolsdescribe_applicabilityA
Describe the applicability vocabulary of a data module so a product can be chosen: the ACT product attributes (ids, names, enumerations/patterns, which one identifies the product), the CCT condition types and conditions, the PCT products (ready-made product values), the applic statements in the data module (ids and display texts), and which attributes used by the statements have no value in the PCT. Nothing is evaluated here; pass the chosen values as "product" to read_data_module.
| Name | Required | Description | Default |
|---|---|---|---|
| dmc | No | DMC of the data module to read from the CSDB (e.g. "S1000DBIKE-AAA-D00-00-00-00AA-041A-A"; "DMC-" prefix optional). Alternative to path/xml. | |
| xml | No | The document as an XML string (alternative to path; max 5 MB). | |
| path | No | File path of the document. | |
| csdbDirs | No | Extra CSDB folders to search (in addition to S1000D_CSDB_DIR) for data modules by DMC, referenced objects, ACT/CCT/PCT and BREX. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it explicitly declares this is a non-evaluating read/preparation operation, which prevents an agent from expecting it to compute applicability. It stops short of disclosing return shape details (e.g., structure/size of the vocabulary) but the enumerated content list compensates substantially.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single dense sentence with the core purpose front-loaded, followed by the enumerated return contents and the downstream routing note. The enumeration is long but each item earns its place by describing returned vocabulary; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must explain returns—and it does by listing the vocabulary categories returned. For a 4-param, zero-annotation tool this is nearly complete; only the mutual exclusivity/precedence of dmc vs xml vs path is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so dmc, xml, path, and csdbDirs are already documented in the schema. The description adds no syntax or precedence guidance beyond the schema (e.g., which source wins when multiple are provided), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Describe the applicability vocabulary of a data module') and then enumerates the concrete contents returned: ACT attributes, CCT condition types, PCT products, applic statements, and attributes lacking PCT values. This is clearly distinguishable from siblings like read_data_module, which evaluates rather than describes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit purpose ('so a product can be chosen'), states what it does not do ('Nothing is evaluated here'), and routes to the correct alternative ('pass the chosen values as "product" to read_data_module'). The condition that selects each tool is fully spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_data_modulesA
List the CSDB objects (data modules by default; optionally publication modules, DML, DDN, IMF, UPF) in the CSDB folders with DMC parts, techName/infoName, issue, language, schema name (descript/proced/…), S1000D issue and applicability display text. Filter by modelIdentCode, systemCode, infoCode, schemaName or title text. Paged with offset/limit.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Objects per call (default 100, max 1000). | |
| filter | No | ||
| offset | No | Index of the first object (default 0). | |
| include | No | Object kinds to list (default: dm). | |
| csdbDirs | No | Extra CSDB folders to search (in addition to S1000D_CSDB_DIR) for data modules by DMC, referenced objects, ACT/CCT/PCT and BREX. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well on return shape (DMC parts, techName/infoName, issue, language, schema name, S1000D issue, applicability text) and paging defaults. It says nothing about permissions, error behavior, or what happens when csdbDirs overlaps the default S1000D_CSDB_DIR, which for a filesystem-scanning tool is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences plus a short paging note, front-loaded with the resource and its default. The long parenthetical and comma-list of returned fields make it slightly heavy to parse, but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so listing the returned fields is essential and done here; paging semantics are also covered. Remaining holes are secondary: the 'icn' include option and the relationship between csdbDirs and the environment default are left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (80%), so the baseline is 3. The description usefully states the dm default for 'include' and names the filterable fields, but 'title text' loosely paraphrases a filter the schema defines as matching techName/infoName, adding ambiguity rather than precision.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('List the CSDB objects') and enumerates the object kinds covered, with data modules named as the default. This clearly separates it from read_data_module/read_publication_module siblings, though those siblings are never named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Browsing/filtering usage is implied by the filter and paging details, but there is no explicit 'use this when… instead of read_data_module' guidance. An agent must infer that this tool is for discovery and the read_* tools for retrieval of a single object.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_data_moduleA
Read one data module as structure, not XML: identification and status (DMC, issue, language, title, BREX ref, QA, DM-level applicability), the body as a tree of blocks (sections, paragraphs, lists, tables, figures with ICN, warnings/cautions/notes, numbered steps, requirements; processes and fault isolation too), the references it makes, and ALWAYS a "verification" status (XSD by default). Applicability of each block is evaluated for the given product (applicable / notApplicable / undetermined); without a product, only display texts are returned — assert expressions are never returned.
| Name | Required | Description | Default |
|---|---|---|---|
| dmc | No | DMC of the data module to read from the CSDB (e.g. "S1000DBIKE-AAA-D00-00-00-00AA-041A-A"; "DMC-" prefix optional). Alternative to path/xml. | |
| xml | No | The document as an XML string (alternative to path; max 5 MB). | |
| path | No | File path of the document. | |
| verify | No | How much to verify before reading: "schema" (default) runs XSD validation only; "full" also checks BREX along the brexDmRef chain and resolves references; "none" skips verification (reported as not-run). | schema |
| product | No | The product to evaluate applicability for. attributes: ACT productAttribute id → value (e.g. {"model": "Brook trekker", "version": "Mk9"}); conditions: CCT cond id → value. Omit to get "undetermined" with display texts only. Use describe_applicability to learn the available ids and values. | |
| section | No | Which part to return (default all). | all |
| csdbDirs | No | Extra CSDB folders to search (in addition to S1000D_CSDB_DIR) for data modules by DMC, referenced objects, ACT/CCT/PCT and BREX. | |
| maxNodes | No | Cap on body nodes returned (default 5000). | |
| omitNotApplicable | No | Drop blocks that are notApplicable for the given product (default false: keep them, marked). The number dropped is reported. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden and does well: it discloses that verification always runs (XSD by default), that applicability is evaluated per block as applicable/notApplicable/undetermined, that without a product only display texts come back, and that assert expressions are never returned. It omits failure modes for a missing DMC and any size/truncation behavior beyond the schema's 5 MB note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the "not XML" contrast are front-loaded, and the dense enumeration of return contents is grouped logically. The long parenthetical content list is heavy but every clause carries information an agent needs to anticipate the output shape.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, nested-object tool with no output schema, the description does the work of describing the return shape (status block, block tree, references, verification) and the applicability model. What it lacks is error/edge-case behavior (unknown DMC, unresolvable BREX) and any note on node capping interacting with the tree.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds real meaning beyond it by explaining the consequence of omitting `product` (undetermined, display texts only) and the semantics of the applicability evaluation that `omitNotApplicable` and `product` control. The verify and section parameters are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (read one data module) plus a differentiating scope ("as structure, not XML") and enumerates exactly what is returned: identification/status, body tree, references, and a verification status. An agent can distinguish it from list_data_modules and read_publication_module without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies it is the structured-read counterpart to raw XML reading and points to describe_applicability for discovering product attribute/condition ids. It never explicitly names an alternative or a when-not-to-use condition, so routing is clear but not fully spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_icn_metadataB
Read an ICN metadata file (IMF, icnmetadata.xsd): ICN, issue, title, keywords, security, source/originator and other status items as a flat list, plus the related ICN files found in the CSDB.
| Name | Required | Description | Default |
|---|---|---|---|
| icn | No | ICN whose IMF to read from the CSDB (e.g. "C0419-S1000D0360-001-01" or "ICN-C0419-…"). | |
| xml | No | The document as an XML string (alternative to path; max 5 MB). | |
| path | No | File path of the document. | |
| csdbDirs | No | Extra CSDB folders to search (in addition to S1000D_CSDB_DIR) for data modules by DMC, referenced objects, ACT/CCT/PCT and BREX. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral-disclosure burden. "Read" implies a non-mutating operation, and the return contents are briefly described, but there is no information about permissions, error behavior, missing files, or how the alternative input parameters interact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence with no wasted text. The main action and return description come first, followed by supporting details about related ICN files.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with no output schema and no annotations, the description provides an adequate sketch of returned metadata and related files. However, it does not cover usage selection among the optional input modes or behavioral edge cases, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the parameters already include useful examples and constraints such as the 5 MB XML limit. The description adds no additional parameter semantics, so this sits at the baseline for fully documented schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: "Read an ICN metadata file," and enumerates the metadata fields returned. It is clearly distinguishable from generic data-module tools, though it does not explicitly contrast itself with sibling tools such as read_data_module or read_publication_module.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool reads but gives no guidance on when to use it instead of sibling tools, nor when to choose the icn, path, or xml input modes. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_publication_moduleB
Read a publication module (PMC) as a table of contents: the pmEntry tree with titles, and for each dmRef/pmRef the resolved target (file, techName/infoName, issue) from the CSDB. Also returns the PM identification and a verification status.
| Name | Required | Description | Default |
|---|---|---|---|
| pmc | No | PMC to read from the CSDB (e.g. "S1000DBIKE-B6865-EPWG1-00"; "PMC-" prefix optional). Alternative to path/xml. | |
| xml | No | The document as an XML string (alternative to path; max 5 MB). | |
| path | No | File path of the document. | |
| verify | No | How much to verify before reading: "schema" (default) runs XSD validation only; "full" also checks BREX along the brexDmRef chain and resolves references; "none" skips verification (reported as not-run). | schema |
| csdbDirs | No | Extra CSDB folders to search (in addition to S1000D_CSDB_DIR) for data modules by DMC, referenced objects, ACT/CCT/PCT and BREX. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It usefully discloses that the tool reads from the CSDB, resolves dmRef/pmRef targets, and reports verification status, but it does not explain source precedence among pmc/xml/path, failure modes, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tightly constructed sentences with no filler. The core purpose and return contents are front-loaded and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description sufficiently explains the return shape: pmEntry tree, resolved targets, PM identification, and verification status. It omits how the mutually alternative pmc/xml/path inputs are prioritized and what happens when none is supplied, which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the five parameters, including the verify enum and csdbDirs behavior. The description adds little parameter-level meaning beyond mentioning verification status, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Read a publication module (PMC) as a table of contents.' It also details the key output shape, including the pmEntry tree and resolved dmRef/pmRef targets. It does not explicitly differentiate itself from siblings such as read_data_module or resolve_reference, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no exclusions, and no named alternatives. A reader can infer that this tool is for PMC table-of-contents reads, but the description does not say when to choose it over read_data_module or resolve_reference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_referenceA
Resolve one reference to a CSDB object: a DMC, a PMC, or an ICN (file name or entity name). Returns the file path(s), issue(s) and title. For an ICN, pass "fromPath" of the data module whose DOCTYPE declares the entity to get the declared file and notation.
| Name | Required | Description | Default |
|---|---|---|---|
| dmc | No | DMC to resolve. | |
| icn | No | ICN (entity name or file name) to resolve. | |
| pmc | No | PMC to resolve. | |
| csdbDirs | No | Extra CSDB folders to search (in addition to S1000D_CSDB_DIR) for data modules by DMC, referenced objects, ACT/CCT/PCT and BREX. | |
| fromPath | No | Data module whose DOCTYPE declares the ICN entity (optional). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral load, and it does disclose the return payload (paths, issues, title) and one conditional behavior for ICN resolution. It says nothing about what happens when a reference cannot be resolved (error vs. empty result), whether multiple matches can come back, or how far the search reaches beyond csdbDirs and S1000D_CSDB_DIR. Read-only nature is only inferable from "Resolve".
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and its identifier vocabulary before the output and the ICN special case. No filler, and the conditional guidance is placed last where it belongs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations and no output schema, so the description is the only behavioral source, and it does cover return values. However, with five parameters and zero marked required, the most consequential ambiguity — whether dmc, pmc, and icn are alternatives and what happens if zero or several are given — is never addressed, nor is unresolved-reference behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds a little for ICN: fromPath is tied to the DOCTYPE that declares the entity and produces the declared file and notation, which clarifies the payoff of supplying it. The dmc, pmc, and csdbDirs parameters receive no treatment in the description, and the relationship among dmc/pmc/icn (mutually exclusive? exactly one required?) is left unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A specific verb ("Resolve") applied to a well-scoped resource ("one reference to a CSDB object"), with the three accepted identifier kinds enumerated as DMC, PMC, and ICN. It also states the realized output (file path(s), issue(s), title), so an agent knows what it gets back. It stops short of distinguishing itself from siblings such as read_icn_metadata or read_data_module, leaving that inference to the agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the wording: resolve one identifier at a time and get paths/titles rather than document content, which contrasts implicitly with the read_* siblings. The one explicit conditional is useful — pass fromPath when resolving an ICN whose declaring DOCTYPE matters. There is no statement of when to prefer this over read_icn_metadata or read_data_module, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.7.0- First observed
describe_applicability - First observed
list_data_modules - First observed
read_data_module - First observed
read_icn_metadata - First observed
read_publication_module - First observed
resolve_reference
TDQS
Scored across 6 tools
Each tool targets a clearly distinct operation: listing CSDB objects, reading a data module, reading a publication module, resolving a reference, reading ICN metadata, and describing applicability vocabulary. The overlap around ICNs is well separated by purpose (resolve location vs read metadata), and read_data_module vs read_publication_module concern different S1000D object types.
All names follow a consistent snake_case verb_noun pattern: list_data_modules, read_data_module, read_publication_module, resolve_reference, read_icn_metadata, describe_applicability. The repeated verbs are used predictably for operations on different object types.
Six tools is well-scoped for an S1000D CSDB reader: enough to list, read, resolve, inspect metadata, and understand applicability without bloating the surface. Each tool has a clear role in the workflow.
The set covers the core reader workflows for data modules, publication modules, references, ICN metadata, and applicability discovery. A minor gap is that list_data_modules can enumerate DML, DDN, IMF, and UPF objects, but there are no dedicated tools for reading DML/DDN/UPF content beyond listing.
Maintenance
Related MCP Connectors
The Needle MCP server enables semantic search on documents stored in files like PDFs, DOCX, and XLSX by connecting AI applications to external data sources. It provides capabilities to create and manage document collections, perform natural language searches on stored content, and retrieve relevant information without requiring exact keyword matches.
Document-to-Markdown MCP server — convert PDF, Office and HTML into LLM-ready Markdown.
Token-free MCP server for structured RevoGrid Core, Pro, and Enterprise knowledge retrieval.
Read-only MCP server over the developer docs for the portfolio's JSON API, MCP, A2A and NLWeb.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceThis server provides an API to query Large Language Models using context from local files, supporting various models and file types for context-aware responses.1ISC
- AlicenseAqualityCmaintenanceA read-only server that exposes Synergy/DE documentation as tools and resources for searching, retrieving, and browsing topics. It features full-text search, version support, and optimized content chunking for seamless integration with LLMs and MCP clients.5MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that provides document analysis capabilities to LLM applications, including extraction, chunking, summarization, and semantic search for PDF, DOCX, and plaintext documents.-
- AlicenseNot gradedqualityBmaintenanceThis MCP server provides semantic document search and retrieval, enabling AI assistants to search documents, search categories, and retrieve category hierarchies using the Model Context Protocol.2MIT