MCP, MCP server
Moondream Mcp
A FastMCP server for Moondream, an AI vision language model.
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.
NETWORK_NO_FIXED_HOST SECRETS_PATH_DOTENV PERMISSION_SHELL_DECLARED SECRETS_ENV_READ
Why this grade
- NETWORK_NO_FIXED_HOST Low
Makes a network call whose host is not written as a fixed address.
examples/agent.py, line 479
response = requests.get(f"http://{host}:{port}/health", timeout=2) - SECRETS_PATH_DOTENV Low
Mentions a .env file.
examples/test_agent.py, line 12
# Load environment variables from .env file - PERMISSION_SHELL_DECLARED Note
Runs shell commands, and the manifest or description says so.
examples/agent.py, line 484
process = subprocess.Popen([server_command] + server_args.split()) - SECRETS_ENV_READ Note
Reads an environment variable whose name contains KEY, SECRET, TOKEN, PASSWORD or CREDENTIAL.
examples/agent.py, line 465
if not os.getenv("OPENAI_API_KEY"):
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
Note
requests shell access. The manifest names this permission.
PERMISSION_SHELL_DECLARED
examples/agent.py, line 484
process = subprocess.Popen([server_command] + server_args.split())
examples/test_agent.py, line 104
result = subprocess.run(
Install and update
Pass
No install-time script found, and dependencies are pinned or absent.
Network
Concern
can reach a host that is not written as a fixed address.
NETWORK_NO_FIXED_HOST
examples/agent.py, line 479
response = requests.get(f"http://{host}:{port}/health", timeout=2)
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
examples/agent.py, line 465
if not os.getenv("OPENAI_API_KEY"):
examples/test_agent.py, line 12
# Load environment variables from .env file
examples/test_agent.py, line 15
# Look for .env file in parent directory (moondream-mcp root)
Show more
examples/test_agent.py, line 16
env_path = Path(__file__).parent.parent / ".env"
examples/test_agent.py, line 78
openai_key = os.getenv("OPENAI_API_KEY")
.gitignore, line 122
# Environments
.gitignore, line 166
# Environment variables
.gitignore, line 167
.env.local
.gitignore, line 168
.env.development
.gitignore, line 169
.env.test
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Pass
No encoded or minified payload found.
Licence
Pass
A licence file is present (LICENSE).
Maintainer activity
Note
the latest commit is more than 365 days old.
MAINTAINER_STALE
No file path was stored.
2025-07-02T09:42:33-07:00
Note
Hygiene check of commit db935c23238f. requests shell access. The manifest names this permission. can reach a host that is not written as a fixed address. reads a credential or environment file. the latest commit is more than 365 days old.
Date and source
Date checked:
github.com
Commit graded: db935c23238f1225750a5a33a7678b82636f48a1
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.