@access-mcp/software-discovery
Version:
ACCESS-CI Software Discovery Service MCP server
229 lines (228 loc) • 6.79 kB
TypeScript
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;
}