Skip to main content
Glama
tosin2013

mcp-adr-analysis-server

by tosin2013

generate_adrs_from_prd

Generate Architectural Decision Records directly from a Product Requirements Document. Provide the PRD file path to produce structured ADRs for your project.

Instructions

Generate Architectural Decision Records from a Product Requirements Document with advanced prompting techniques (APE + Knowledge Generation)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
prdPathYesPath to the PRD.md file
prdTypeNoType of PRD for optimized knowledge generationgeneral
enhancedModeNoEnable advanced prompting features (APE + Knowledge Generation)
outputDirectoryNoDirectory to output generated ADRs (optional, uses configured ADR_DIRECTORY if not provided)
promptOptimizationNoEnable Automatic Prompt Engineering for optimized ADR generation
knowledgeEnhancementNoEnable Knowledge Generation for domain-specific insights

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv2.7.46
    • removedInput schema / properties / conversationContext
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "Rich context from the calling LLM about user goals and discussion history",
      -  "properties": {
      -    "budget": {
      -      "description": "Budget or resource constraints (e.g., \"limited budget\", \"enterprise scale\")",
      -      "type": "string"
      -    },
      -    "constraints": {
      -      "description": "Limitations, compliance requirements, or restrictions (e.g., [\"GDPR compliance\", \"budget under $50k\", \"minimal downtime\"])",
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "focusAreas": {
      -      "description": "Specific areas of concern or interest (e.g., [\"security\", \"performance\", \"maintainability\"])",
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "humanRequest": {
      -      "description": "Original human request text for context restoration and knowledge graph storage",
      -      "type": "string"
      -    },
      -    "previousContext": {
      -      "description": "Relevant context from previous conversation (e.g., \"User mentioned concerns about database splitting\")",
      -      "type": "string"
      -    },
      -    "projectPhase": {
      -      "description": "Current project phase (e.g., \"planning\", \"development\", \"migration\", \"production\")",
      -      "type": "string"
      -    },
      -    "requirements": {
      -      "description": "Specific requirements or preferences mentioned",
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "timeline": {
      -      "description": "Timeline or urgency information (e.g., \"launch in 3 months\", \"urgent migration\")",
      -      "type": "string"
      -    },
      -    "userGoals": {
      -      "description": "Primary objectives the user wants to achieve (e.g., [\"microservices migration\", \"improve security\"])",
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "userRole": {
      -      "description": "User's role or expertise level (e.g., \"senior architect\", \"developer\", \"project manager\")",
      -      "type": "string"
      -    }
      -  },
      -  "type": "object"
      -}
  2. First observed

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the write-like nature is partially covered. The description adds the behavioral detail that advanced prompting techniques (APE + Knowledge Generation) are used, which is useful, but it does not disclose side effects like file creation, overwrite behavior, or output location beyond what the schema's outputDirectory parameter implies.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It identifies the action, the resource, the input, and the distinctive technique in a compact form.

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

Completeness3/5

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

The tool has six parameters and no output schema, and the description does not explain what the caller should expect after execution, such as whether ADRs are written to disk, returned in the response, or how to locate generated files. The schema and annotations cover input details and basic safety, but the absence of output behavior leaves a meaningful gap for an agent invoking a generation tool.

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?

The schema has 100% parameter description coverage, so the baseline is 3 even without additional explanation in the tool description. The description mentions APE and Knowledge Generation, which loosely map to promptOptimization and knowledgeEnhancement booleans, but it does not add new semantic meaning beyond the schema.

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 states a specific verb ('Generate'), a clear resource ('Architectural Decision Records'), and a distinct input source ('Product Requirements Document'). This distinguishes it from siblings like generate_adr_from_decision, which takes a decision, or generate_adr_bootstrap, which bootstraps from a template.

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

Usage Guidelines3/5

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

The intended context is implied by 'from a Product Requirements Document': the agent should use this tool when it has a PRD and needs ADRs derived from it. However, there is no explicit guidance about when not to use it or which alternative to prefer, such as generate_adr_from_decision or suggest_adrs, so the usage guidance remains inferred rather than stated.

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