UNPKG

@access-mcp/software-discovery

Version:

ACCESS-CI Software Discovery Service MCP server

229 lines (228 loc) 6.79 kB
import { BaseAccessServer } from "@access-mcp/shared"; import { AxiosInstance } from "axios"; export declare class SoftwareDiscoveryServer extends BaseAccessServer { private _sdsClient?; constructor(); /** * Normalizes resource IDs to handle legacy XSEDE format and domain variations. * This provides backward compatibility while the SDS API migrates to ACCESS-CI format. * * @param resourceId - The resource ID to normalize * @returns The normalized resource ID in ACCESS-CI format */ private normalizeResourceId; protected get sdsClient(): AxiosInstance; /** * Makes a query to the new SDS API v1 */ private queryApi; protected getTools(): ({ name: string; description: string; inputSchema: { type: string; properties: { query: { type: string; description: string; }; resource: { type: string; description: string; }; fuzzy: { type: string; description: string; default: boolean; }; include_ai_metadata: { type: string; description: string; default: boolean; }; limit: { type: string; description: string; default: number; }; software_name?: undefined; software_names?: undefined; resources?: undefined; }; examples: ({ name: string; arguments: { query: string; limit: number; resource?: undefined; }; } | { name: string; arguments: { query: string; resource: string; limit?: undefined; }; } | { name: string; arguments: { query: string; resource: string; limit: number; }; })[]; required?: undefined; }; } | { name: string; description: string; inputSchema: { type: string; properties: { resource: { type: string; description: string; }; include_ai_metadata: { type: string; description: string; default: boolean; }; limit: { type: string; description: string; default: number; }; query?: undefined; fuzzy?: undefined; software_name?: undefined; software_names?: undefined; resources?: undefined; }; examples: ({ name: string; arguments: { limit: number; resource?: undefined; }; } | { name: string; arguments: { resource: string; limit: number; }; })[]; required?: undefined; }; } | { name: string; description: string; inputSchema: { type: string; properties: { software_name: { type: string; description: string; }; resource: { type: string; description: string; }; fuzzy: { type: string; description: string; default: boolean; }; query?: undefined; include_ai_metadata?: undefined; limit?: undefined; software_names?: undefined; resources?: undefined; }; required: string[]; examples: ({ name: string; arguments: { software_name: string; resource?: undefined; }; } | { name: string; arguments: { software_name: string; resource: string; }; })[]; }; } | { name: string; description: string; inputSchema: { type: string; properties: { software_names: { type: string; items: { type: string; }; description: string; }; resources: { type: string; items: { type: string; }; description: string; }; query?: undefined; resource?: undefined; fuzzy?: undefined; include_ai_metadata?: undefined; limit?: undefined; software_name?: undefined; }; required: string[]; examples: ({ name: string; arguments: { software_names: string[]; resources?: undefined; }; } | { name: string; arguments: { software_names: string[]; resources: string[]; }; })[]; }; })[]; protected getResources(): { uri: string; name: string; description: string; mimeType: string; }[]; protected handleToolCall(request: any): Promise<{ content: { type: string; text: string; }[]; }>; protected handleResourceRead(request: any): Promise<{ contents: { uri: any; mimeType: string; text: string; }[]; }>; /** * Transform raw API response to enhanced format */ private transformSoftwareItem; private searchSoftware; private listAllSoftware; private getSoftwareDetails; private compareSoftwareAvailability; private discoverFilterValues; }