Skip to main content
Glama
vibeMK
by chexma

vibeMK πŸš€

CheckMK Monitoring via LLM - Professional MCP Server

Python 3.10+ CheckMK 2.3+ License: GPL v3 MCP Compatible MCP SDK Code style: black Typed

🎯 Overview

vibeMK enables complete management of your CheckMK monitoring environment directly through LLM interfaces using natural language. This project is in the alpha stage and under development. I accept no liability for any damage resulting from the use of this software.

Related MCP server: thruk-mcp

vibeMK - Current Features

Live Monitoring βœ…

  • Host Status: Real-time host state (UP/DOWN/UNREACHABLE) with hard state detection

  • Service Status: Live service monitoring (OK/WARNING/CRITICAL/UNKNOWN)

  • Performance Metrics: Retrieve metrics data with automatic discovery

  • Current Problems: Auto-detect all active monitoring issues

Downtime Management βœ…

  • Schedule Downtimes: Create host/service downtimes with flexible duration parsing ("2h", "1h30m")

  • List & Filter: View all downtimes or filter for active ones only

Problem Management βœ…

  • Acknowledge Problems: Set acknowledgements for host/service issues (sticky/persistent options)

  • List Acknowledgements: View all current problem acknowledgements

  • Remove Acknowledgements: Delete by pattern or individual removal

Configuration Management βœ…

  • Folders: Create/delete monitoring folder structures

  • Rules: Create rules for 2000+ CheckMK ruleset types with proper format handling

  • Time Periods: Create custom notification schedules (business hours, 24/7, etc.)

  • Host Groups: Organize hosts into logical groups

User & Security βœ…

  • User Accounts: Create/manage user accounts with role assignment

  • Password Management: Set passwords with policy enforcement

  • Contact Groups: Manage notification groups

  • Host/Service Tags: Comprehensive tagging system

πŸš€ Quick Start

1. pipx install vibemk   (or: uv tool install vibemk, or pip install vibemk into a virtual environment)
2. Edit the configuration file of your LLM Client, e.g. Claude Desktop - claude_desktop_config.json (See examples)
3. Start your LLM Client
4. CheckMK automation user setup (Administrator permissions or a customized role if changes are to be made, read-only if only analyses are to be performed.)
5. voila - configure checkmk using natural language

Complete Installation Guide: See INSTALL.md for detailed step-by-step instructions. Upgrading from 0.3.x or older: git pull is not enough, see Upgrading. More Examples: See examples/llm_configs/ and INSTALL.md
Visual Examples: See examples/Screenshots/ for example prompts and usage patterns

πŸ”Œ Running it

Locally (default). The LLM client starts vibeMK itself over stdio. Nothing to host, nothing to secure -- the client already owns the process.

Centrally. One instance can serve many clients over Streamable HTTP, so they need neither Python nor vibeMK installed:

export VIBEMK_HTTP_TOKEN="$(python -c 'import secrets; print(secrets.token_urlsafe(32))')"
vibemk --transport http --port 8765

Clients connect to http://<host>:8765/mcp and send Authorization: Bearer <token>. The token is mandatory, and vibeMK binds to localhost unless told otherwise: the CheckMK account lives on the server, so whoever reaches the port inherits it. See INSTALL.md for what that means before you expose it.

πŸ’‘ Practical Prompt Examples

# Add new server
"Create a new host 'web-server-05' in folder 'Servers' with IP 192.168.1.105 and discover all services"

# Schedule maintenance
"Schedule a 2-hour downtime for the service Check_MK on 'cephnode01' starting at 22:00 tomorrow for 'Debian Updates'"

# Downtimes 
"show me all current scheduled downtimes."

# Metric analysis
"Compare the β€œresponse_time” metric of the β€œHTTPS Webservice” service of the two hosts www.google.de and www.heise.de for the last ten minutes."

# Ruleset analysis
"analyze and compare the rulesets "Filesystems (used space and growth)" and see, if there are duplicates or if rules can be combined."

Advanced Usage: See examples/ExamplePrompts.md for complex scenarios and tips

πŸ“š Checkmk version compatibility

CheckMK Version

Compatibility

Features

2.5.x

βœ… Full

All features available, tested against 2.5.0p14 (Raw and Ultimate)

2.4.x

βœ… Full

All features available

2.3.x

βœ… Full

All features available

2.2.x and older

πŸ”΄ Unsupported

Checkmk Edition Support

  • Raw Edition: Fully supported, including the BI and Event Console endpoints

  • Enterprise Edition: Adds the Agent Bakery and custom graphs

  • Cloud Edition: All Enterprise features

Edition availability follows the operationId of each endpoint in the Checkmk OpenAPI document: cmk.gui.cee.* is Enterprise-only, everything else is served by every edition including Raw.

Security considerations

  • To let a model look without touching, start vibeMK read-only: --read-only or VIBEMK_READ_ONLY=1. Only the tools that read are offered, and a call to any other is refused before it reaches CheckMK

  • Be aware of the potential security risks when you unleash AI on your checkmk

  • Use at your own risk

  • I accept no responsibility for actions performed by an AI

πŸ“„ License

This project is licensed under the GNU General Public License v3.0.


Happy Monitoring with CheckMK and LLMs! πŸŽ‰

Available Tools

111 tools
vibemk_acknowledge_problemC

βœ… Acknowledge problem - Acknowledge host or service problem

Inputs: comment (required), host_name (required), acknowledge_type (required), service_description.

vibemk_activate_changesC

πŸ”„ Activate changes - Deploy pending configuration changes

Inputs: sites, force_foreign_changes.

vibemk_add_commentB

πŸ’¬ Add comment - Add comment to host or service

Inputs: comment (required), host_name (required), comment_type (required), persistent, +1 more.

vibemk_add_user_to_groupC

πŸ‘₯ Add user to contact group - Assign user to contact group

Inputs: username (required), group_name (required).

vibemk_bulk_create_hostsB

βž• Bulk create hosts - Create multiple hosts in a single operation

Inputs: entries (required), bake_agent.

vibemk_bulk_create_service_groupsB

πŸ”§ Bulk create service groups - Create multiple service groups at once

Inputs: entries (required).

vibemk_bulk_delete_service_groupsA

πŸ—‘οΈ Bulk delete service groups - Delete multiple service groups at once

Inputs: entries (required).

vibemk_bulk_update_hostsC

πŸ”„ Bulk update hosts - Update multiple hosts at once

Inputs: entries (required).

vibemk_bulk_update_service_groupsC

πŸ“ Bulk update service groups - Update multiple service groups at once

Inputs: entries (required).

vibemk_check_host_downtime_statusB

πŸ” Check host downtime status - Distinguish between host-level and service-level downtimes

Inputs: host_name (required).

vibemk_compare_host_statesB

πŸ”„ Compare host states - Compare current vs desired host configuration

Inputs: host_name (required), desired_attributes (required).

vibemk_create_cluster_hostB

🏒 Create cluster host - Create a cluster host with multiple nodes

Inputs: nodes (required), host_name (required), folder, attributes.

vibemk_create_contact_groupB

βž• Create contact group - Add new contact group

Inputs: name (required), alias (required), members.

vibemk_create_folderB

βž• Create folder - Add new folder to the structure

Inputs: title (required), folder (required), parent.

vibemk_create_hostC

βž• Create host(s) - Add one or multiple hosts to monitoring (automatically uses bulk API for multiple hosts)

Inputs: hosts, folder, host_name, attributes, +1 more.

vibemk_create_host_contactgroup_ruleB

πŸ“ž Create host contact group rule - Assign contact groups to hosts based on conditions

Inputs: contact_groups (required), folder, comment, host_conditions.

vibemk_create_host_groupA

βž• Create host group - Add new host group

Inputs: name (required), alias (required).

vibemk_create_host_hostgroup_ruleA

🏠 Create host group rule - Assign hosts to host groups based on conditions

Inputs: host_groups (required), folder, comment, host_conditions.

vibemk_create_host_tagB

🏷️ Create host tag - Add new host tag group

Inputs: tags (required), title (required), tag_id (required), help, +1 more.

vibemk_create_passwordC

πŸ” Create password - Store new password securely

Inputs: ident (required), password (required), owner, title, +3 more.

vibemk_create_ruleC

βž• Create rule - Add new monitoring rule

Inputs: rule_config (required), ruleset_name (required), folder, comment, +2 more.

vibemk_create_service_groupC

πŸ”§ Create service group - Create a new service group for organizing services

Inputs: name (required), alias (required).

vibemk_create_timeperiodB

⏰ Create time period - Add new time period

Inputs: name (required), active_time_ranges (required), alias, exclude, +1 more.

vibemk_create_userB

πŸ‘€ Create user - Add new CheckMK user

Inputs: fullname (required), username (required), email, roles, +2 more.

vibemk_create_user_roleA

βž• Create user role - Clone an existing role to create a new custom role

Inputs: new_role_id (required), base_role_id (required), new_alias.

vibemk_debug_api_endpointsB

πŸ” Debug API endpoints - Analyze available CheckMK API endpoints and their structure

Inputs: no named parameters.

vibemk_debug_checkmk_connectionB

πŸ” CheckMK connection diagnostics - Test server connectivity and API access

Inputs: no named parameters.

vibemk_debug_permissionsB

πŸ” Debug permissions - Check automation user permissions for API access

Inputs: no named parameters.

vibemk_debug_url_detectionB

πŸ” Debug URL detection - Show all tested URL patterns and results

Inputs: no named parameters.

vibemk_delete_contact_groupB

πŸ—‘οΈ Delete contact group - Remove contact group

Inputs: name (required).

vibemk_delete_downtimeA

πŸ—‘οΈ Delete downtime - Cancel a scheduled or active downtime by ID

Inputs: downtime_id (required).

vibemk_delete_folderB

πŸ—‘οΈ Delete folder - Remove folder (with options for recursive deletion)

Inputs: folder (required), delete_mode.

vibemk_delete_hostB

πŸ—‘οΈ Delete host - Remove host from monitoring

Inputs: host_name (required).

vibemk_delete_host_groupC

πŸ—‘οΈ Delete host group - Remove host group

Inputs: name (required).

vibemk_delete_host_tagB

πŸ—‘οΈ Delete host tag - Remove host tag group

Inputs: tag_id (required), repair.

vibemk_delete_passwordC

πŸ—‘οΈ Delete password - Remove stored password

Inputs: ident (required).

vibemk_delete_ruleA

πŸ—‘οΈ Delete rule - Remove monitoring rule

Inputs: rule_id (required).

vibemk_delete_service_groupB

πŸ—‘οΈ Delete service group - Remove a service group from CheckMK

Inputs: name (required).

vibemk_delete_timeperiodC

πŸ—‘οΈ Delete time period - Remove time period

Inputs: name (required).

vibemk_delete_userA

πŸ—‘οΈ Delete user - Remove CheckMK user

Inputs: username (required).

vibemk_delete_user_roleA

πŸ—‘οΈ Delete user role - Remove a custom user role (built-in roles cannot be deleted)

Inputs: role_id (required).

vibemk_discover_servicesD

πŸ” Discover services - Start enhanced service discovery for hosts

Inputs: mode, hosts, bulk_size, host_name, +2 more.

vibemk_find_host_grouping_rulesetsB

πŸ” Find host grouping rulesets - Discover available rulesets for host group and contact group assignment

Inputs: no named parameters.

vibemk_get_active_downtimesA

πŸ”΄ Get active downtimes - Show only currently active downtimes that are suppressing alerts

Inputs: host_name.

vibemk_get_bulk_discovery_statusA

πŸ“Š Get bulk discovery status - Show progress of a bulk discovery job

Inputs: job_id (required).

vibemk_get_checkmk_hostsB

πŸ–₯️ List hosts - Show all monitored hosts with optional folder filtering

Inputs: folder, effective_attributes.

vibemk_get_checkmk_servicesB

πŸ”§ List services - Show services with optional host filtering

Inputs: host_name.

vibemk_get_checkmk_versionA

πŸ“‹ Get CheckMK version - Show version information and system details

Inputs: no named parameters.

vibemk_get_commentsC

πŸ’¬ List comments - Show host/service comments

Inputs: host_name, service_description.

vibemk_get_contact_groupsA

πŸ‘₯ List contact groups - Show contact groups

Inputs: no named parameters.

vibemk_get_current_problemsC

🚨 Get current problems - Show all hosts and services with problems

Inputs: host_name.

vibemk_get_custom_graphC

πŸ“Š Get custom graph - Retrieve predefined custom graph data

Inputs: custom_graph_id (required), reduce, time_range.

vibemk_get_discovery_background_jobC

πŸ“‹ Get discovery background job - Show last discovery job status on a host

Inputs: host_name (required).

vibemk_get_discovery_statusC

πŸ“Š Get discovery status - Show current service discovery results for a host

Inputs: host_name (required).

vibemk_get_downtimesB

⏰ List downtimes - Show scheduled downtimes

Inputs: host_name.

vibemk_get_example_rule_structuresA

πŸ“š Get example rule structures - Show example JSON structures for host grouping rules

Inputs: no named parameters.

vibemk_get_folder_hostsA

πŸ–₯️ Get folder hosts - List all hosts in a specific folder

Inputs: folder (required).

vibemk_get_foldersB

πŸ“ List folders - Show folder structure with optional parent filtering

Inputs: parent.

vibemk_get_host_configC

βš™οΈ Get host configuration - Show host configuration with attributes

Inputs: host_name (required).

vibemk_get_host_detailsC

πŸ” Host details - Get comprehensive host information

Inputs: host_name (required).

vibemk_get_host_effective_attributesA

πŸ“‹ Get effective host attributes - Show host attributes including inherited values

Inputs: host_name (required).

vibemk_get_host_groupsB

🏠 List host groups - Show all host groups

Inputs: no named parameters.

vibemk_get_host_metricsB

πŸ“Š Get host metrics - Extract performance data from CheckMK RRD databases

Inputs: host_name (required), reduce, time_range, metric_name.

vibemk_get_host_statusC

πŸ“Š Get host status - Show current monitoring status of a specific host

Inputs: host_name (required).

vibemk_get_host_tagsA

🏷️ List host tags - Show available host tag groups

Inputs: no named parameters.

vibemk_get_notification_rulesB

πŸ“’ List notification rules - Show notification configuration

Inputs: no named parameters.

vibemk_get_passwordsA

πŸ” List passwords - Show stored passwords

Inputs: no named parameters.

vibemk_get_pending_changesB

πŸ“‹ Get pending changes - Show uncommitted configuration changes

Inputs: no named parameters.

vibemk_get_rulesetB

πŸ“‹ Get ruleset - Show specific ruleset configuration

Inputs: ruleset_name (required).

vibemk_get_rulesetsC

πŸ“‹ List rulesets - Show available rulesets

Inputs: search.

vibemk_get_service_groupC

πŸ” Get service group details - Show detailed information about a specific service group

Inputs: name (required).

vibemk_get_service_groupsA

πŸ”§ List service groups - Show all service groups

Inputs: no named parameters.

vibemk_get_service_metricsC

πŸ“Š Get service metrics - Extract service performance data from CheckMK metrics API

Inputs: host_name (required), service_description (required), site, reduce, +2 more.

vibemk_get_service_statusC

πŸ“Š Get service status - Show current status of a service

Inputs: host_name (required), service_description (required).

vibemk_get_timeperiodsA

⏰ List time periods - Show all configured time periods

Inputs: no named parameters.

vibemk_get_usersA

πŸ‘₯ List users - Show all CheckMK users

Inputs: no named parameters.

vibemk_list_available_metricsC

πŸ“‹ List available metrics - Show all available metrics for host or service

Inputs: host_name (required), service_description.

vibemk_list_downtimesB

πŸ“‹ List downtimes - Show all scheduled downtimes with filtering options

Inputs: host_name, active_only, service_description.

vibemk_list_rulesetsC

πŸ“‹ List all rulesets - Show all available rulesets with basic information

Inputs: limit, show_deprecated.

vibemk_list_service_groupsB

πŸ“‹ List service groups - Show all configured service groups

Inputs: no named parameters.

vibemk_list_user_rolesA

πŸ‘₯ List user roles - Show all available user roles (built-in and custom)

Inputs: show_builtin.

vibemk_move_folderC

πŸ“ Move folder - Move folder to different parent

Inputs: folder (required), destination (required).

vibemk_move_hostA

πŸ“ Move host - Move host to different folder

Inputs: host_name (required), target_folder (required).

vibemk_move_ruleC

πŸ”„ Move rule - Change rule position in ruleset

Inputs: rule_id (required), position, target_rule_id.

vibemk_remove_user_from_groupC

πŸ‘₯ Remove user from contact group - Remove user from contact group

Inputs: username (required), group_name (required).

vibemk_reschedule_checkB

πŸ”„ Reschedule check - Force immediate check execution

Inputs: host_name (required), check_type (required), service_description.

vibemk_schedule_downtimeC

⏰ Schedule downtime - Schedule maintenance downtime

Inputs: comment (required), end_time (required), start_time (required), downtime_type (required), +2 more.

vibemk_schedule_host_downtimeA

πŸ”§ Schedule host downtime - Schedule maintenance downtime for a host to suppress alerts

Inputs: host_name (required), recur, comment, duration, +2 more.

vibemk_schedule_service_downtimeB

πŸ”§ Schedule service downtime - Schedule maintenance downtime for specific services

Inputs: host_name (required), service_descriptions (required), recur, comment, +3 more.

vibemk_search_metricsC

πŸ” Search metrics - Filter and search performance data across hosts/services

Inputs: host_filter (required), reduce, time_range, site_filter, +1 more.

vibemk_search_rulesetsC

πŸ” Search rulesets - Find rulesets with filters (text, folder, name)

Inputs: name, used, folder, fulltext, +1 more.

vibemk_show_rulesetC

πŸ“‹ Show ruleset details - Display detailed information about a specific ruleset

Inputs: ruleset_name (required).

vibemk_show_user_roleA

πŸ” Show user role details - Display detailed information about a specific user role

Inputs: role_id (required).

vibemk_start_bulk_discoveryA

πŸ” Start bulk discovery - Discover services on multiple hosts simultaneously

Inputs: hostnames (required), options, bulk_size, do_full_scan, +1 more.

vibemk_start_service_discoveryC

πŸ” Start service discovery - Automatically detect services on a host

Inputs: host_name (required), mode.

vibemk_test_all_endpointsA

πŸ§ͺ Test all API endpoints - Comprehensive endpoint availability check

Inputs: no named parameters.

vibemk_test_direct_urlA

πŸ§ͺ Test direct URL - Test a specific API URL manually

Inputs: test_url (required).

vibemk_test_notificationC

πŸ§ͺ Test notification - Send test notification

Inputs: contact (required), message.

vibemk_update_contact_groupC

πŸ“ Update contact group - Modify contact group properties

Inputs: name (required), alias, members.

vibemk_update_folderC

πŸ“ Update folder - Modify folder properties

Inputs: folder (required), title, attributes.

vibemk_update_hostC

πŸ“ Update host - Modify host configuration with flexible attribute management

Inputs: host_name (required), attributes, update_mode, remove_attributes.

vibemk_update_host_groupB

πŸ“ Update host group - Modify host group properties

Inputs: name (required), alias.

vibemk_update_host_tagC

πŸ“ Update host tag - Modify host tag group

Inputs: tag_id (required), help, tags, title, +2 more.

vibemk_update_passwordB

πŸ“ Update password - Modify stored password

Inputs: ident (required), owner, title, shared, +3 more.

vibemk_update_ruleC

πŸ“ Update rule - Modify existing monitoring rule

Inputs: rule_id (required), comment, disabled, conditions, +1 more.

vibemk_update_service_groupB

πŸ“ Update service group - Modify an existing service group's alias

Inputs: name (required), alias (required).

vibemk_update_timeperiodB

πŸ“ Update time period - Modify time period configuration

Inputs: name (required), alias, exclude, exceptions, +1 more.

vibemk_update_userC

πŸ“ Update user - Modify user properties

Inputs: username (required), email, roles, fullname, +1 more.

vibemk_update_user_roleA

✏️ Update user role - Modify an existing user role's alias or permissions

Inputs: role_id (required), alias, permissions.

vibemk_validate_host_configC

βœ… Validate host config - Validate host configuration before applying changes

Inputs: host_name (required), folder, operation, attributes.

vibemk_wait_for_discoveryC

⏳ Wait for discovery completion - Wait until service discovery finishes on a host

Inputs: host_name (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.6/5.0

    Scored across 111 tools

    Disambiguation2/5

    Many tools have overlapping or ambiguous purposes, such as get_rulesets, list_rulesets, show_ruleset, and search_rulesets, which could confuse an agent. The distinction between 'debug', 'test', and 'get' is not consistently clear.

    Naming Consistency2/5

    Tool names mix verbs like 'get', 'list', 'show', 'search', 'debug', and 'test' without a consistent pattern. Also, some use 'create' while others use 'add' (e.g., add_comment vs create_rule), and 'bulk' variants are not uniformly named.

    Tool Count2/5

    111 tools is excessive for a single MCP server, even for a complex system like CheckMK. Many tools are redundant or could be combined, making the surface area overwhelming and prone to errors.

    Completeness3/5

    The toolset covers many major CheckMK domains (hosts, services, groups, rules, downtimes, metrics), but there are inconsistencies and gaps, such as missing update operations for some entities (e.g., no update for host groups beyond creation/deletion) and redundancy in discovery tools.

    Maintenance

    ActivitySlowing
    ResponsivenessUsually handled

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI clients like Claude to triage, investigate, and operate Icinga installations through natural language, integrating with Icinga's REST APIs and providing deep awareness of monitoring plugins and historical performance data.
      5
      -
    • A
      license
      C
      quality
      C
      maintenance
      Enables natural language interaction with Thruk monitoring systems, allowing users to query hosts/services, schedule downtimes, acknowledge problems, and more via MCP-compatible clients.
      65
      2
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables natural language management of CheckMK monitoring environments, including host/service monitoring, downtime scheduling, problem acknowledgement, and configuration management through LLM interfaces.
      GPL 3.0