registry  /  wenlan-mcp  /  0.12.1

wenlan-mcp@0.12.1

Local-first memory layer for AI agents - MCP server

AI Security Review

scanned 3h ago · by lpm-firewall-ai

`postinstall` retrieves an external platform-specific archive and extracts its MCP executable. The packaged JavaScript does not verify the archive checksum or signature before executing it later through the CLI wrapper.

Static reason
One or more suspicious static signals were detected.
Trigger
`npm install` downloads/extracts; invoking `wenlan-mcp` executes the extracted binary.
Impact
A compromised release asset or redirect target could supply executable code outside the reviewed package source.
Mechanism
install-time remote native-binary bootstrapper
Rationale
The source does not show concrete malicious behavior, but an install-time, unverified remote executable fetch is an inert staged payload carrier that cannot be fully evaluated by static inspection of this tarball.
Evidence
package.jsoninstall.jsrun.jsbin/wenlan-mcpbin/wenlan-mcp.exe
Network endpoints1
github.com/7xuanlu/wenlan/releases/download/v0.12.1/

Decision evidence

public snapshot
AI called this Suspicious at 87.0% confidence as Unknown with medium false-positive risk.
Evidence for warning
  • `package.json` runs `node install.js` as `postinstall`.
  • `install.js` downloads a versioned native archive during installation.
  • `install.js` follows up to 10 redirects and permits redirected HTTP URLs.
  • `install.js` extracts and chmods an unverified executable into `bin/`.
  • `run.js` executes the downloaded `bin/wenlan-mcp` binary.
Evidence against
  • Only five package files are present; no bundled binary or hidden payload exists.
  • No source reads credentials, environment variables, home directories, or agent config paths.
  • No exfiltration endpoint or telemetry logic is present in JavaScript.
  • The download URL is package-aligned: GitHub repository `7xuanlu/wenlan`.
Behavioral surface
Source
ChildProcessFilesystemNetwork
Supply chain
UrlStrings
ManifestNo manifest risk signals triggered.
scanned 2 file(s), 4.41 KB of source, external domains: github.com

Source & flagged code

2 flagged · loading source
package.jsonView file
scripts.postinstall = node install.js
High
Install Time Lifecycle Scripts

Package defines install-time lifecycle scripts.

package.jsonView on unpkg
scripts.postinstall = node install.js
Medium
Ambiguous Install Lifecycle Script

Install-time lifecycle script is not statically allowlisted and needs review.

package.jsonView on unpkg

Findings

1 High2 Medium3 Low
HighInstall Time Lifecycle Scriptspackage.json
MediumAmbiguous Install Lifecycle Scriptpackage.json
MediumNetwork
LowScripts Present
LowFilesystem
LowUrl Strings