apple-hig-mcp
Version:
High-performance MCP server providing instant access to Apple's Human Interface Guidelines via hybrid static/dynamic content delivery
103 lines • 3.1 kB
TypeScript
/**
* Static HIG Content Provider
*
* Loads pre-generated HIG content from static files with fallback to live scraping.
*/
import type { HIGResource, ApplePlatform, HIGCategory, SearchResult } from './types.js';
interface StaticContentMetadata {
lastUpdated: string;
totalSections: number;
sectionsByPlatform: Record<ApplePlatform, number>;
sectionsByCategory: Record<HIGCategory, number>;
totalSize: number;
generationDuration: number;
}
interface StaticSection {
title: string;
platform: ApplePlatform;
category: HIGCategory;
url: string;
id: string;
lastUpdated: string;
content: string;
}
export declare class HIGStaticContentProvider {
private contentDir;
private searchIndex;
private crossReferences;
private metadata;
private contentCache;
private availabilityCache;
private enhancedSearch;
constructor(contentDir?: string);
/**
* Get content directory for production environments
*/
private getProductionContentDir;
/**
* Initialize the static content provider
*/
initialize(): Promise<boolean>;
/**
* Check if static content is available (cached for performance)
*/
isAvailable(): Promise<boolean>;
/**
* Get content age in milliseconds
*/
getContentAge(): number | null;
/**
* Check if content is stale (older than 6 months)
*/
isContentStale(): boolean;
/**
* List all available resources
*/
listResources(): Promise<HIGResource[]>;
/**
* Get content for a specific resource
*/
getResource(uri: string): Promise<HIGResource | null>;
/**
* Search static content with enhanced keyword matching and synonym expansion
*/
searchContent(query: string, platform?: ApplePlatform, category?: HIGCategory, limit?: number): Promise<SearchResult[]>;
/**
* Get synonym expansions for search terms
*/
private expandQueryWithSynonyms;
/**
* Simple keyword search on static content (fallback when advanced search fails)
*/
keywordSearchContent(query: string, platform?: ApplePlatform, category?: HIGCategory, limit?: number): Promise<SearchResult[]>;
/**
* Get a specific section by ID
*/
getSection(sectionId: string): Promise<StaticSection | null>;
/**
* Get related sections for a given section ID
*/
getRelatedSections(sectionId: string): string[];
/**
* Get generation metadata
*/
getMetadata(): StaticContentMetadata | null;
private loadMetadata;
private loadSearchIndex;
private loadCrossReferences;
private getCategoryCount;
private parseResourceURI;
private getPlatformContent;
private getCategoryContent;
private getUpdatesContent;
private getSectionsForPlatform;
private getSectionsForCategory;
private generateFilename;
private parseMarkdownFile;
private getAttributionText;
private stringToPlatform;
private stringToCategory;
private formatCategoryName;
}
export {};
//# sourceMappingURL=static-content.d.ts.map