Skip to main content
Glama
documentation.py4.09 kB
"""Documentation generation FastMCP tools for Ludus MCP server.""" from typing import Any from fastmcp import FastMCP from ludus_mcp.core.client import LudusAPIClient from ludus_mcp.server.handlers.documentation import DocumentationHandler from ludus_mcp.server.tools.utils import LazyHandlerRegistry, format_tool_response def create_documentation_tools(client: LudusAPIClient) -> FastMCP: """Create documentation generation tools. Args: client: Ludus API client Returns: FastMCP instance with documentation tools registered """ mcp = FastMCP("Documentation") registry = LazyHandlerRegistry(client) # ==================== DOCUMENTATION GENERATION TOOLS ==================== @mcp.tool() async def generate_range_documentation( format: str = "markdown", include_network_diagram: bool = True, include_credentials: bool = False, user_id: str | None = None ) -> dict: """Generate comprehensive documentation for the range. Args: format: Documentation format (markdown, html, pdf) include_network_diagram: Include network topology diagram include_credentials: Include credentials in documentation user_id: Optional user ID (admin only) Returns: Documentation content or download link """ handler = registry.get_handler("documentation", DocumentationHandler) result = await handler.generate_range_documentation( format, include_network_diagram, include_credentials, user_id ) return format_tool_response(result) @mcp.tool() async def get_attack_path_documentation( scenario_key: str | None = None, user_id: str | None = None ) -> dict: """Generate attack path documentation for a scenario. Args: scenario_key: Optional scenario key (defaults to current deployment) user_id: Optional user ID (admin only) Returns: Attack path documentation with techniques and mitigations """ handler = registry.get_handler("documentation", DocumentationHandler) result = await handler.get_attack_path_documentation(scenario_key, user_id) return format_tool_response(result) @mcp.tool() async def export_lab_guide( scenario_key: str | None = None, format: str = "markdown", include_solutions: bool = False, user_id: str | None = None ) -> dict: """Export lab guide for training purposes. Args: scenario_key: Optional scenario key (defaults to current deployment) format: Export format (markdown, html, pdf) include_solutions: Include solution steps user_id: Optional user ID (admin only) Returns: Lab guide content or download link """ handler = registry.get_handler("documentation", DocumentationHandler) result = await handler.export_lab_guide( scenario_key, format, include_solutions, user_id ) return format_tool_response(result) @mcp.tool() async def create_scenario_playbook( scenario_key: str, title: str, description: str, objectives: list[str], steps: list[dict[str, Any]], user_id: str | None = None ) -> dict: """Create a scenario playbook for training. Args: scenario_key: Scenario identifier title: Playbook title description: Playbook description objectives: Learning objectives steps: List of playbook steps with instructions user_id: Optional user ID (admin only) Returns: Created playbook information """ handler = registry.get_handler("documentation", DocumentationHandler) result = await handler.create_scenario_playbook( scenario_key, title, description, objectives, steps, user_id ) return format_tool_response(result) return mcp

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/tjnull/Ludus-FastMCP'

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