Files
computer-playbook/roles/web-app-checkmk/files/mcp/tools.json
kevinveenbirkenbach 1c03f638be feat(mcp): serve MCP from a locked-down sidecar for ten more applications
Ten applications with no MCP server of their own get one without a line of code
inside them: qdrant, checkmk, fider, jellyfin, listmonk, pretix, prometheus,
snipe-it, zammad and libretranslate.

The sidecar is confined rather than trusted. It runs read-only, drops every
capability, forbids privilege escalation, publishes no port and joins only its
own provider's network, carrying neither that provider's alias nor the consumer
networks the provider itself joined. Its tool surface is a JSON contract, not
code: which tools exist, which upstream path each maps to and what shape the
arguments take. Adding a tool is a line of JSON, not a new image.

The image is built locally from the audited adapter source with the base image
as a build argument, so all ten share one reviewed build instead of ten upstream
dependencies. Each role provisions its own read-only identity in the language
its application speaks, and every adapter include is guarded by the role's MCP
flag, so switching it off leaves no container behind.
2026-08-06 20:44:16 +02:00

29 lines
676 B
JSON

{
"checkmk_get_host_status": {
"description": "Return one host's monitoring status.",
"input_schema": {
"properties": {
"host": {
"type": "string"
}
},
"required": [
"host"
],
"type": "object"
},
"method": "GET",
"path": "/objects/host/{host}"
},
"checkmk_list_hosts": {
"description": "List the monitored hosts.",
"method": "GET",
"path": "/domain-types/host_config/collections/all"
},
"checkmk_list_services": {
"description": "List the monitored services this application may read.",
"method": "GET",
"path": "/domain-types/service/collections/all"
}
}