mcp-for-kibana@0.4.0
CAUTION· not startedPublisher claims: "MCP server for Kibana: composable toolboxes over a hexagonal core" Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Not started: dependency install failed; the server itself was not observed.- Tested
- the dependency install step · every file read, file written and host contacted by what ran
- Not tested
- server startup · the tool list · tool behavior
What this means for the label: Caution here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.
Before you give it your token
Code inventory arrives with this version's next honeypot run.- It will ask for
- unknown until the next run
- Where it talks to
- unknown until the next run
- What the honeypot saw
- no credential files read · no network
- What we could not test
- server startup · the tool list · tool behavior
Not enough was observed to say yet. Not started: dependency install failed; the server itself was not observed. This version's code has not been inventoried for credentials and hosts either; both arrive with its next honeypot run (popular servers first). `vet-skills try mcp-for-kibana` runs it now and prints the full answer.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; not started: dependency install failed; the server itself was not observed) on 2026-11-07 and scored it 68/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Access to sensitive file paths; Destructive file system command detected; Access to sensitive file paths. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 2 scenarios · 0 deviationsStatic findings
if [ -f elastic-start-local/.env.seed ]; thenFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.rm -f /var/run/docker.pidFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# elastic-start-local/.env.example, so there is no secondFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.echo " NO-GO contract_green (no elastic-start-local/.env.seed — run: scripts/stack.sh up && scripts/stack.sh seed)"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# all-skipped run reads NO-GO. contract/e2e only reach here past the .env.seedFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# but no claimed stack (.env.seed), so it runs before the live-stack suites.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.if [ -f elastic-start-local/.env.seed ]; thenFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.<link href="https://fonts.googleapis.com/css2?family=Newsreader:opsz,[email protected],500;6..72,600&family=Public+Sans:wght@400;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.<link href="https://fonts.googleapis.com/css2?family=Newsreader:opsz,[email protected],500;6..72,600&family=Public+Sans:wght@400;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose._SEED = _REPO_ROOT / "elastic-start-local" / ".env.seed"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.log "stack version ${versions} (read from elastic-start-local/.env.example)"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose._STACK_ENV = _REPO_ROOT / "elastic-start-local" / ".env"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.stack's .env (as scripts/stack.sh seed reads them). The password onlyFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# Minted creds go to the test PROCESS ENV only, never elastic-start-local/.env.seedFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.https://raw.githubusercontent.com/pedro-angel/mcp-for-kibana/main/elastic-start-local/.env.example 2>/dev/null)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,[email protected],600&family=JetBrains+Mono:wght@400;600&family=Public+Sans:wght@400;600&display=swap">Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# container names + ports (29200/25601) + creds from .env.ephemeral — so it neverFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.cp "$STACK_DIR/.env.ephemeral.example" "$ENVFILE"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.ENVFILE="$STACK_DIR/.env.ephemeral"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."FAIL: the Kibana API key is not readable from elastic-start-local/.env.seed, "Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose._SEED = _REPO_ROOT / "elastic-start-local" / ".env.seed"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# (the .env.ephemeral.example pin) under a DISTINCT compose project (mcp-for-kibana-ephemeral), with distinctFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# curl -fsSL https://raw.githubusercontent.com/pedro-angel/mcp-for-kibana/main/scripts/cloud-setup.sh \Fix: Pin versions and sources; vendor anything fetched at install time."elastic-start-local/.env.seed (KIBANA_TEST_API_KEY), so the known-secret "Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# to two keys). The fleet tokens go to the gitignored .env.fleet.ephemeral. ThisFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.local = REPO / ".env.local"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# identical key set from the shared elastic-start-local/.env.seed / .env.local format).Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# poll, transient .env) and scripts/fleet_stack.sh (/api/fleet/setup, policies,Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# ES+Kibana (the .env.ephemeral.example pin) + a Fleet Server + TWO sacrificial enrolled agents under aFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.print(f"FAIL: {key_name} is not set (shell or .env.local)")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# .env.local (human-written, never touched here).Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."_about": "The one config of the local-model study. local_run.py, local_analyze.py and LOCAL_STUDY.md read every study value from here; the code holds none. Paths are relative to the repository root. Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.at the machine-written elastic-start-local/.env.seed instead of hard-copying the ephemeral APIFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.edit. elastic-start-local/.env.seed names the key KIBANA_TEST_API_KEY; it is bridged toFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."seed_file": "elastic-start-local/.env.seed",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.FLEETENV="$STACK_DIR/.env.fleet"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# never elastic-start-local/.env.seed (contract/e2e depend on it, machine-guardedFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.[ -f "$STACK_DIR/.env" ] || { echo "FAIL: run 'scripts/stack.sh up' first (no $STACK_DIR/.env)" >&2; exit 1; }Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."""The shell environment first, then .env.local (user-owned, read only)."""Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# elastic-start-local/.env.fleet (never committed). The isolated ephemeral stackFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# elastic-start-local/.env.seed names the API key KIBANA_TEST_API_KEY. Bridge it to the real settingFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# names + ports + creds from .env.ephemeral — so it never collides with the devFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.v() { grep "^$1=" "$STACK_DIR/.env" | cut -d= -f2-; }Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.f"create a token with 'Use MCP Servers' (docs/e2e-setup.md step 3) and export {lm['token_env']} or put it in .env.local",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# elastic-start-local/.env.example; `up` regenerates elastic-start-local/.envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# (demo agent -> fleet-server) into the gitignored .env.fleetFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# elastic-start-local/.env.seed (seed-written, loader-read — foldered with theFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.return subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(["curl", "-fsSL", "-o", str(target), url], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.| Client | Claude Code headless: `claude -p <prompt> --output-format stream-json --verbose --restricted --disable-slash-commands --tools "" --strict-mcp-config --mcp-config <file> --no-session-persistFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.Every headline number in ``runs/efficiency/full/analysis.json`` is computed aFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.sha = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."git_sha": subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.dirty = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."claude_cli": subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."git_sha": subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."""Send the stored spans.json of every run whose send was skipped becauseFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.return subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
No advisories in OSV for mcp-for-kibana@0.4.0 as of 7d ago. This is the package itself, not its dependencies.
What would make this Verified
12 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim pedro-angel: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Destructive file system command detected≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- URL with embedded credentials≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Direct script execution from GitHub raw URL≈ +4 on the totalPin versions and sources; vendor anything fetched at install time.
- Python subprocess execution detected≈ +2 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.