python-mkp
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)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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