nexus-mcp-server
Provides read-only inspection, auditing, and documentation of a Sonatype Nexus Repository Manager 3.x instance via its REST API, including repository and security inventories, relationship graphs, content audits, drift checks, OpenAPI discovery, and optional enabled admin/write operations.
Sonatype Nexus MCP Server
A Model Context Protocol server that lets AI assistants inspect, audit and document a Sonatype Nexus Repository Manager 3.x instance. It is read-only by default; administrative tools are not even listed unless you enable them.
flowchart LR
AI[MCP client] <-->|stdio / Streamable HTTP| Server[nexus-mcp-server]
Server <-->|REST API| Nexus[Nexus Repository 3.x]Features
Inventory of repositories, blob stores, tasks, cleanup policies, routing rules, content selectors, users, roles and privileges, as far as the configured account can see them.
A relationship graph (repository → blob store, group → members, repository → cleanup policy, role → privilege) behind architecture explanations, risk checks and generated Markdown documentation.
Bounded full-content audit of one repository, with completion evidence.
Drift check of repositories against a declared state.
OpenAPI discovery of the instance's REST operations.
Every tool declares
readOnlyHint,destructiveHint,idempotentHintandopenWorldHint; outputs and logs redact the configured password and secret-looking keys.Starts without configuration, so clients and registries can list its tools; calls then report what is missing.
Used in production in read-only mode on Nexus Pro 3.96.1-01; partially verified on OSS 3.70. See docs/COMPATIBILITY.md.
Related MCP server: project-surface
Quick start
The server is listed in the MCP Registry
as io.github.oomchiller/nexus-mcp-server; registry-aware clients can install
it from there. Manual setup:
Container
docker run --rm -i \
-e NEXUS_URL=https://nexus.example.com \
-e NEXUS_USERNAME=readonly-user \
-e NEXUS_PASSWORD \
ghcr.io/oomchiller/nexus-mcp-server:0.2.0Images are published for linux/amd64 and linux/arm64, run as an
unprivileged user over stdio, and are configured through the environment
only. Release digests are listed on the
releases page.
Local process
{
"mcpServers": {
"nexus": {
"command": "uvx",
"args": ["--from", "git+https://github.com/oomchiller/nexus-mcp-server@v0.2.0", "nexus-mcp-server"],
"env": {
"NEXUS_URL": "https://nexus.example.com",
"NEXUS_USERNAME": "readonly-user",
"NEXUS_PASSWORD": "change-me"
}
}
}
}More client examples (Claude Desktop, Codex CLI, Gemini CLI) are in examples/.
Configuration
Settings come from the environment or a .env file in the working directory.
Variable | Default | Meaning |
| unset | Nexus base URL. Without it the server starts, and calls report that Nexus is not configured. |
| unset | Basic authentication. Use a read-only Nexus account. |
|
| Verify the Nexus TLS certificate. |
| unset | PEM file of CA certificates to trust instead of the public roots; needs |
|
| HTTP timeout. |
| host of | Comma-separated hosts the client may contact. |
|
| Log level (stderr). |
|
|
|
|
| With |
|
| Lists |
|
| Restrict |
|
| Largest Nexus response accepted. |
|
| How long graph tools reuse one Knowledge Graph build; |
|
| Register prompts. |
|
| Register resources. |
Token authentication is not implemented.
The server does not read SSL_CERT_FILE or the system trust store. For a
Nexus behind a private CA, set NEXUS_CA_BUNDLE rather than disabling
verification. An unreadable bundle, or a bundle with verification disabled,
stops the server at startup.
Gateways that run several instances side by side and prefix only tool names
(Docker MCP Gateway) should set NEXUS_MCP_ENABLE_PROMPTS=false and
NEXUS_MCP_ENABLE_RESOURCES=false.
Command line
--transport {stdio,sse,streamable-http} default stdio
--host HOST / --port PORT HTTP bind, default 127.0.0.1:8000, no authentication
--nexus-url URL overrides NEXUS_URL
--nexus-username USERNAME overrides NEXUS_USERNAME
--verify-ssl / --no-verify-ssl overrides NEXUS_VERIFY_TLS
--ca-bundle PATH overrides NEXUS_CA_BUNDLEKeep NEXUS_PASSWORD in the environment, not on the command line.
Tools
Group | Tools |
Explanation |
|
Inventory and documentation |
|
Audit |
|
Drift |
|
OpenAPI |
|
Listed only when enabled:
Tool | Requires |
|
|
|
|
Resources: nexus://instance/summary, nexus://repositories,
nexus://blobstores, nexus://tasks, nexus://cleanup-policies,
nexus://security/summary, nexus://architecture, nexus://knowledge_graph.
Prompts: nexus_audit_prompt, nexus_iac_drift_prompt.
Limits worth knowing: drift compares repository name, format and type only; risk checks cover a small set of graph rules; findings are only as complete as the REST APIs visible to the account. Optional endpoints that are missing for version, edition or permission reasons appear as limitations, not failures.
Safety
Read-only by default. Write tools and the raw API are not listed unless enabled, and every write is still checked against the mode at call time.
The client contacts only
NEXUS_ALLOWED_HOSTSand only paths relative toNEXUS_URL.Redaction is defence in depth, not a substitute for a least-privilege Nexus account. See SECURITY.md.
Development
uv sync --locked
uv run pytest
uv run ruff check . && uv run ruff format --check .
uv run mypy src testsSee CONTRIBUTING.md, ARCHITECTURE.md, DECISIONS.md and ROADMAP.md.
License
MIT; see LICENSE.
Available Tools
12 toolsnexus_audit_repository_contentARead-onlyIdempotent
Collect a bounded complete repository component inventory server-side.
Continuation tokens never leave the server. The result includes every component and asset reached, plus explicit completion and latest-download evidence; incomplete results must not be used for retirement decisions.
| Name | Required | Description | Default |
|---|---|---|---|
| max_pages | No | ||
| repository | Yes | ||
| max_components | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds genuine context beyond them: results are bounded by server-side caps, continuation tokens are handled internally and never returned, and any incomplete result carries explicit completion evidence that must not be used for retirement decisions. That is meaningful disclosure of truncation behavior.
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 followed by the two facts that matter most (token handling and the retirement-decision caveat). Little waste, though the line-broken formatting makes it slightly harder to scan than a single tight paragraph.
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?
An output schema exists and covers return values, so the description need not narrate the result shape. It supplies what the schema cannot: the server-side paging model, the meaning of completion evidence, and a hard constraint on downstream use. Combined with annotations, an agent has enough to call this correctly.
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 0%, so the description carries the full burden for the three parameters, and it does not. The word 'bounded' gestures at max_pages and max_components but never explains what those caps mean, what defaults do, or what format the repository identifier takes (name, id, path). Only a vague hint of truncation semantics is provided.
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 and resource: 'Collect a bounded complete repository component inventory server-side.' That is clearly a read/collection operation on repository content. It does not, however, distinguish itself from plausible siblings such as nexus_generate_inventory_json or nexus_generate_audit_report, so an agent must infer the boundary from the name alone.
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 only implied: the note that 'incomplete results must not be used for retirement decisions' tells the agent what this data feeds into, and the 'bounded complete' phrasing hints at a paging-limited enumeration. There is no explicit when-to-use versus the inventory or catalog siblings, and no stated prerequisites for the repository argument.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nexus_compare_live_state_with_declared_stateCRead-onlyIdempotent
Detect drift between live Nexus state and a provided declared state.
| Name | Required | Description | Default |
|---|---|---|---|
| declared_state | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is supplied structurally. The description adds the useful distinction between live state and declared state, but does not explain what drift detection returns or any limits of the comparison; the output schema covers return values.
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 a single front-loaded sentence with no wasted wording. It is concise, though the brevity contributes to the missing usage and parameter details.
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?
This is a read-only comparison tool with an open-world, nested input object and an output schema. The description does not explain the declared_state structure or how the agent should use the drift result, so it is not complete enough for the tool's complexity.
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?
There is one required parameter, declared_state, with 0% schema description coverage and a nested arbitrary object. The description calls it 'a provided declared state' but does not explain its expected structure, format, or how it is compared to live state, so the semantic gap remains substantial.
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 uses a specific verb ('Detect') and resource ('drift between live Nexus state and a provided declared state'), which clearly identifies a comparison operation. It does not explicitly differentiate from sibling tools, but none of the named siblings appear to perform state comparison.
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 gives no guidance on when to use this tool versus the sibling tools, nor does it state prerequisites or exclusions. The comparison purpose is implied, but an agent must infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nexus_detect_architecture_smellsARead-onlyIdempotent
Detect unused resources, offline repositories and configuration inconsistencies with rule-based checks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations' read-only, idempotent, and non-destructive safety profile, the description usefully discloses that detection is rule-based rather than, for example, AI-driven or based on arbitrary exploration. It does not clarify the scan scope, data sources, external accesses implied by openWorldHint, or limitations of the rules.
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 single compact sentence front-loads the action and concrete finding types, then adds a useful methodological qualifier. There is no redundant or unnecessary wording.
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?
The annotations and output schema reduce the need to describe safety or return values, and the named checks provide a viable minimum for selection. However, the description omits what environment or resource set is scanned and how narrowly the rule-based results should be interpreted, which are meaningful gaps for a zero-argument scan.
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?
There are no parameters to explain, so the baseline for a zero-parameter tool applies. The description is consistent with a fixed set of checks and does not introduce any undocumented input behavior.
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 uses a specific verb and enumerates the findings produced: unused resources, offline repositories, and configuration inconsistencies. The rule-based qualifier further clarifies the approach, but there is no explicit differentiation from the architecture, audit, or comparison siblings.
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: choose this tool when looking for the three named categories of architecture smells through rule-based checks. It does not state when these checks are appropriate, what they do not cover, or when to prefer nexus_audit_repository_content or nexus_compare_live_state_with_declared_state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nexus_explain_repositoryBRead-onlyIdempotent
Explain one repository: its storage, groups and cleanup policies.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds the scope of the explanation (storage, groups, cleanup policies) but says nothing about auth prerequisites, whether the explanation is derived from live or declared state, or how it differs behaviorally from the audit siblings.
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?
A single front-loaded sentence with no filler and immediate scoping after the colon. It is efficient, though the terseness leaves gaps that a few more words could have closed.
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?
The tool is simple (one required parameter) and has an output schema plus annotations, so much of the burden is offloaded. Still, with zero schema description coverage and no usage guidance, an agent has to guess how to specify the repository name and when to prefer this over nexus_explain_storage_strategy.
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 0% for the single required "name" parameter, so the schema gives no semantics. The description only implies that name identifies the repository being explained; it does not state expected format (bare name vs. full path/qualified name) or error behavior for unknown repositories.
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 ("Explain") and resource ("one repository") plus the facets covered: storage, groups, cleanup policies. That separates it from siblings like nexus_audit_repository_content or nexus_generate_inventory_json, though it does not distinguish it from the closely related nexus_explain_storage_strategy.
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 when-to-use guidance, no exclusions, and no pointer to alternatives despite several overlapping siblings (explain_storage_strategy, audit_repository_content, compare_live_state_with_declared_state). The agent must infer that this is the explanatory/read-out tool rather than an audit or generation tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nexus_explain_storage_strategyBRead-onlyIdempotent
Explain how blob stores are used by repositories, with evidence.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds that results come “with evidence,” which is useful behavioral context, but it does not explain scope, limitations, or what evidence is included.
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 a single front-loaded sentence with no redundant wording. Every part contributes to stating the tool’s purpose.
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?
With no parameters and an output schema present, the description does not need to explain return values. However, for an explanation tool in a rich sibling set, it remains thin on scope—such as which repositories are covered and what “evidence” means—leaving some ambiguity about how to apply it.
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?
The tool has zero parameters, so there are no parameter semantics for the description to clarify. The baseline score for a parameterless tool 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?
The description gives a specific verb and object: explain how blob stores are used by repositories. It is clear what the tool does, though it does not explicitly contrast itself with siblings such as nexus_explain_repository or nexus_understand_architecture.
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 guidance on when to choose this tool over related explanation tools. The intended use is implied by the name and description, but no conditions, exclusions, or alternatives are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nexus_generate_architecture_mdARead-onlyIdempotent
Generate a high-level architecture overview document (Markdown).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish read-only, idempotent, non-destructive behavior, while the description adds the generated artifact's abstraction level and Markdown format. It does not clarify the architecture's source or scope, the significance of open-world access, or whether the document is returned rather than persisted.
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 single sentence is front-loaded with the action and includes only useful scope and format information. There is no redundant or unnecessary wording.
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?
The description is sufficient to invoke a simple zero-argument tool, and the output schema removes the need to explain return fields. It still leaves the source and scope of the architecture unclear and provides too little selection context relative to closely related siblings.
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?
The tool has no parameters, so there are no parameter semantics requiring documentation; the zero-parameter baseline applies. Any ambiguity about the analyzed repository or environment is a scope issue rather than missing parameter documentation.
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 ("Generate"), resource ("high-level architecture overview document"), and format (Markdown). It does not explicitly differentiate the tool from nexus_understand_architecture or the other document-generation siblings.
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?
"High-level architecture overview" implies that the tool is appropriate when an overview document is wanted. However, there is no explicit when-to-use or when-not guidance, nor routing to nexus_understand_architecture for analysis rather than document generation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nexus_generate_audit_reportBRead-onlyIdempotent
Generate the current audit report from available Nexus APIs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds only "current" (implying freshness/no persistence of history) and "from available Nexus APIs" (implying dependence on which APIs are configured), but does not say whether anything is written to disk, what happens when APIs are unavailable, or how long generation takes.
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?
One short sentence with no filler and the action front-loaded. Its brevity works against it slightly, since the single sentence is essentially all the guidance provided.
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?
Return-value documentation is unnecessary because an output schema exists, and there are no parameters to explain. Still, for a zero-arg report generator the description is thin: it does not characterize the report's contents or scope, nor how it relates to the sibling audit tools, which is the main thing an agent needs to choose it.
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?
The tool takes zero parameters, so the schema carries no semantics that the description must compensate for; baseline 4 applies. The only descriptive nuance, scoping to "available Nexus APIs", slightly clarifies what the call operates against.
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 names a specific verb and resource ("Generate ... audit report"), so an agent knows the action and product. However, it does not distinguish this from the closely related sibling nexus_audit_repository_content or other nexus_generate_* tools, leaving the boundary of "audit report" undefined.
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 guidance on when to call this versus nexus_audit_repository_content (which presumably produces the underlying audit data) or the other generate_* siblings such as nexus_generate_inventory_json. No prerequisites, sequencing, or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nexus_generate_capability_mapBRead-onlyIdempotent
Group the instance's REST operations by functional domain.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered by structured data. The description adds only the notion that operations are bucketed by functional domain, which hints at output shape but says nothing about how domains are determined or whether the result is persisted anywhere. With annotations carrying most of the burden, a 3 is appropriate.
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?
A single front-loaded sentence with no filler, and the core action plus grouping criterion arrive immediately. It is efficient but borders on under-specification for a tool whose name promises a 'capability map' that the sentence never defines.
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?
An output schema exists, so return values need not be explained, and with no parameters the call mechanics are trivial. Still, the description leaves open what a 'capability map' is, whether generation requires a loaded spec, and how this differs from sibling inventory/catalog generators — gaps that matter for a tool in a dense family of eleven siblings.
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?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. Schema coverage is 100% and the empty properties object is self-explanatory.
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 ('Group') and resource ('the instance's REST operations') plus the grouping dimension ('functional domain'), so the agent knows exactly what is produced. It does not, however, distinguish itself from nearby siblings such as nexus_openapi_list_operations or nexus_generate_inventory_json, which an agent could easily confuse with this grouping output.
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 guidance on when to call this versus nexus_openapi_list_operations or nexus_generate_inventory_json, and no stated preconditions (e.g. that an OpenAPI spec must already be loaded). The agent must infer the use case entirely from the one-line purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nexus_generate_inventory_jsonBRead-onlyIdempotent
Generate a structured JSON inventory of all core Nexus objects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety and determinism profile is fully covered by structured data. The description adds only the output serialization format (JSON); it does not state scope (whole repository vs. current workspace), whether it scans the filesystem, or any cost/limit, which is what would earn a higher score given the annotation coverage.
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?
A single front-loaded sentence with no filler, which is well-matched to a parameterless generator. It is arguably over-terse for a whole-repository scan, but every word earns its place and nothing is redundant.
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?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. What is missing is scope and differentiation: with eleven sibling artifact generators and no parameters, the description should say what "core Nexus objects" are and how this JSON inventory differs from the Markdown catalog.
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?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the schema is empty and 100% described. Baseline 4 applies for a no-parameter tool.
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 ("Generate") and a specific artifact ("structured JSON inventory of all core Nexus objects"). An agent knows the action and output format, but "core Nexus objects" is undefined and nothing distinguishes it from the near-identical sibling nexus_generate_repository_catalog_md, which presumably produces the same inventory in Markdown.
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 when-to-use, when-not-to-use, or alternative-selection guidance at all. The many siblings (catalog_md, architecture_md, audit_report, capability_map) all produce repository-level artifacts, so the agent is left to guess which artifact it wants and when JSON is preferable to Markdown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nexus_generate_repository_catalog_mdBRead-onlyIdempotent
Generate a detailed repository catalog document (Markdown).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety and repeatability profile is covered structurally. The description only adds that the artifact is 'detailed' and Markdown-formatted; it does not say whether a file is written to disk or content is returned, or what the catalog covers.
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?
A single short sentence with no filler and the key noun (catalog) front-loaded. It is efficiently written, though the brevity reflects under-specification rather than deliberate density.
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?
An output schema exists and no parameters need explaining, which lowers the burden considerably. Still, for a tool whose whole value is the generated document, the description gives no sense of the catalog's scope or how it differs from the inventory/architecture generators beside it.
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?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. The sentence does confirm the output format, which is the only semantics available here.
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 states a specific verb and resource ('Generate a detailed repository catalog document') plus the output format (Markdown), so the action is unambiguous. It stops short of distinguishing this catalog from sibling generators such as nexus_generate_inventory_json or nexus_generate_architecture_md.
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 when-to-use guidance, no mention of prerequisites, and no reference to any alternative tool. An agent facing four generation siblings (catalog, inventory JSON, architecture MD, audit report) gets no signal about which one to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nexus_openapi_list_operationsBRead-onlyIdempotent
List REST operations from the instance's live OpenAPI document.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds only the useful nuance that the document is 'live' (fetched from the running instance) rather than static, but says nothing about result size, pagination, or failure behavior when the instance is unreachable.
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?
A single front-loaded sentence with no redundant wording; the discriminating detail ('live') is placed where it will be read. It is arguably too terse, since one more clause about what is returned or when to prefer it would earn its space.
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?
With an output schema present and rich annotations, the description does not need to explain return values or safety. However, for a discovery tool sitting among eleven repository-analysis siblings, it should say how it relates to them (e.g., use this to enumerate endpoints before calling compare_live_state_with_declared_state), which it omits.
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?
The tool takes zero parameters and the input schema has no properties, so there is nothing for the description to disambiguate. Baseline for a parameterless tool 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 ('List REST operations') plus a qualifier about the source ('from the instance's live OpenAPI document'), which separates it from the repository-analysis siblings. It stops short of naming a sibling it complements or replaces, so an agent must infer the boundary itself.
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 or when-not-to-use guidance. The word 'live' hints that this is for runtime discovery rather than declared-state inspection (as in nexus_compare_live_state_with_declared_state), but the description never states that distinction or any prerequisite such as the instance being reachable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nexus_understand_architectureARead-onlyIdempotent
Summarize the instance: object counts, repositories by format and type, blob store usage, group membership and offline repositories, with evidence.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so safety is covered. The description adds real value beyond them by enumerating what the summary covers (counts, formats/types, blob stores, group membership, offline repos) and noting results come "with evidence," which signals citations/backing data rather than bare assertions. It omits any note on cost, latency, or size of the summary, which is the main remaining 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?
A single sentence that leads with the verb and resource, then lists the covered dimensions compactly. Every clause names a distinct piece of content; there is no filler or restatement of the tool name.
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?
With zero parameters, an output schema present, and full annotation coverage, the description only needs to convey scope and placement — and it conveys scope well. The missing piece is placement relative to siblings (inventory JSON, architecture markdown, smell detection), which is the one thing an agent still has to guess.
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?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-parameter tool applies. Nothing in the text misleads about inputs.
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?
Specific verb ("Summarize") plus a specific resource ("the instance") and an enumerated scope: object counts, repositories by format/type, blob store usage, group membership, offline repositories. An agent can tell this is a broad inventory/overview read. It does not, however, distinguish itself from close siblings such as nexus_generate_inventory_json or nexus_generate_architecture_md, which appear to cover overlapping ground.
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 word "Summarize" — this is the high-level overview call — but there is no explicit when-to-use statement, no when-not, and no named alternative among the eleven siblings. The agent must infer that this is the entry point before drilling into nexus_explain_repository or nexus_generate_architecture_md.
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.
12 tool updates
v0.1.0- First observed
nexus_audit_repository_content - First observed
nexus_compare_live_state_with_declared_state - First observed
nexus_detect_architecture_smells - First observed
nexus_explain_repository - First observed
nexus_explain_storage_strategy - First observed
nexus_generate_architecture_md - First observed
nexus_generate_audit_report - First observed
nexus_generate_capability_map - First observed
nexus_generate_inventory_json - First observed
nexus_generate_repository_catalog_md - First observed
nexus_openapi_list_operations - First observed
nexus_understand_architecture
TDQS
Scored across 12 tools
Most tools target distinct artifacts (catalog, inventory JSON, audit report, architecture Markdown, capability map), but the boundary between nexus_understand_architecture (a summarized response) and nexus_generate_architecture_md (a document) is fuzzy, and nexus_audit_repository_content vs nexus_generate_audit_report read as closely related. The multiple 'generate_*' document tools also require careful reading of the qualification ('Markdown', 'JSON', 'current audit report') to pick correctly.
All tools share a nexus_ prefix and follow a verb_noun pattern (generate_*, explain_*, audit_*, detect_*, compare_*), which is predictable. Minor deviations exist: nexus_openapi_list_operations namespaces within the verb, and nexus_compare_live_state_with_declared_state is unusually long compared to peers.
Twelve tools sit comfortably in the well-scoped 3-15 range for an inspection/audit server. There is mild redundancy in the four 'generate a document' tools, but each produces a different artifact so none is clearly dead weight.
The surface covers architecture explanation, storage strategy, repository detail, content inventory, smells, drift detection, and OpenAPI/capability mapping — a solid read-only lifecycle for an audit server. Minor gaps: there is no explicit 'list repositories' entry point (callers must infer names from architecture summaries), and no way to export or persist reports beyond generation.
Maintenance
Related MCP Connectors
Read-only AI coding tools for change verification, release readiness, capacity, and guidance.
Read-only MCP access to a documented IT fleet: state, changes, posture. 15 tools.
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Read-only tools over the Safer Agentic AI framework: 239 patterns + 15 heuristics.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to deeply introspect Jira Data Center configurations — including workflows, schemes, automation, and Assets — through 76 read-only tools, without any modification capability.5MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to query a repository's verified semantic model, including capabilities, ownership, contracts, constraints, impact, health, and verification status, without re-deriving project facts. It exposes read-only tools for inspecting, reasoning about, and verifying the provenance-tracked surface.2Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to read managed Microsoft 365 client tenants, baselines, alignment scores, policies, Secure Score, Entra users/groups/roles, and audit activity, and on explicit request run assessments and queue reports. Access is read-only apart from those two run tools, which never modify tenant policies.Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to inspect, query, and diagnose deployments, releases, runbooks, tasks, tenants, and infrastructure inside an Octopus instance through its APIs. Supports read-only and write-gated modes, toolset selection, and structured REST access for both interactive use and automation.449 npmMIT