Medium
github · 92 files analyzed
GLips/Figma-Context-MCP
Powerful capabilities — review before trusting.
View source ↗Outbound network 3
Environment variables (config / keys) 9
Filesystem writes 1
Shell / command execution 2
AI review
This is a legitimate Figma MCP server with no hidden instructions or data exfiltration mechanisms. The code accesses environment variables for configuration (API keys, telemetry opt-out) and uses child_process for running tests and release automation, which is expected behavior for a CLI tool.
- low Standard environment variable usage for configuration — The code reads environment variables like FIGMA_API_KEY, FRAMELINK_TELEMETRY, and NODE_ENV for normal configuration purposes. This is expected for an MCP server that needs API credentials and respects user preferences.
- low Child process usage in tests and release scripts — execSync and spawn are used in test files and release automation scripts (gh CLI commands). These are legitimate uses for running integration tests and managing GitHub releases, not for hidden command execution.
- low Network calls to Figma API and image downloads — The code makes network requests to the Figma API (fetch-json.ts) and downloads images (common.ts) as part of its stated purpose of fetching Figma design data. No suspicious or unauthorized endpoints detected.
Model: deepseek-chat
Static findings
Shell / command execution · Executes shell / system commands
medium
scripts/scan-hidden-chars.mjs:18
import { execSync } from "node:child_process";
info
src/tests/server.test.ts:6
import { spawn, type ChildProcess } from "child_process";
Environment variables (config / keys) · Reads environment variables (config / API keys)
low
src/bin.ts:10
version: process.env.NPM_PACKAGE_VERSION ?? "unknown",
low
src/config.ts:50
return process.env[name] || undefined;
low
src/mcp/index.ts:17
version: process.env.NPM_PACKAGE_VERSION ?? "unknown",
low
src/telemetry/client.ts:83
if (process.env.FRAMELINK_TELEMETRY === "off") return false;
info
src/tests/integration.test.ts:11
const describeOrSkip = process.env.RUN_FIGMA_INTEGRATION === "1" ? describe : describe.skip;
info
src/tests/stdio.test.ts:36
env: { ...process.env, NODE_ENV: "cli" },
low
src/utils/logger.ts:21
if (process.env.NODE_ENV !== "development") return;
low
src/utils/proxy-env.ts:17
return PROXY_ENV_VARS.some((n) => process.env[n] || process.env[n.toLowerCase()]);
low
tsup.config.ts:3
const isDev = process.env.npm_lifecycle_event === "dev";
Outbound network · Makes outbound network requests
info
src/services/get-figma-data-metrics.ts:43
/** Wall-clock ms spent on the Figma API fetch (network + parse). */
low
src/utils/common.ts:33
const response = await fetch(imageUrl, {
low
src/utils/fetch-json.ts:65
const response = await fetch(url, fetchOptions);
Filesystem writes · Reads or writes the filesystem
low
src/utils/common.ts:66
fs.unlink(fullPath, () => {});
Scanning every extension your team installs?
Pro & Team add monitoring, private scans, and a CI gate for unsafe extensions.
MCPVet is a heuristic aid, not a security guarantee. A clean grade does not prove an extension is safe; always review code and instructions you don't trust.