omv-ha (Themis128/omv-ha) is an MCP server listed on the M8ven Trust Index. It scores 72 out of 100, grade C. It declares 103 tools. No publisher has claimed this listing.

Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.

How we verified

Code Verified⚡ Live Monitored: not connected

Verified is a snapshot. Live keeps it current, and builds your track record.

⚡ Connect GitHub → continuous verification on every pushwhy connect →

Who stands behind it

Themis128

Source: github_code

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →

Install from

The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.

// key findings
⚠️
Known vulnerabilities in dependencies: 2 high
Affects packages this MCP installs at runtime. Upgrade or remove the affected dependency.
103 tools verified — handlers match their declared behaviour
70 read-only tools verified — handlers contain no write/delete/exec
No credential exfiltration, no sensitive file access, no obfuscation
Static analysis found nothing flowing your secrets to unexpected places.
🔐
You'll be asked for 1 credential: CLOUDFLARE_API_TOKEN
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes103 tools

These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.

app_security_scan

Check HTTP security headers for cloudless.online and/or manage.cloudless.online. Validates: HSTS, X-Content-Type-Options, X-Frame-Options, CSP, Referrer-Policy, Permissions-Policy. Also checks TLS grade and redirect behaviour (HTTP→HTTPS). Run after any Traefik/Cloudflare config change or before a p

app_perf_scan

Check HTTP performance indicators for cloudless.online and/or manage.cloudless.online. Checks: gzip/brotli compression, cache-control directives, Cloudflare cache status (HIT/MISS/BYPASS), ETag presence, and TTFB (time-to-first-byte via curl timing). Run after CDN config changes or to baseline respo

app_deps_check

Compare package.json versions for cloudless.gr and cloudless-manager against npm latest. Flags dependencies that are more than one major version behind (breaking changes likely). Run before a quarterly maintenance pass or when planning upgrades.

app_improvement_report

Run all app scans (security headers, performance, CSRF guard, WebSocket auth) for cloudless.online and manage.cloudless.online and return a prioritised improvement list. This is the entry point for a full app audit — use it first, then drill into specifics.

aws_list_iam_users

List all IAM users in the AWS account with their access key status and last-used date. Runs via the omv-main-cli IAM user configured on the Pi. Returns a markdown table of users, their access keys, key status, and last-used info.

aws_check_iam_permissions

Simulate whether an IAM user is allowed to perform a given action on a resource. Uses aws iam simulate-principal-policy on the Pi. Useful to check if omv-main-cli (or another user) has a specific permission before running a task.

aws_list_acm_certs

List all ACM (AWS Certificate Manager) certificates in us-east-1. Returns domain name, SANs, status, and expiry for each certificate. Useful to audit SSL/TLS certificates managed in AWS.

aws_grant_route53_delete_health_check

Add an inline IAM policy named "route53-delete-hc" to the omv-main-cli IAM user. The policy grants route53:DeleteHealthCheck on all resources. This is an additive IAM change — it does not remove existing permissions. Run aws_check_iam_permissions first to verify the user currently lacks this permiss

aws_revoke_route53_delete_health_check

Remove the inline IAM policy "route53-delete-hc" from the omv-main-cli user. Use this after deleting health checks to restore least-privilege access. Runs aws iam delete-user-policy on the Pi.

aws_delete_acm_cert

Delete an ACM certificate by ARN. Safety check: refuses to delete certificates with status ISSUED (still in use by CloudFront/ALB/etc.). Only deletes certificates in PENDING_VALIDATION, EXPIRED, FAILED, or INACTIVE status. Use aws_list_acm_certs to find the ARN first.

aws_get_lambda_logs

Fetch recent logs from the cloudless.gr Lambda function in CloudWatch. Lists available log groups first if no log_group_name is given. Logs are returned newest-first for the specified time window. Filter with a pattern (e.g. "ERROR", "timeout", "[warn]") to narrow results.

aws_check_health_checks

Check the status of Route 53 health checks for cloudless.gr. PRIMARY: CloudFront distribution (main path) SECONDARY: API Gateway → Pi 5 (failover path) Returns per-region health check observations and overall HEALTHY/UNHEALTHY status.

aws_get_ssm_parameters

List or retrieve SSM parameters for cloudless.gr (prefix: /cloudless/production). SecureString values are masked in list mode. Use parameter_name + decrypt=true to reveal a specific value. Useful for auditing which secrets are configured, checking last-modified dates, or verifying a parameter exists

aws_check_cloudfront

Check if the cloudless.gr CloudFront distributions are responding. Tests HTTP response from the apex and www distributions. Returns HTTP status codes and basic response headers to confirm CDN is serving correctly.

aws_get_infrastructure_summary

Return a static summary of the cloudless.gr AWS infrastructure topology. Includes: Lambda, CloudFront, Route 53, API Gateway, SSM, and Pi failover path. Use as a quick reference when diagnosing issues or explaining the architecture.

gh_ci_summary

Full CI health dashboard for a repo: per-workflow last run grouped by FAIL / RUNNING / OK. Detects the GitHub billing-lock pattern (job fails in <15s with 0 steps). Returns a verdict: HEALTHY | DEGRADED | CRITICAL plus the runner fleet status. Use this as the first call in any CI investigation. Equ

gh_pr_checks

Get all GitHub Actions check runs for a specific pull request. Returns each check name, status, conclusion, and a direct link to the run. Use to diagnose why a PR is blocked — identifies exactly which checks are failing, pending, or skipped.

gh_workflow_failure_logs

Fetch the failed-step logs for a specific GitHub Actions workflow run. Equivalent to 'gh run view <id> --log-failed'. Returns the first `max_lines` lines of failure output so you can diagnose the root cause without opening the browser. Use after gh_ci_summary or gh_pr_checks identifies a failing run

gh_ci_flaky_detector

Analyse the last N runs of a workflow to detect intermittent (flaky) failures. Reports: total runs, success rate, longest failure streak, longest success streak, and a STABLE / FLAKY / CONSISTENTLY_FAILING verdict. FLAKY: success rate between 15% and 85% with at least 2 failures. CONSISTENTLY_FAILI

gh_deployment_status

Show what is currently deployed to production for cloudless.gr. Reports the most recent successful deploy-pi.yml run: commit SHA, branch, title, timestamp, and how long ago. Also shows the last failed deploy if the most recent deploy attempt was not successful. Use to quickly confirm whether a PR's

cloudflare_list_dns_records

List all DNS records for cloudless.online. Returns record ID, type, name, content, TTL, and proxied status. Always run this before adding or deleting records to check current state.

cloudflare_add_dns_record

Add a new DNS record to cloudless.online. Supports A, AAAA, CNAME, TXT. For tunnel CNAMEs use content="<tunnel-id>.cfargotunnel.com".

cloudflare_update_dns_record

Update an existing DNS record by ID. Only provided fields are changed. Use cloudflare_list_dns_records first to get the record ID.

cloudflare_delete_dns_record

Delete a DNS record by ID. This is irreversible — list records first.

cloudflare_purge_cache

Purge Cloudflare edge cache for cloudless.online. Use purge_everything=true to wipe all cached assets (use after major deploys). Or provide specific URLs to purge individual files. Note: purge_everything counts against rate limit — don't run in loops.

cloudflare_zone_analytics

Get traffic analytics for cloudless.online via Cloudflare GraphQL API. Returns: requests, bandwidth, cached %, threats, unique visitors. Default: last 24 hours. Requires Zone Analytics:Read on the token.

cloudflare_zone_settings

Get key security and performance settings for cloudless.online zone. Shows: SSL mode, security level, min TLS version, HTTP/2, HTTP/3, HSTS, brotli, rocket loader. Useful for diagnosing TLS issues, checking caching mode, or verifying security posture.

cloudflare_list_tokens

List all API tokens for the Cloudflare account. Shows token ID, name, status, created date, and expiry. Requires the CLOUDFLARE_API_TOKEN to have "User API Tokens:Read" permission. Use this to audit tokens, find IDs for deletion, or check expiry.

cloudflare_list_permission_groups

List all available Cloudflare API token permission groups with their IDs. Use this to find the correct permission_group IDs before calling cloudflare_create_token. Filter by scope: "zone", "account", "user", or omit for all.

cloudflare_create_token

Create a new Cloudflare API token with specified permissions. Requires CLOUDFLARE_API_TOKEN to have "User API Tokens:Edit" permission. WORKFLOW: 1. Run cloudflare_list_permission_groups to find permission group IDs 2. Build policies array with resources + permission_groups 3. Call this tool EXAMPL

cloudflare_delete_token

Delete a Cloudflare API token by ID. This is irreversible. Use cloudflare_list_tokens to find the token ID first. Requires "User API Tokens:Edit" permission.

cloudflare_worker_routes

List all Worker routes for cloudless.online. Shows which URL patterns are handled by which Worker scripts. Useful for verifying cloudless-edge Worker is wired to the correct paths.

cloudflare_tunnel_status

Check cloudflared tunnel service on omv-main. Tunnel: cloudless-tunnel (ID: a82f24a8-f767-4a59-bc77-1d59ad132be2) Returns systemd status + recent log lines + active connections.

cloudflare_check_certs

Check cert-manager Certificate resources in K3s. Shows all certs across all namespaces: Ready state, expiry, issuer. Current certs: cloudless-online-tls, auth-cloudless-online-tls.

cloudflare_restart_tunnel

Restart cloudflared on omv-main. Use when tunnel is stuck or connections drop.

cluster_health_check

Check the health of one or both Raspberry Pi nodes. Returns: hostname, uptime, disk usage, free memory, load average, and running service count. Use this as a first step to assess overall cluster state.

cluster_run_command

Execute an arbitrary shell command on a specified Pi node via SSH. Use for ad-hoc diagnostics. Returns stdout + stderr + exit code. CAUTION: avoid commands that modify system state unless you know what you are doing.

cluster_check_services

List all running systemd services on a Pi node. Useful to verify which services are active and spot unexpected stopped services. Also shows failed units if any.

cluster_check_omv

Check OpenMediaVault NAS services on a Pi node. Checks Samba (file sharing), openmediavault-engined, and lists active Samba connections.

esp32_alert_status

Query active (non-resolved) alerts from the Alert API. The Alert API (FastAPI, alert-manager namespace, NodePort 30800) receives TCP/HTTP probes from the ESP32 watchdog device (192.168.1.201) every 30 seconds. Returns all currently active alerts with code, severity, trigger count, and last seen time

esp32_alert_resolve

Manually resolve an active alert in the Alert API. Use after confirming the underlying issue is fixed or auto-remediation has run. The alert remains in history as resolved and will re-fire if the ESP32 detects the problem again. Common codes: OMV_MAIN_K3S_API_DOWN, OMV_HA_K3S_AGENT_DOWN, CLOUDLESS_O

esp32_alert_history

Retrieve recent alert event history from the Alert API. Returns the last N events across all alert codes (FIRING, RESOLVED, ONGOING, FLAP_SUPPRESSED). FLAP_SUPPRESSED = ESP32 fired an alert but the Alert API's cluster-side check confirmed the service was up (false positive suppressed). Useful for po

esp32_device_status

Get the current hardware state of the ESP32 watchdog (192.168.1.201) and combined cluster health. ESP32 hardware data: IP, firmware version, RSSI signal strength, free RAM, uptime, boot count, last heartbeat. System status: combined Pi node + ESP32 + alert summary from the Alert API. RSSI guide: ≥ −

failover_check_readiness

Check if both Pi nodes are ready to handle a failover scenario. Runs a comprehensive health check on OMV-HA (192.168.1.130) and OMV main (192.168.1.128): - SSH reachability - Disk space on / and /srv - Memory availability - Running services count - Samba share status - Network interface summary Use

failover_check_shares

Compare Samba share configuration between OMV-HA and OMV main. Lists configured shares, active connections, and checks if share paths exist on each node. Useful for verifying the failover share setup is mirrored correctly.

failover_sync_shares

Trigger an rsync from OMV main (192.168.1.128) to OMV-HA (192.168.1.130) to keep shares in sync. The rsync runs ON OMV main and pushes to OMV-HA via SSH. Default source path: /srv/dev-disk-by-uuid-*/ (OMV data disk). Always run with dry_run=true first to preview what would be transferred. CAUTION: T

failover_check_secondary_app

Verify the full HA failover chain for cloudless.gr (2026-05-23 architecture): 1. Tailscale Funnel active on omv.tail8eb71.ts.net → localhost:18443 2. k3s Traefik VIP (192.168.1.200:18443) health for Host: cloudless.gr and Host: omv.tail8eb71.ts.net 3. CloudFront secondary origin reachability check 4

ha_check_cloudfront_failover

Verify the CloudFront origin group failover configuration for cloudless.gr. Checks: - Distribution status (Deployed vs InProgress) - Origins present (default + k3s-ha) - OriginGroup primary-with-ha exists with correct failover codes - DefaultCacheBehavior target is the origin group - /api/* CacheBeh

ha_test_k3s_origin

End-to-end test of the k3s failover origin as CloudFront would reach it. Tests both host headers that k3s must accept: - Host: cloudless.gr (normal traffic, Cloudflare Tunnel path) - Host: omv.tail8eb71.ts.net (CloudFront secondary origin host) Also tests a GET and a redirect (/) to simulate real pa

ha_cleanup_cloudless_online

Remove remaining cloudless.online references from the k3s cluster. Actions taken: - Deletes the cloudless-online-tls Certificate resource in the cloudless namespace - Deletes the cloudless-online-tls Secret in the cloudless namespace - Reports any remaining cloudless.online references in manifests D

failover_network_check

Check network connectivity between both Pi nodes and to the internet. Tests: ping between nodes, DNS resolution, internet connectivity, and IPv6 status. Useful for diagnosing failover issues caused by network problems.

frontend_check_navbar

Inspect Navbar.tsx on omv-main and verify all features introduced in the navbar refactor: - Scroll shadow (scrolled state + useEffect) - Free Audit CTA (freeAudit i18n key + /contact link) - ARIA accessibility (aria-expanded on hamburger + user menu) - Resize listener (closes mobile menu on viewport

frontend_check_pwa

Validate the PWA manifest configuration for cloudless.gr/cloudless.online. Checks brand-critical fields: theme_color (#0a7785), background_color (#fcfcfd), display_override array, start_url tracking param, id/scope/lang, icon purposes, and shortcuts. source options: - "static" — reads public/ma

frontend_deploy_cloudless_gr

Trigger the deploy-pi.yml GitHub Actions workflow for cloudless.gr (Themis128/cloudless.gr) and watch it to completion. Combines gh_workflow_trigger + gh_workflow_watch in one call. The CI pipeline: lint/typecheck → Next.js build → Docker push to GHCR → k3s rollout. Only dispatches on branches that

gh_runner_list

List self-hosted runners registered to a GitHub repo. Returns runner name, status (online/offline), OS, labels, and busy state. Use to verify a runner is online before triggering a workflow.

gh_runner_register

Register the omv-main self-hosted runner to a GitHub repo. Generates a registration token via GitHub API, SSHs to omv-main, extracts the runner tarball into ~/actions-runner-<repo-short-name>/, runs config.sh, installs and starts a systemd service. Idempotent — skips if already registered.

gh_workflow_trigger

Trigger a workflow_dispatch on a GitHub repo and return the new run ID. Use to manually kick off a CI/CD pipeline (e.g., deploy-pi.yml, deploy.yml).

gh_workflow_watch

Poll a GitHub Actions workflow run until it completes (or times out). Returns job-by-job step status and final conclusion. Poll interval: 20s. Timeout: configurable, default 15 min. Use after gh_workflow_trigger to follow a CI/CD pipeline to completion.

gh_workflow_list

List the most recent workflow runs for a repo, with status and conclusion. Useful for a quick CI health check without needing a specific run ID.

gh_runner_health

Full health check of a repo's self-hosted runner fleet. Lists each runner (online/offline/busy/labels), counts queued vs in-progress workflow runs, and flags two specific failure modes: • Zombie runner — reported "busy" while zero jobs are actually in_progress AND work is queued (fix: re-regis

gh_runner_set_labels

Add custom labels to a self-hosted runner, or replace its full custom label set, via the GitHub API — no re-registration or restart needed. runs-on matches by AND: a job runs on a runner only if that runner carries EVERY label in the job's runs-on array. Use this to partition a fleet into pools — e

gh_runner_restart

Restart the GitHub Actions self-hosted runner systemd service on omv-main via SSH. Use after applying a systemd override or when the runner appears stuck or offline. Service name is derived as: actions.runner.Themis128-{repo}.{runner}.service

gh_runner_fix_service

Write an idempotent systemd drop-in override for the runner service on omv-main. Sets: Restart=on-failure, RestartSec=10s, StartLimitIntervalSec=0, network-online.target dependency, RUNNER_RETRY_RENEW_SECONDS=300, DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER=1. Also writes /etc/systemd/resolved.conf

gh_runner_logs

Fetch recent journalctl logs from the GitHub Actions runner service on omv-main. Useful for diagnosing connection drops, DNS failures, job hangs, or stuck runs.

gh_runner_cancel_stuck

Cancel all queued or in-progress workflow runs for a repo. Use when the self-hosted runner crashed mid-job and GitHub still shows runs as queued/in-progress. Fetches both queued and in-progress runs, optionally filters by workflow name, and cancels each. Set dry_run=true to preview without cancellin

grafana_check_health

Check Grafana's health endpoint (/api/health). Returns the running version, database state, and git commit. Access is via SSH to omv-main (Grafana is not exposed externally).

grafana_list_dashboards

List all dashboards in Grafana. Returns a markdown list with folder, title, and UID for each dashboard. Use the UID to construct a Grafana URL for direct access.

grafana_get_datasources

List all configured datasources in Grafana. Returns name, type, URL, and whether each is the default datasource. Useful for verifying Prometheus, Loki, or other backends are connected.

grafana_restart

Restart the Grafana deployment in the monitoring namespace to pick up ConfigMap or secret changes. Runs: kubectl rollout restart deployment/kube-prom-grafana -n monitoring Then waits for the rollout to complete (up to 3 minutes). Use grafana_check_health after to confirm the new pod is ready.

grafana_check_alerts

List active Grafana-managed alerts via the Alertmanager API. Returns alerts with their labels, severity, and when they started firing. This covers Grafana-managed alert rules (not Prometheus alerting rules — use prometheus_check_alerts for those).

helm_deploy_chart

Install or upgrade a Helm chart on the k3s cluster. Uploads a local values file via SFTP to omv-main, then runs helm upgrade --install. Returns helm output including status and deployed resources.

helm_list

List all Helm releases across all namespaces on the k3s cluster.

helm_status

Get detailed status of a specific Helm release including deployed resources.

helm_uninstall

Uninstall a Helm release from the k3s cluster.

k3s_get_cluster_status

Get a full status snapshot of the K3s Kubernetes cluster on OMV main (Pi 5). Returns: cluster nodes, all pods across namespaces, all services, and K3s systemd service status. Use first to assess overall cluster health.

k3s_get_pods

List pods in the K3s cluster, optionally filtered by namespace. Returns pod names, namespace, status, restart count, and age.

k3s_get_pod_logs

Fetch logs from a K3s pod by namespace and label selector or pod name. Examples: - Home Assistant: namespace="home-assistant", selector="app=home-assistant" - cloudless.gr: namespace="cloudless", selector="app=cloudless" Returns the last N lines of logs.

k3s_restart_deployment

Perform a rolling restart of a K3s deployment. Common deployments: - Home Assistant: namespace="home-assistant", deployment="home-assistant" - cloudless.gr app: namespace="cloudless", deployment="cloudless" Returns the rollout status after restart.

k3s_check_ha

Check Home Assistant pod, logs, and service in the K3s cluster. Returns: pod status, last 50 log lines, service port, and recent events. Shortcut — no need to know the exact pod name or namespace.

k3s_check_cloudless_app

Check the cloudless.online Next.js app running as a K3s deployment in the cloudless namespace. Returns: pod status, service, ingress, health check via Traefik VIP, and current IPv6 address.

k3s_prepull_image

Pre-pull a container image into the k3s containerd store (k8s.io namespace) on omv-main before a rollout, so pod startup is near-instant instead of waiting 4+ minutes for ECR pull. Uses: sudo ctr -n k8s.io images pull (the only tool that correctly targets the k8s.io namespace and honours ECR creden

k3s_describe_resource

Get detailed description of a K3s resource (pod, deployment, service, ingress, etc.). Equivalent to: kubectl describe <kind> <name> -n <namespace> Useful for debugging pod scheduling issues, CrashLoopBackOff, image pull errors, etc.

metabase_check_health

Check Metabase pod status and optionally verify login. Returns pod state, restart count, readiness, and API health endpoint response. Note: Metabase takes ~4.5 minutes to become ready after startup (initialDelaySeconds=240).

metabase_h2_query

Run a SQL query against the Metabase H2 embedded database. IMPORTANT: Metabase MUST be scaled to 0 before running — the H2 database cannot be accessed by two JVM processes simultaneously. This tool scales Metabase down, runs the query, then scales it back up. H2 facts: - DB path: /metabase-data/met

metabase_reset_password

Reset the Metabase admin password via H2 direct database update. Procedure: scale to 0 → apply H2 reset job → verify → scale back to 1. The hash must be a bcrypt hash using $2a$ prefix (NOT $2b$) — jBCrypt in Metabase v0.55 rejects $2b$. Generate via Python: import bcrypt, uuid salt = str(uuid.

metabase_duckdb_lock_fix

Fix the DuckDB file lock conflict that occurs when Metabase restarts. Symptom: "IO Error: Conflicting lock is held in PID 0" on analytics.duckdb. Fix: restart duckdb-api first (clears the stale lock), then restart Metabase. The lock occurs because the previous Metabase pod held the lock; when killed

metabase_get_logs

Get recent logs from the Metabase pod. Note: metabase.middleware.log DEBUG spam (health-check lines) cannot be suppressed in v0.55 OSS — Metabase programmatically resets logger levels. This is cosmetic only and does not affect function.

ml_pipeline_status

Check status of all ML pipeline CronJobs in the analytics namespace. Shows: last schedule time, last successful run, active jobs, recent pod states. Also reports recent Job runs (last 3 per CronJob) with completion status and duration. Use this to diagnose pipeline failures or verify a successful we

ml_trigger_job

Create an immediate Job from an ML CronJob (equivalent to kubectl create job --from=cronjob). Use this to run a pipeline step on-demand without waiting for the next schedule. Normal trigger order: ml-feature-engineer → ml-train-rfm → ml-train-churn → ml-train-collab → ml-train-anomaly. ⚠️ concurren

ml_get_logs

Stream logs from the most recent pod of an ML CronJob. Use after ml_trigger_job or ml_pipeline_status to diagnose failures or confirm success. Fetches the last 200 lines by default.

ml_run_history

Query the ml_runs table in DuckDB for training run history. Returns: model name, training timestamp, metrics (AUC/inertia/etc), training row count, champion flag. Requires at least one successful ml-feature-engineer + training run to have data.

ml_get_scores

Query ML score tables from DuckDB. Available tables: scores_rfm (user segments), scores_churn (churn probability), scores_recs (recommendations), anomaly_flags (API anomalies), scores_decay (content decay). Returns the first N rows with all columns.

ml_check_models

List ML model files stored in S3 under the ml-models/ prefix. Shows: model name, version (latest + dated backups), file size, last modified. Use this to confirm a training job successfully saved its model artifact.

ml_anomaly_latest

Query the most recent anomaly_flags from DuckDB. The anomaly-detect CronJob runs every 15 minutes scoring API request windows. Returns: window_start, is_anomaly, anomaly_score, request_count, error_rate, p95_ms. High anomaly_score (closer to 0 or positive) = more anomalous; threshold is typically ar

ml_feature_summary

Query ml_features table to see what feature sets have been computed and when. Shows: feature_name, computed_at, row_count, s3_parquet_path. Use to verify the ml-feature-engineer job ran successfully before triggering training jobs.

ml_duckdb_unlock

Clear a stale PID-0 DuckDB file lock that causes HTTP 503 from duckdb-api. This happens when a process dies without releasing the lock embedded in the .duckdb file header. Recovery procedure (automated): 1. Scale duckdb-api and metabase to 0 replicas (releases open file handles) 2. Run a one-shot d

omv_ha_agent_status

Check the k3s-agent service on omv-ha (Pi 4, 192.168.1.130). omv-ha was demoted from control-plane+etcd to agent-only on 2026-05-24 to fix 2-node etcd instability. Returns: k3s-agent service state, keepalived state, recent agent logs, memory, load average, and swap. Also verifies omv-ha appears in k

omv_ha_agent_restart

Restart the k3s-agent systemd service on omv-ha (Pi 4, 192.168.1.130). Use when omv-ha shows NotReady in kubectl nodes, or when k3s-agent is stuck/crashed. Waits 5 seconds and reports the new service state. This does NOT re-register the node — use omv_ha_agent_rejoin for a full reinstall.

omv_ha_agent_rejoin

Full reinstall of k3s-agent on omv-ha after a hard disconnect. Use ONLY when omv-ha is completely missing from kubectl nodes (not just NotReady). Procedure (from Runbook — omv-ha Demotion: server → agent, 2026-05-24): Step 1: Delete node object from cluster (on omv-main) Step 2: Uninstall k3s-ag

prometheus_query

Run a PromQL instant query against Prometheus in the monitoring namespace. Access is via SSH to omv-main (Prometheus is not exposed externally). Returns the result values formatted as a readable table. Examples: "up", "kube_pod_status_phase{namespace='default'}", "node_memory_MemAvailable_bytes"

3 further tools are not listed here. The complete surface is in the source.

// known CVEs in dependencies2 high

Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.

high@modelcontextprotocol/sdk@1.6.1GHSA-8r9q-7v3j-jr4g

Anthropic's MCP TypeScript SDK has a ReDoS vulnerability

high@modelcontextprotocol/sdk@1.6.1GHSA-w48q-cv73-mx4w

Model Context Protocol (MCP) TypeScript SDK does not enable DNS rebinding protection by default

Depend on this server? Get alerted when its CVEs change.Watch this server free →
// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
configAWS_REGION
configCLOUDFLARE_ACCOUNT_ID
🔐 secretCLOUDFLARE_API_TOKEN
configCLOUDFLARE_ZONE_ID
configOMV_HA_HOST
configOMV_MAIN_HOST
configPI_SSH_KEY_PATH
configPI_SSH_PORT
configPI_SSH_USER
configSSM_PREFIX
// quality suggestions

All four hints declared on every tool

103/103 tools missing one or more hints — app_security_scan (missing: idempotentHint, openWorldHint); app_perf_scan (missing: idempotentHint, openWorldHint); app_deps_check (missing: idempotentHint, openWorldHint), +100 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.

For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.

License file

No license file

Add a LICENSE file (MIT, Apache-2.0, etc.).

Tests exist

No test files found

Add tests that exercise each declared tool.

Production dependencies are patched

0 critical, 2 high severity in production deps — @modelcontextprotocol/sdk@1.6.1 (high), @modelcontextprotocol/sdk@1.6.1 (high)

Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.

Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 4 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/themis128/omv-ha?variant=verified)](https://m8ven.ai/mcp/themis128/omv-ha)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: 211ffab89697db7dad86af7a1f084bb64597d092
code hash: 0b8aa2512fca88fe196e6434b2a7f62fe3eab77d2c9a51f8d9711bedcfa7fae7
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.

https://m8ven.ai/api/mcp/tool-check
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client