UNPKG

ludus-mcp

Version:

MCP server for managing Ludus cybersecurity training environments through natural language commands

110 lines (106 loc) 3.87 kB
import { z } from 'zod'; import fs from 'fs/promises'; import path from 'path'; import os from 'os'; const LudusNetworkingSchema = z.object({ help: z.boolean().optional().default(false).describe('Show help information') }); export function createLudusNetworkingDocsReadTool(logger, ludusCliWrapper) { return { name: 'ludus_networking_docs_read', description: `**NETWORKING DOCUMENTATION** - Direct Access to Complete Ludus Networking Documentation **DIRECT ACCESS TO:** - Network topology configurations - VLAN and subnet configurations - Network interface setup - Firewall and routing rules - Inter-VM communication patterns - Network isolation strategies - DNS and DHCP configurations **SIMPLIFIED FUNCTIONALITY:** - Always returns the complete networking documentation - No search filtering - reads entire document - Immediate access to all networking information **PERFECT FOR:** - Range planning (ludus_range_planner step 3) - Network architecture design - Understanding connectivity requirements - Troubleshooting network issues **TARGET**: Focuses specifically on networking-related documentation files.`, inputSchema: { type: 'object', properties: { help: { type: 'boolean', default: false, description: 'Show help information' } }, required: [] }, }; } export async function handleLudusNetworkingDocsRead(args) { try { const { help = false } = args; if (help) { return { content: [{ type: 'text', text: 'ludus_networking_docs_read - Read complete Ludus networking documentation\n\nThis tool reads the entire networking documentation and returns all networking configuration information.\nNo parameters required - always returns complete documentation.' }] }; } // Always read the complete networking documentation const homeDir = os.homedir(); const docsDir = path.join(homeDir, '.ludus-mcp', 'docs'); try { const networkingContent = await readNetworkingDocs(docsDir); return { content: [{ type: 'text', text: `# Complete Ludus Networking Documentation\n\n${networkingContent}` }] }; } catch (error) { return { content: [{ type: 'text', text: `Error reading networking documentation: ${error instanceof Error ? error.message : 'Unknown error'}\n\nThe documentation may not be downloaded yet. Try running the server startup process to download docs.` }] }; } } catch (error) { return { content: [{ type: 'text', text: `Error in ludus_networking_docs_read: ${error instanceof Error ? error.message : 'Unknown error'}` }] }; } } async function readNetworkingDocs(docsDir) { const networkingFiles = [ 'networking.md', 'configuration/networking.md', 'quick-start/networking.md' ]; let allContent = ''; for (const file of networkingFiles) { const filePath = path.join(docsDir, file); try { const content = await fs.readFile(filePath, 'utf-8'); allContent += `\n## From ${file}\n\n${content}\n`; } catch (error) { // File doesn't exist, continue } } if (!allContent) { throw new Error('No networking documentation files found'); } return allContent; } //# sourceMappingURL=ludusNetworkingSearch.js.map