natural_language_query
Process natural language queries to search Microsoft Flight Simulator SDK documentation, enabling users to find information using conversational language.
Instructions
Process natural language queries like "Search livery op msfs sdk"
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural language query (e.g., "Search livery op msfs sdk") |
Implementation Reference
- src/index.ts:149-182 (handler)Main handler logic for the 'natural_language_query' tool. Parses the natural language query using NaturalLanguageService and dispatches to the corresponding tool handler.case 'natural_language_query': if (!args?.query) { throw new Error('Query parameter is required'); } // Parse the natural language query const parsedCommand = NaturalLanguageService.parse(String(args.query)); if (!parsedCommand) { throw new Error(`Could not parse natural language query: ${args.query}`); } // Execute the parsed command switch (parsedCommand.tool) { case 'search_msfs_docs': return await this.documentationService.searchDocumentation( String(parsedCommand.arguments.query), String(parsedCommand.arguments.category || 'all'), Number(parsedCommand.arguments.limit || 10) ); case 'get_doc_content': return await this.documentationService.getDocumentationContent( String(parsedCommand.arguments.url), parsedCommand.arguments.section ? String(parsedCommand.arguments.section) : undefined ); case 'list_categories': return await this.documentationService.listCategories(); default: throw new Error(`Unknown parsed tool: ${parsedCommand.tool}`); }
- src/index.ts:90-102 (schema)Input schema definition for the 'natural_language_query' tool, registered in the ListTools response.name: 'natural_language_query', description: 'Process natural language queries like "Search livery op msfs sdk"', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Natural language query (e.g., "Search livery op msfs sdk")', } }, required: ['query'] } },
- src/index.ts:34-120 (registration)Registration of the tool list including 'natural_language_query' in the ListToolsRequestHandler.this.server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ { name: 'search_msfs_docs', description: 'Search MSFS SDK documentation for specific topics', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search query for MSFS SDK documentation', }, category: { type: 'string', description: 'Optional category filter (e.g., "contents", "index", "glossary")', enum: ['contents', 'index', 'glossary', 'all'] }, limit: { type: 'number', description: 'Maximum number of results to return', minimum: 1, maximum: 20, default: 10 } }, required: ['query'] } }, { name: 'get_doc_content', description: 'Get detailed content from a specific MSFS SDK documentation page', inputSchema: { type: 'object', properties: { url: { type: 'string', description: 'URL of the documentation page to retrieve', }, section: { type: 'string', description: 'Specific section to extract (e.g., "overview", "examples", "api-reference")', } }, required: ['url'] } }, { name: 'list_categories', description: 'List all available MSFS SDK documentation categories', inputSchema: { type: 'object', properties: {} } }, { name: 'natural_language_query', description: 'Process natural language queries like "Search livery op msfs sdk"', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Natural language query (e.g., "Search livery op msfs sdk")', } }, required: ['query'] } }, { name: 'list_category_items', description: 'Returns all items for a given documentation category', inputSchema: { type: 'object', properties: { category: { type: 'string', description: 'Category to list items from (index, contents, or glossary)', enum: ['index', 'contents', 'glossary'] } }, required: ['category'] } } ], }; });
- Core parsing logic for natural language queries, mapping phrases to tool names and arguments using regex patterns.static parse(command: string): { tool: string; arguments: any } | null { // Match "Search [term] op msfs sdk" const searchPattern = /^Search\s+(.+?)\s+op\s+msfs\s+sdk\s*$/i; const match = command.match(searchPattern); if (match) { const query = match[1]; return { tool: "search_msfs_docs", arguments: { query: query, category: "all", limit: 5 } }; } // Match "Get content for [url]" const contentPattern = /^Get\s+content\s+for\s+(https?:\/\/.+)$/i; const contentMatch = command.match(contentPattern); if (contentMatch) { const url = contentMatch[1]; return { tool: "get_doc_content", arguments: { url: url } }; } // Match "List categories" if (command.toLowerCase() === "list categories") { return { tool: "list_categories", arguments: {} }; } // Match "Show categories" if (command.toLowerCase() === "show categories") { return { tool: "list_categories", arguments: {} }; } // Match "Search [term] in [category]" const categorySearchPattern = /^Search\s+(.+?)\s+in\s+(aircraft|scenery|simvars|panels|missions|packaging|tools|general)$/i; const categoryMatch = command.match(categorySearchPattern); if (categoryMatch) { const query = categoryMatch[1]; const category = categoryMatch[2].toLowerCase(); return { tool: "search_msfs_docs", arguments: { query: query, category: category, limit: 5 } }; } return null; // Onbekend commando }