Why this verdict
- benign: 325 checks satisfied, no findings for mcp-server:.
Security findings 0
No security findings
No suspicious or malicious behavior was found; 3 candidate findings were refuted on review.
Execution chain 31
What it calls, runs, installs, reads and writes, with the line that does it.
GitHub repositories 4
vicseeai/vicsee-mcp-server
vicseeai/vicsee-mcp-server
vicseeai/vicsee-mcp-server
vicseeai/vicsee-mcp-server
Packages 1
npm:@vicsee/mcp-server@0.3.3
URLs 16
https://github.com/vicseeai/vicsee-mcp-server
https://github.com/vicseeai/vicsee-mcp-server.git
https://github.com/vicseeai/vicsee-mcp-server/issues
https://github.com/vicseeai/vicsee-mcp-server#readme
https://mcp.vicsee.com/mcp
https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json
https://vicsee.com/api/v1
https://vicsee.com/api/v1
https://vicsee.com/api/v1
https://vicsee.com/api/v1/internal/mcp/resolve-user-key
https://vicsee.com/connect/authorize
Refuted findings 3
Candidates the review stage examined and rejected, kept for transparency.
Data exfiltration
criticalRefutedlow confidenceThe vicsee_upload tool reads an agent-supplied local file path and uploads its bytes to VicSee's remote storage, returning a public URL, so an agent could be steered into publishing local media files; the extension allowlist and the declared purpose limit this.
Upload a LOCAL file (image, video, or audio) from this machine and get back a public https URL.
Why it was refuted
Uploading a local file to get a public URL is the tool's declared core purpose, stated in its own metadata. It is limited by an extension allowlist and size caps, and it exposes nothing beyond what the description says.
Data exfiltration
criticalRefutedlow confidencevicsee_upload reads any agent-supplied local file path (image/video/audio extensions) and PUTs it to a presigned storage URL returning a public URL; this is the declared core purpose, but the tool could upload sensitive local media to a public CDN if an agent is prompted to, with no path restriction.
bytes = await readFile(file_path);
Why it was refuted
The readFile call is the implementation of the declared upload capability. The tool description discloses it, and it sits behind an extension allowlist and size caps.
Data exfiltration
criticalRefutedlow confidenceAny tool taking image inputs (resolveImageInput) reads an arbitrary agent-supplied local path (restricted to image extensions) and inlines it as base64 into API requests to VicSee; the local-file inlining is mentioned only in code comments, not in tool metadata, so it is a lightly disclosed capability that allows any local image file to be sent off-host.
bytes = await readFile(value);
Why it was refuted
Inlining a local image as base64 is a disclosed feature of the wrapper, needed because the API accepts only public URLs or data: URIs. Only image extensions are read, and the data goes to the wrapped VicSee service, which is the declared core function.