Skip to main content
Glama
Mhdd-24
by Mhdd-24

@mhdd_24/adr-mcp

Architecture Decision Records management.

Same architecture as @mhdd_24/sublime-mcp.

Full documentation: docs/WIKI.md


How it works (30 seconds)

You (chat) → MCP client → adr-mcp → ADR APIs / CLIs / local tools

Related MCP server: mcp-adr

Prerequisites

Requirement

Notes

Node.js 18+

ESM TypeScript MCP server

Credentials / CLIs

See environment variables below


Install

Option A — npm (after publish)

npm install -g @mhdd_24/adr-mcp

Option B — npx

npx @mhdd_24/adr-mcp

Option C — clone and build

git clone https://github.com/Mhdd-24/ADR-MCP.git
cd ADR-MCP
npm install
npm run build
node dist/index.js

Configure Cursor

Edit ~/.cursor/mcp.json:

{
  "mcpServers": {
    "adr": {
      "command": "npx",
      "args": ["-y", "@mhdd_24/adr-mcp"],
      "env": {
        "ADR_DIR": "..."
      }
    }
  }
}

Local development:

{
  "command": "node",
  "args": ["/absolute/path/to/ADR-MCP/dist/index.js"]
}

Environment variables

Variable

Description

ADR_DIR

ADR directory


Tools

Tool

Description

adr_status

Show ADR directory.

adr_list

List ADR files.

adr_new

Generate a new ADR markdown stub.


License

ISC

Available Tools

3 tools
adr_listB

List ADR files.

ParametersJSON Schema
NameRequiredDescriptionDefault
dirNoADR directory

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only says 'list' which implies a read-only operation, but it doesn't disclose what is returned (file names, paths, contents), whether subdirectories are included, or any formatting/pagination. This is minimal and leaves significant behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, short sentence with no filler. It is efficiently front-loaded, though it is so brief that it borders on under-specification. For conciseness alone, it earns a 4.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional parameter and no output schema, the description is too sparse. It fails to clarify what the output looks like, how the 'dir' parameter affects results, or how this tool differs from siblings in terms of use cases. An agent would need to inspect other sources to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% — the 'dir' parameter has a description ('ADR directory'). The tool description adds no extra meaning beyond that. Since the schema already documents the parameter adequately, a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List ADR files.' uses a specific verb ('list') and a clear resource ('ADR files'). It is distinct from siblings adr_status (which likely reports status) and adr_new (which creates new ADRs), so an agent can differentiate without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus adr_status or adr_new. The description doesn't state typical scenarios (e.g., 'use this to see all existing ADRs' or 'for status, use adr_status'). An agent is left to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adr_newC

Generate a new ADR markdown stub.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesDecision title
contextNoContext

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, but it only states the bare action of generating a stub. It does not disclose side effects such as file creation, naming conventions, or filesystem writes, nor what 'stub' contains — a significant gap for a creation tool with zero 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is front-loaded and contains no filler or redundancy. It is efficient but borders on under-specification given the total absence of supplementary behavioral detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the tool's simplicity, the description is thin: with no annotations, no output schema, and no guidance on what the stub contains or what the tool returns, an agent lacks enough context to invoke it with full confidence. Required/optional parameter info is present in the schema, but the operational outcome of generation is left unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters, so the baseline of 3 applies. The description adds no parameter-level meaning beyond the schema's 'Decision title' and 'Context', leaving the role of context in the generated stub undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Generate') and resource ('a new ADR markdown stub'), making the core action clear. It is distinguishable from siblings adr_status and adr_list by the generate-verb and new-stub object, though it does not explicitly name or differentiate them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus adr_status or adr_list, nor any when-not-to-use conditions. The intended usage must be inferred entirely from the tool name and one-line purpose, with no explicit context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adr_statusC

Show ADR directory.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral disclosure burden. 'Show' implies a read-only operation, but the description does not explain what output is produced, whether any state changes occur, or what 'ADR directory' actually contains. This is minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short and front-loaded, with no wasted words. However, it is under-specified: a single terse sentence does not provide enough information to be considered appropriately sized for a tool with no annotations and sibling ambiguity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of annotations and an output schema, the description is the only source of behavioral and selection context. It fails to explain what status information is shown or how it relates to adr_list, leaving an agent without enough context to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and an empty input schema, so schema coverage is trivially complete. With no parameters, there is no parameter semantic burden for the description to carry; the baseline score of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Show ADR directory.' uses a clear verb ('show') and names a resource ('ADR directory'), so it is not a tautology. However, it does not clarify what 'status' means or how this differs from the sibling tool adr_list, which likely also presents ADR information. The purpose is therefore vague rather than fully specified.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance about when to use adr_status instead of adr_list or adr_new. It does not mention context, prerequisites, or exclusions, so an agent cannot decide between sibling tools based on this text.

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.

  1. 3 tool updatesv1.0.0
    • First observedadr_list
    • First observedadr_new
    • First observedadr_status

TDQS

B3.1/5.0

Scored across 3 tools

Disambiguation3/5

adr_status and adr_list overlap in purpose, both providing visibility into ADRs (directory vs. files), which could confuse an agent. adr_new is clearly distinct as a creation action.

Naming Consistency4/5

All tools share the adr_ prefix, making the pattern predictable. However, suffixes mix nouns and verbs (status, list, new) rather than following a strict verb_noun convention.

Tool Count5/5

Three tools is well-scoped for a focused ADR management server, covering the essential actions without unnecessary complexity.

Completeness3/5

Creating and listing ADRs are covered, but there is no tool to view the content of a specific ADR, nor update or delete records. This leaves a notable gap in the lifecycle.

Related MCP Connectors

Related MCP Servers