UNPKG

@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
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; }