Skip to main content
Glama
tenzir

Tenzir MCP Server

Official
by tenzir

ocsf_get_classes

Retrieve OCSF event classes and descriptions for a specific schema version to identify suitable mappings for cybersecurity log data.

Instructions

Get all OCSF event classes and their descriptions for a specific schema version.

Use this tool to:

  • Browse available OCSF event classes before creating a mapping

  • Identify which class best matches your log data

  • Understand the purpose and scope of each event class

Once you identify a candidate class, use ocsf_get_class to see its complete schema with all fields and attributes.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
versionYesOCSF schema version (e.g., '1.6.0')

Implementation Reference

  • The @mcp.tool decorated async handler function that loads the OCSF schema, extracts event classes with descriptions, formats as markdown and structured JSON, with comprehensive error handling.
    @mcp.tool( name="ocsf_get_classes", tags={"ocsf"}, annotations={ "title": "List OCSF event classes", "readOnlyHint": True, "idempotentHint": True, "openWorldHint": False, }, ) async def ocsf_get_classes( version: Annotated[str, Field(description="OCSF schema version (e.g., '1.6.0')")], ) -> ToolResult: """Get all OCSF event classes and their descriptions for a specific schema version. Use this tool to: - Browse available OCSF event classes before creating a mapping - Identify which class best matches your log data - Understand the purpose and scope of each event class Once you identify a candidate class, use `ocsf_get_class` to see its complete schema with all fields and attributes.""" try: schema = load_ocsf_schema(version) # Extract event classes from the schema event_classes = {} if "classes" in schema: for class_id, class_data in schema["classes"].items(): class_name = class_data.get("name", class_id) description = class_data.get("description", "No description available") event_classes[class_name] = description # Format as markdown list markdown_lines = [f"## OCSF Event Classes (v{version})\n"] for name, desc in sorted(event_classes.items()): markdown_lines.append(f"- **{name}**: {desc}") return ToolResult( content="\n".join(markdown_lines), # Markdown list structured_content={"classes": event_classes, "version": version}, # JSON ) except FileNotFoundError: error_msg = f"OCSF schema version {version} not found" logger.error(error_msg) return ToolResult(content=error_msg, structured_content={"error": error_msg}) except json.JSONDecodeError as e: error_msg = f"Failed to parse OCSF schema for version {version}: {e}" logger.error(error_msg) return ToolResult(content=error_msg, structured_content={"error": error_msg}) except Exception as e: error_msg = f"Failed to get OCSF event classes for version {version}: {e}" logger.error(error_msg) return ToolResult(content=error_msg, structured_content={"error": error_msg})
  • Helper utility to load and parse the OCSF schema JSON file for a given version from package resources.
    def load_ocsf_schema(version: str) -> dict[str, Any]: """ Load and parse an OCSF schema for the specified version. Args: version: The OCSF schema version to load Returns: Dictionary containing the parsed OCSF schema Raises: FileNotFoundError: If the schema version is not found json.JSONDecodeError: If the schema JSON is invalid Exception: For other loading errors """ schema_text = files("tenzir_mcp.data.ocsf").joinpath(f"{version}.json").read_text() schema: dict[str, Any] = json.loads(schema_text) return schema
  • Imports the ocsf_get_classes tool function for exposure via the package __init__.
    from .ocsf_get_classes import ocsf_get_classes
  • Input schema definition using Pydantic Annotated and Field for the version parameter.
    version: Annotated[str, Field(description="OCSF schema version (e.g., '1.6.0')")], ) -> ToolResult:

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/tenzir/mcp'

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