Skills/npm/mcp-server

mcp-server@0.8.0

CAUTION· not started

Publisher claims: "Stdio and Streamable HTTP MCP server for Thalovant control-plane and hub runtime APIs." Observed in sandbox: no network, touches nothing outside the project, writes no memory.

Registry npm (MCP server)Publisher thalovant · publishing for 131 daysInstalls 2,216Last detonated 5d ago

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
CONSOLE_REPLACE_TOKENMCP_AUTH_TOKENMCP_HTTP_ALLOW_CLIENT_CREDENTIAL_PATHSMCP_HTTP_ALLOW_UNAUTHENTICATEDMCP_HTTP_AUTH_MODEMCP_HTTP_AUTH_TOKENMCP_HTTP_AUTH_TOKENSMCP_OAUTH_AUDIENCEMCP_OAUTH_AUTHORIZATION_SERVERSMCP_OAUTH_CLIENT_IDMCP_OAUTH_CLIENT_SECRETMCP_OAUTH_INTROSPECTION_URLMCP_OAUTH_ISSUERMCP_OAUTH_JWKS_URLMCP_OAUTH_REQUIRED_SCOPESMCP_OAUTH_SCOPES_SUPPORTEDNO_SECRETS_HERETHALOVANT_ACCESS_KEYTHALOVANT_ACCESS_TOKENTHALOVANT_ALLOW_DEFAULT_PRINCIPAL_CREDENTIALSTHALOVANT_ALLOW_SHARED_CREDENTIALSTHALOVANT_API_TOKENTHALOVANT_PASSWORDTHALOVANT_PRINCIPAL_CREDENTIALS_DIRTHALOVANT_PRINCIPAL_CREDENTIALS_FILEConfiguration, not credentials: MCP_ALLOWED_HOSTS, MCP_ALLOWED_ORIGINS, MCP_AUDIT_INCLUDE_ARGS, MCP_AUDIT_LOG, MCP_AUDIT_LOG_FILE, MCP_EVENT_STORE_FILE, MCP_HTTP_ALLOWED_HOSTS, MCP_HTTP_ALLOWED_ORIGINS, MCP_HTTP_ENABLE_JSON_RESPONSE, MCP_HTTP_HOST, MCP_HTTP_MAX_BODY_BYTES, MCP_HTTP_PATH, MCP_HTTP_PORT, MCP_HTTP_PUBLIC_URL, MCP_HTTP_RATE_LIMIT_MAX
Where it talks to
thalovant.com (its own)
What the honeypot saw
no credential files read · no network
What we could not test
server startup · the tool list · tool behavior

Connect it with a scoped credential, under the guard. It asks for CONSOLE_REPLACE_TOKEN, MCP_AUTH_TOKEN, MCP_HTTP_ALLOW_CLIENT_CREDENTIAL_PATHS, MCP_HTTP_ALLOW_UNAUTHENTICATED, MCP_HTTP_AUTH_MODE, MCP_HTTP_AUTH_TOKEN, MCP_HTTP_AUTH_TOKENS, MCP_OAUTH_AUDIENCE, MCP_OAUTH_AUTHORIZATION_SERVERS, MCP_OAUTH_CLIENT_ID, MCP_OAUTH_CLIENT_SECRET, MCP_OAUTH_INTROSPECTION_URL, MCP_OAUTH_ISSUER, MCP_OAUTH_JWKS_URL, MCP_OAUTH_REQUIRED_SCOPES, MCP_OAUTH_SCOPES_SUPPORTED, NO_SECRETS_HERE, THALOVANT_ACCESS_KEY, THALOVANT_ACCESS_TOKEN, THALOVANT_ALLOW_DEFAULT_PRINCIPAL_CREDENTIALS, THALOVANT_ALLOW_SHARED_CREDENTIALS, THALOVANT_API_TOKEN, THALOVANT_PASSWORD, THALOVANT_PRINCIPAL_CREDENTIALS_DIR, THALOVANT_PRINCIPAL_CREDENTIALS_FILE and talks to thalovant.com. Give the credential to the guard, not the server: the value never enters the server's environment and only travels to the host you bind. What the tools do with a real credential was not observed.

$vet-skills run --secrets CONSOLE_REPLACE_TOKEN=thalovant.com,MCP_AUTH_TOKEN=thalovant.com,MCP_HTTP_ALLOW_CLIENT_CREDENTIAL_PATHS=thalovant.com,MCP_HTTP_ALLOW_UNAUTHENTICATED=thalovant.com,MCP_HTTP_AUTH_MODE=thalovant.com,MCP_HTTP_AUTH_TOKEN=thalovant.com,MCP_HTTP_AUTH_TOKENS=thalovant.com,MCP_OAUTH_AUDIENCE=thalovant.com,MCP_OAUTH_AUTHORIZATION_SERVERS=thalovant.com,MCP_OAUTH_CLIENT_ID=thalovant.com,MCP_OAUTH_CLIENT_SECRET=thalovant.com,MCP_OAUTH_INTROSPECTION_URL=thalovant.com,MCP_OAUTH_ISSUER=thalovant.com,MCP_OAUTH_JWKS_URL=thalovant.com,MCP_OAUTH_REQUIRED_SCOPES=thalovant.com,MCP_OAUTH_SCOPES_SUPPORTED=thalovant.com,NO_SECRETS_HERE=thalovant.com,THALOVANT_ACCESS_KEY=thalovant.com,THALOVANT_ACCESS_TOKEN=thalovant.com,THALOVANT_ALLOW_DEFAULT_PRINCIPAL_CREDENTIALS=thalovant.com,THALOVANT_ALLOW_SHARED_CREDENTIALS=thalovant.com,THALOVANT_API_TOKEN=thalovant.com,THALOVANT_PASSWORD=thalovant.com,THALOVANT_PRINCIPAL_CREDENTIALS_DIR=thalovant.com,THALOVANT_PRINCIPAL_CREDENTIALS_FILE=thalovant.com -- npx -y @thalovant/mcp-server

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-09 and scored it 78/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; Prompting user to enter sensitive credentials. Summary: no network, touches nothing outside the project, writes no memory.

Behavior trace

Honeypot run · 7 s · 2 scenarios · 0 deviations
t+CategoryObserved action
0.0sprocessno install scripts in bundle
6.6sprocessdependency install exit 1 · (Use `node --trace-warnings ...` to show where the warning was created) npm error Cannot read properties of null (reading 'edgesOut') npm error A complete log of this run can be found in: /tmp/ks-detonate-bDKfmS/task/home/.npm/_logs/2026-11-09T14_47_03_009Z-debug-0.log
6.6sclaimednot started: dependency install failed (exit 1); the server itself was not observed
6.6sprocessscript backend runs setup only
6.6sprocessno install scripts to re-run

Static findings

MEDIUM
MCP server using network transport (SSE/HTTP)dist/index.js:3125 · MCP server using network transport (SSE/HTTP) — data sent over networkconst mcpServer = createServer({ transport: "streamable-http" });Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.
AST04
MEDIUM
File permission modification commandpackage.json:42 · File permission modification command — agent changes file ownership/permissions"build": "tsc && chmod 755 dist/index.js",Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.
AST05
HIGH
Access to sensitive file pathspackage.json:38 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files".env.example",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
CRITICAL
Prompting user to enter sensitive credentialsdist/chat-apps-output.js:113 · Prompting user to enter sensitive credentials — social engineeringparts.push(`Token missing: the bridge's token has not reached it. If this lasts more than a few minutes, paste the token again in ${CONSOLE_REPLACE_TOKEN}.`);Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST03
LOW
Authorization escalation languageCHANGELOG.md:211 · Authorization escalation language · informational: not an instruction file…` and (admin-only) `ownerId` arguments to the model, so it no longer teaches an admin mode that only ever 403s for non-admin callers; only the plain overview call remains…Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.
AST01

Cost to the agent

Instructions loaded
≈59 tok
1 file · 27 in bundle
Tool list per prompt
≈0 tok
0 tools · 0 per tool
Handshake
no reply
launch to tools/list, stdio
Undocumented tools
0
description under 20 chars · avg 0

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 @thalovant/mcp-server@0.8.0 as of 5d ago. This is the package itself, not its dependencies.

What would make this Verified

2 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%
  1. Prompting user to enter sensitive credentials≈ +9 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
  2. Unclaimed publisher≈ +8 on the totalClaim thalovant: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
  3. 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.
  4. 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.
  5. File permission modification command≈ +2 on the totalRequest the narrowest permission that works; replace wildcards with the exact paths or hosts.
Publish a new version to npm, then queue it here. Not your skill? Claim the handle to get verdict changes by email.Claim thalovantPropose a patch to the maintainer