Skip to main content

python-mkp

ci release PyPI version

Pack or unpack Check_MK mkp files.

The purpose of this library is to generate mkp files from source without having to set up a complete Check_MK instance. It is not intended for installing mkp files to a Check_MK site.

Installation

pip install mkp

Usage

Automatically pack mkp package

Run mkp-init in an empty directory.

This will create an executable script dist.py:

#!/usr/bin/env python

from mkp import dist

dist({
    'author': 'John Doe',
    'description': 'Test the automatic creation of packages',
    'download_url': 'http://example.com/',
    'name': 'test',
    'title': 'Test',
    'version': '1.0',
    'version.min_required': '1.2.3',
})

and a directory structure similar to this:

├── agents/
├── agent_based/
├── checkman/
├── checks/
├── doc/
├── inventory/
├── lib/
├── notifications/
├── pnp-templates/
├── web/
└── dist.py

Now add your files to the respective directories and edit the metadata in dist.py as needed. Empty directories can be deleted.

Running ./dist.py will pack all files in the directories listed above to a mkp package with the canonical name and the specified metadata. The mkp file will be written to the dist directory.

Extract mkp package using mkp-extract cli tool

mkp-extract --help
mkp-extract foo-1.0.mkp 
mkp-extract foo-1.0.mkp --output-dir bar --no-prefix

Advanced usage

Extract mkp package programmatically

import mkp

package = mkp.load_file('foo-1.0.mkp')
print(package.info)
package.extract_files('path/to/somewhere')

Pack files to mkp package

In contrast to dist, this provides the possibility to manually select the files by replacing find_files. It is also possible to choose a different output filename.

import mkp

info = {
    'author': 'tom-mi',
    'description': 'Test the system',
    'download_url': 'http://example.com/',
    'files': mkp.find_files('path/to/files'),
    'name': 'test',
    'title': 'Test',
    'version': '1.0',
    'version.min_required': '1.2.3',
}
mkp.pack_to_file(info, 'path/to/files', 'test-1.0.mkp')

Exclude files when packing using regular expressions:

from mkp import dist

dist({
    # ...
}, exclude_patterns=[r'.*\.pyc$', '__pycache__'])

or

import mkp

files = mkp.find_files('path/to/files', exclude_patterns=[r'.*\.pyc$', '__pycache__'])

Include all subdirectories instead of just the "known" ones:

from mkp import dist, INCLUDE_ALL

dist({
    # ...
}, directories=INCLUDE_ALL)

or

import mkp

files = mkp.find_files('path/to/files', directories=mkp.INCLUDE_ALL)

Include only specific subdirectories:

from mkp import dist

dist({
    # ...
}, directories=['checks', 'agents'])

or

import mkp

files = mkp.find_files('path/to/files', directories=['checks', 'agents'])

Development Setup

Install development dependencies into local environment (${repo_root}/.venv):

scripts/bootstrap

Run all tests with tox:

scripts/test
# or
source .venv/bin/activate
tox

Run tests of current python version with pytest:

source .venv/bin/activate
pytest

Release new version:

git tag <new_version>
git push --tags

License

This software is licensed under GPLv2.

Metadata

Release files for mkp 0.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for mkp 0.7
File Interpreter ABI Platform
mkp-0.7-py2.py3-none-any.whl Python 3, Python 2 none any Details

Release files / mkp-0.7-py2.py3-none-any.whl

Download URL mkp-0.7-py2.py3-none-any.whl
Size 14.4 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
b59ba8bdfde3bd726549ed54187a2020420bfa80715c52b4b17a490991661fda
BLAKE2b-256 checksum
How to use checksums
087bfc54d9782c32e4e951a2e2e2e692b042e0f45aea700a80af0265412d3f68
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 4, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.7 This release

1 release file

0.6

1 release file

0.5

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page