UNPKG

mcp-adr-analysis-server

Version:

MCP server for analyzing Architectural Decision Records and project architecture

124 lines 4 kB
/** * ADRs Discovered Resource - ADR discovery and summary * URI Pattern: adr://adrs/discovered */ import { URLSearchParams } from 'url'; import { ResourceGenerationResult } from './index.js'; export interface AdrsDiscoveredData { directory: string; totalAdrs: number; adrs: Array<{ filename: string; title: string; status: string; date?: string; path: string; number?: string; category?: string; tags?: string[]; }>; summary: { byStatus: Record<string, number>; byCategory: Record<string, number>; }; recommendations: string[]; timestamp: string; } /** * Generate ADRs discovered resource with discovery results and summary. * * Discovers and catalogs all Architectural Decision Records (ADRs) in a project: * - Scans configured ADR directory for decision records * - Extracts metadata (title, status, date, category) * - Generates summary statistics by status and category * - Provides recommendations for ADR management * * **URI Pattern:** `adr://adrs/discovered` * * **Query Parameters:** * - `projectPath`: Override project root path (default: process.cwd()) * - `adrDirectory`: Override ADR directory (default: docs/adrs) * - `includeContent`: Include full ADR content (default: false) * - `includeTimeline`: Include timeline analysis (default: false) * * @param params - URL path parameters (none for this resource) * @param searchParams - URL query parameters for customization * * @returns Promise resolving to resource generation result containing: * - data: ADR discovery results with summaries * - contentType: "application/json" * - lastModified: ISO timestamp of generation * - cacheKey: Unique identifier "adrs-discovered" or "adrs-discovered:{projectPath}" * - ttl: Cache duration (120 seconds / 2 minutes) * - etag: Entity tag for cache validation * * @throws {McpAdrError} When: * - RESOURCE_NOT_FOUND: ADR directory not found or inaccessible * - RESOURCE_GENERATION_ERROR: ADR discovery or parsing fails * * @example * ```typescript * // Discover ADRs in default location * const discovered = await generateAdrsDiscoveredResource( * {}, * new URLSearchParams() * ); * * console.log(`Found ${discovered.data.totalAdrs} ADRs`); * console.log(`Accepted: ${discovered.data.summary.byStatus.accepted}`); * console.log(`Proposed: ${discovered.data.summary.byStatus.proposed}`); * * // Discover ADRs in custom location * const custom = await generateAdrsDiscoveredResource( * {}, * new URLSearchParams('projectPath=/custom/path&adrDirectory=decisions') * ); * * // Expected output structure: * { * data: { * directory: "/project/docs/adrs", * totalAdrs: 25, * adrs: [ * { * filename: "001-use-postgresql.md", * title: "Use PostgreSQL for primary database", * status: "accepted", * date: "2025-01-15", * path: "/project/docs/adrs/001-use-postgresql.md", * number: "001", * category: "database", * tags: ["postgresql", "database"] * }, * ... * ], * summary: { * byStatus: { * accepted: 20, * proposed: 3, * deprecated: 2 * }, * byCategory: { * database: 5, * api: 8, * infrastructure: 7, * security: 5 * } * }, * recommendations: [ * "Consider reviewing deprecated ADRs", * "3 proposed ADRs need decisions" * ], * timestamp: "2025-12-16T04:30:00.000Z" * }, * contentType: "application/json", * cacheKey: "adrs-discovered", * ttl: 120 * } * ``` * * @since v2.2.0 * @see {@link discoverAdrsInDirectory} for ADR discovery logic */ export declare function generateAdrsDiscoveredResource(_params: Record<string, string>, searchParams: URLSearchParams): Promise<ResourceGenerationResult>; //# sourceMappingURL=adrs-discovered-resource.d.ts.map