MCP, MCP server
Penpot Mcp
Penpot Mcp, an MCP server listed in the PlugVet directory.
Compatibility: Not stated.
Grade B
Minor issues only, no Medium or High. Worth a quick look at the findings below before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
Rescanned at commit 37ec03275f0e, unchanged since the check below.
PERMISSION_DELETE_FILES SECRETS_PATH_DOTENV INSTALL_DOCUMENTED_INSTALLER SECRETS_ENV_READ
Why this grade
- PERMISSION_DELETE_FILES Low
Contains a call that can delete files.
lint.py, line 78
process = subprocess.run(cmd, shell=True, cwd=cwd) - SECRETS_PATH_DOTENV Low
Mentions a .env file.
test_credentials.py, line 22
print("❌ Missing credentials in .env file") - INSTALL_DOCUMENTED_INSTALLER Note
Documentation shows an installer that pipes a download into a shell.
CONTRIBUTING.md, line 40
curl -LsSf https://astral.sh/uv/install.sh | sh - SECRETS_ENV_READ Note
Reads an environment variable whose name contains KEY, SECRET, TOKEN, PASSWORD or CREDENTIAL.
test_credentials.py, line 19
password = os.getenv("PENPOT_PASSWORD")
Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.
Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.
What was checked
Plain notes from the hygiene checks.
Permissions
Concern
can delete files.
PERMISSION_DELETE_FILES
lint.py, line 78
process = subprocess.run(cmd, shell=True, cwd=cwd)
lint.py, line 106
process = subprocess.run(
penpot_mcp/server/mcp_server.py, line 267
os.remove(temp_filename)
Install and update
Note
The docs document an installer that pipes a download into a shell.
INSTALL_DOCUMENTED_INSTALLER
CONTRIBUTING.md, line 40
curl -LsSf https://astral.sh/uv/install.sh | sh
Network
Pass
No network call found.
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
test_credentials.py, line 19
password = os.getenv("PENPOT_PASSWORD")
test_credentials.py, line 22
print("❌ Missing credentials in .env file")
penpot_mcp/api/penpot_api.py, line 49
self.password = password or os.getenv("PENPOT_PASSWORD")
Show more
penpot_mcp/api/penpot_api.py, line 203
password = password or self.password or os.getenv("PENPOT_PASSWORD")
penpot_mcp/utils/config.py, line 23
PENPOT_PASSWORD = os.environ.get('PENPOT_PASSWORD')
.github/ISSUE_TEMPLATE/bug_report.md, line 34
- Are you using environment variables or .env file?
.gitignore, line 32
# Environment variables
CLAUDE.md, line 86
Create a `.env` file with:
CONTRIBUTING.md, line 53
cp env.example .env
CONTRIBUTING.md, line 55
# Edit .env with your Penpot credentials
README.md, line 144
Create a `.env` file based on `env.example` with your Penpot credentials:
README.md, line 185
1. Enable debug mode in your `.env` file by setting `DEBUG=true`
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Pass
No encoded or minified payload found.
Licence
Note
no licence file found.
LICENCE_MISSING
No file path was stored.
no licence file found.
Maintainer activity
Note
the latest commit is more than 365 days old.
MAINTAINER_STALE
No file path was stored.
2025-06-29T23:04:49+02:00
Note
Hygiene check of commit 37ec03275f0e. can delete files. The docs document an installer that pipes a download into a shell. reads a credential or environment file. no licence file found. the latest commit is more than 365 days old.
Date and source
Date checked:
github.com
Commit graded: 37ec03275f0eb46035cf730a481f46255e7220d5
This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.