looker-mcp-server@0.26.1
CAUTION· not startedPublisher claims: "A Model Context Protocol (MCP) server for the Looker API with full tool coverage, OAuth pass-through, and user impersonation support." 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
- It will ask for
- no credential variables read in the code
- Where it talks to
- looker.com (its own)Also strawberry.rocks — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- no credential files read · no network
- What we could not test
- server startup · the tool list · tool behavior
Connect it under the guard. Not started: dependency install failed; the server itself was not observed. The code names no credential variable and talks to looker.com, its own; the guard pins the network to what the honeypot saw and logs every call.
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-12 and scored it 72/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: Privileged sudo command; Access to sensitive file paths; Privileged sudo command. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 2 scenarios · 0 deviationsStatic findings
# Argument-driven sudo is admin impersonation requestedFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.(e.g. ``LOOKER_BASE_URL``) or via a ``.env`` file.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# api_key / sudo modeFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# header-driven sudo (gateway pattern), so emit anFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.- **sudo**: admin login → login_user → yield → logout sudo → logout adminFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.env_file=".env",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# sudo modeFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# for non-sudo identities. Surfaced in audit logs so operators canFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# how the sudo target was selected — "argument" (per-call act_as_userFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.MCP server holds NO admin API3 credentials and NO sudo capability. AFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.(uses sudo on self-hosted, OAuth on GC core) when ``sudo_as_user`` isFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# Paths that bypass token validation — parity with the public-mode gate.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.external-identity shape (OAuth pass-through / sudo header / etc.)Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."``threshold_seconds``, and optionally kill them. "Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# shared identity. The argument-sudo wrapper is intentionallyFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# for sudo-capable behavior, and per-call sudo respects it.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# Honor the deployment's sudo kill switch. We could skipFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.assert sudo_route.called, "sudo target must be the resolved user_id"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# respond with an opaque 400/404. No login or sudo route isFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# Two logouts (sudo + admin)Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# Wrap with argument-driven sudo so tools that accept ``act_as_user``Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# Paths that bypass token validation. These are either public by designFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# notices this argument and rewrites the resolved identity to a sudoFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.``OAuthIdentityProvider`` and pass tokens via the configuredFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# The wrapper is still installed when sudo is disabled so theFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.git tool receives ``act_as_user`` we expect a sudo session to beFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."create/update/delete, sudo activity). Returns rows of "Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.Looker API, then generates a sudo token.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# ``LOOKER_SUDO_AS_USER`` — that flag is the single kill switchFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# Admin credentials and sudo are both present, yet the looker_oauthFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# Header-driven sudo is tagged so audit logs can distinguish itFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# No email header → falls back to api_key (sudo provider fallback)Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.stack (:func:`looker_mcp_server.main.build_http_middleware` andFix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.assert status == 401, "lookalike path must not bypass token validation"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# per-call sudo argument appears only where sudo can actually run.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.`400 Developer mode required`. `act_as_user` is propagated throughFix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.# while the config itself has sudo on.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# Honors the ``LOOKER_SUDO_AS_USER`` kill switch. The wrapperFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.…ntity, including OAuth and header-based sudo. This is intentional — an explicit admin override should win over implicit gateway routing — but the underlying credentials must …Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.from looker_mcp_server.main import build_http_middleware, build_server_authFix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.# from argument-driven sudo (admin per-call impersonation).Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.policy wrapper around argument sudo would."""Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.`400 Developer mode required`. `act_as_user` is propagated throughFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.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 looker-mcp-server@0.26.1 as of 45 h ago. This is the package itself, not its dependencies.
What would make this Verified
8 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim ultrathink-solutions: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Privileged sudo command≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- 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.
- Credential pass-through configuration≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Process kill command≈ +2 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- MCP server using network transport (SSE/HTTP)≈ +2 on the totalNamespace tool names and keep tool descriptions literal; no instructions to the agent inside them.