Skip to main content
Glama
90barricade93

MSFS SDK MCP Server

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
NameRequiredDescriptionDefault
queryYesNatural language query (e.g., "Search livery op msfs sdk")

Implementation Reference

  • 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}`); }
  • 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 }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/90barricade93/MSFS-SDK-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server