@siva-sub/mcp-public-transport
Version:
A Model Context Protocol server for Singapore transport data with real-time information and routing
136 lines (135 loc) • 4.6 kB
TypeScript
import { BaseTool } from '../base.js';
import { OneMapService } from '../../services/onemap.js';
import { PostalCodeService } from '../../services/postalCode.js';
import { SingaporeTimeService } from '../../services/time.js';
import { FuzzySearchService } from '../../services/fuzzySearch.js';
export declare class LocationSearchTool extends BaseTool {
private oneMapService;
private postalCodeService;
private timeService;
private fuzzySearchService?;
constructor(oneMapService: OneMapService, postalCodeService: PostalCodeService, timeService: SingaporeTimeService, fuzzySearchService?: FuzzySearchService | undefined);
getDefinitions(): ({
name: string;
description: string;
inputSchema: {
type: "object";
properties: {
query: {
type: string;
description: string;
};
maxResults: {
type: string;
description: string;
minimum: number;
maximum: number;
default: number;
};
enableFuzzySearch: {
type: string;
description: string;
default: boolean;
};
includeNearbyInfo: {
type: string;
description: string;
default: boolean;
};
userLocation: {
type: string;
description: string;
properties: {
latitude: {
type: string;
};
longitude: {
type: string;
};
};
};
postalCode?: undefined;
latitude?: undefined;
longitude?: undefined;
radius?: undefined;
includeNearbyAmenities?: undefined;
};
required: string[];
};
} | {
name: string;
description: string;
inputSchema: {
type: "object";
properties: {
postalCode: {
type: "string";
description: string;
pattern: string;
};
includeNearbyInfo: {
type: "boolean";
description: string;
default: boolean;
};
query?: undefined;
maxResults?: undefined;
enableFuzzySearch?: undefined;
userLocation?: undefined;
latitude?: undefined;
longitude?: undefined;
radius?: undefined;
includeNearbyAmenities?: undefined;
};
required: string[];
};
} | {
name: string;
description: string;
inputSchema: {
type: "object";
properties: {
latitude: {
type: "number";
description: string;
minimum: number;
maximum: number;
};
longitude: {
type: "number";
description: string;
minimum: number;
maximum: number;
};
radius: {
type: "number";
description: string;
minimum: number;
maximum: number;
default: number;
};
includeNearbyAmenities: {
type: "boolean";
description: string;
default: boolean;
};
query?: undefined;
maxResults?: undefined;
enableFuzzySearch?: undefined;
includeNearbyInfo?: undefined;
userLocation?: undefined;
postalCode?: undefined;
};
required: string[];
};
})[];
canHandle(toolName: string): boolean;
execute(toolName: string, args: any): Promise<any>;
private searchLocation;
private resolvePostalCode;
private reverseGeocode;
private convertOneMapToLocationResult;
private determineLocationTypes;
private generateSearchSuggestions;
private calculateDistance;
}