UNPKG

mcp-adr-analysis-server

Version:

MCP server for analyzing Architectural Decision Records and project architecture

116 lines 3.92 kB
/** * ADR by ID Resource - Individual ADR access * URI Pattern: adr://adr/{id} */ import { URLSearchParams } from 'url'; import { ResourceGenerationResult } from './index.js'; export interface AdrDetails { id: string; title: string; status: string; date: string; context: string; decision: string; consequences: string; implementationPlan?: string; filePath: string; fileName: string; fileSize: number; tags: string[]; relatedAdrs: string[]; priority: string; complexity: string; implementationStatus: 'not-started' | 'in-progress' | 'completed'; validationResults?: { isValid: boolean; issues: string[]; score: number; }; } /** * Generate individual ADR (Architectural Decision Record) resource with enhanced metadata and validation. * * Retrieves a specific ADR by its unique identifier and enriches it with: * - Structural validation scoring * - Related ADR discovery through content analysis * - Implementation status tracking * - Priority and complexity assessment * - File metadata (size, location, tags) * * **URI Pattern:** `adr://adr/{id}` * * **Query Parameters:** * - `projectPath`: Override project root path (default: process.cwd()) * * @param params - URL path parameters containing: * - id: ADR identifier (e.g., "001", "database-architecture", or full filename) * @param searchParams - URL query parameters for path customization * * @returns Promise resolving to resource generation result containing: * - data: Complete ADR details with validation, relationships, and metadata * - contentType: "application/json" * - lastModified: ISO timestamp of generation * - cacheKey: Unique identifier "adr:{id}" * - ttl: Cache duration (600 seconds / 10 minutes) * - etag: Entity tag for cache validation * * @throws {McpAdrError} When ADR retrieval fails due to: * - INVALID_PARAMS: Missing required 'id' parameter * - RESOURCE_NOT_FOUND: ADR with specified ID not found in directory * - RESOURCE_GENERATION_ERROR: ADR discovery or parsing failure * * @example * ```typescript * // Get ADR by numeric ID * const adr = await generateAdrByIdResource( * { id: '001' }, * new URLSearchParams() * ); * * console.log(`Title: ${adr.data.title}`); * console.log(`Status: ${adr.data.status}`); * console.log(`Validation score: ${adr.data.validationResults.score}/100`); * console.log(`Related ADRs: ${adr.data.relatedAdrs.join(', ')}`); * * // Get ADR from custom project path * const customAdr = await generateAdrByIdResource( * { id: 'database-architecture' }, * new URLSearchParams('projectPath=/path/to/project') * ); * * // Expected output structure: * { * data: { * id: "001", * title: "Use PostgreSQL for primary database", * status: "accepted", * date: "2025-01-15", * context: "We need a reliable RDBMS...", * decision: "We will use PostgreSQL...", * consequences: "- Positive: ACID compliance...", * implementationStatus: "completed", * priority: "high", * complexity: "medium", * relatedAdrs: ["002-database-migrations", "005-data-access-layer"], * validationResults: { * isValid: true, * issues: [], * score: 95 * }, * filePath: "/project/docs/adrs/001-database-choice.md", * fileSize: 2048, * tags: ["database", "infrastructure"] * }, * contentType: "application/json", * cacheKey: "adr:001", * ttl: 600 * } * ``` * * @since v2.0.0 * @see {@link discoverAdrsInDirectory} for ADR discovery logic * @see {@link validateAdr} for ADR validation rules * @see {@link findRelatedAdrs} for relationship detection */ export declare function generateAdrByIdResource(params: Record<string, string>, searchParams: URLSearchParams): Promise<ResourceGenerationResult>; //# sourceMappingURL=adr-by-id-resource.d.ts.map