MCP server to connect an MCP client (Cursor, Claude Desktop etc) with your ZenML MLOps and LLMOps pipelines
- capability exposure inferred + 35
- recent drift inferred + 20
- tool safety inferred + 17
- trust mitigators mixed − 5
inferred mixed
The A–E grade is our heuristic synthesis — a "review this" prompt, not a verdict. Each factor is tagged by what backs it: attested (a verifiable record), reported (a third party's claim), or inferred (our own heuristic, e.g. permissions). See methodology.
graded 4m ago · see ecosystem CVEs →
- C · 59 → D · 67
- B · 23 → C · 59
- B · 25 → B · 23
- B · 27 → B · 25
- B · 23 → B · 27
- B · 28 → B · 23
- C · 38 → B · 28
- C · 35 → C · 38
No known CVEs for this server.
- high dangerous code
dynamic exec: pickle.loads(), eval()/exec(), __import__()
- medium toxic flow (lethal trifecta)
lethal trifecta reachable across this server's tool + source surface: private-data access + untrusted-content ingestion + network exfil (a leg is proven only in the analyzed source)
- low dangerous code
env-secret-flows-to-network-py: An environment value (often a secret/token) flows into a network call — possible credential exfiltration. (/scratch/obs-code-vJlGTw/zenml-io-mcp-zen
analyzed commit d67c059 · analyzer v28 · 4d ago
skills & prompt files 11
- agent-rules zenml-io-mcp-zenml-d67c059/AGENTS.md
- agent-rules zenml-io-mcp-zenml-d67c059/CLAUDE.md
- agent-rules zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/AGENTS.md
- agent-rules zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/CLAUDE.md
- agent-rules zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/zenml/cli/AGENTS.md
- agent-rules zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/zenml/integrations/AGENTS.md
- agent-rules zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/zenml/models/AGENTS.md
- agent-rules zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/zenml/orchestrators/AGENTS.md
- agent-rules zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/zenml/zen_server/AGENTS.md
- agent-rules zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/zenml/zen_stores/migrations/AGENTS.md
- agent-rules zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/zenml/zen_stores/schemas/AGENTS.md
danger signals33
- dynamic code execution pickle.loads() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/anyio/to_interpreter.py :130
res = pickle.loads(res) - dynamic code execution pickle.loads() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/anyio/to_process.py :94
retval = pickle.loads(pickled_response) - dynamic code execution eval()/exec() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/attr/_make.py :227
eval(bytecode, globs, locs) - dynamic code execution eval()/exec() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/cffi/recompiler.py :78
flags = eval(self.flags, G_FLAGS) - dynamic code execution eval()/exec() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/cffi/setuptools_ext.py :26
exec(code, glob, glob) - dynamic code execution __import__() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/cffi/verifier.py :151
pkg = __import__(self.ext_package, None, None, ['__doc__']) - dynamic code execution __import__() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/cloudpickle/cloudpickle.py :469
__import__(name) - dynamic code execution pickle.loads() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/pydantic/deprecated/parse.py :54
return pickle.loads(bb) - dynamic code execution pickle.loads() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/pydantic/v1/parse.py :42
return pickle.loads(bb) - dynamic code execution eval()/exec() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/pydantic/v1/utils.py :195
eval('__IPYTHON__') - dynamic code execution __import__() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/pygments/formatters/__init__.py :38
mod = __import__(module_name, None, None, ['__all__']) - dynamic code execution eval()/exec() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/pygments/formatters/__init__.py :103
exec(f.read(), custom_namespace) - dynamic code execution __import__() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/pygments/lexers/__init__.py :45
mod = __import__(module_name, None, None, ['__all__']) - dynamic code execution eval()/exec() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/pygments/lexers/__init__.py :154
exec(f.read(), custom_namespace) - dynamic code execution __import__() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/pygments/sphinxext.py :161
mod = __import__(module, None, None, [classname]) - dynamic code execution __import__() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/pygments/styles/__init__.py :45
mod = __import__(mod, None, None, [cls]) - dynamic code execution __import__() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/requests/packages.py :9
locals()[package] = __import__(package) - dynamic code execution eval()/exec() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/setuptools/_distutils/compilers/C/base.py :1113
if lib_type not in eval(expected): - dynamic code execution __import__() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/setuptools/_distutils/compilers/C/base.py :1286
__import__(module_name) - dynamic code execution eval()/exec() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/setuptools/_distutils/core.py :268
exec(code, g) - dynamic code execution __import__() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/setuptools/_distutils/dist.py :843
__import__(module_name) - dynamic code execution eval()/exec() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/setuptools/build_meta.py :317
exec(code, locals()) - dynamic code execution __import__() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/setuptools/extension.py :24
__import__(cython_impl, fromlist=['build_ext']).build_ext - dynamic code execution eval()/exec() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/setuptools/launch.py :32
exec(code, namespace) - dynamic code execution __import__() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/setuptools/tests/test_bdist_wheel.py :624
return importlib.__import__(name, *args, **kwargs) - dynamic code execution eval()/exec() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/setuptools/tests/test_editable_install.py :447
exec(finder, loc, loc) - dynamic code execution pickle.loads() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/setuptools/tests/test_extern.py :15
pickle.loads(pickle.dumps(Distribution())) - dynamic code execution eval()/exec() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/setuptools/wheel.py :212
(req for req in reqs if for_extra(req) and eval(req, extra=extra)), - dynamic code execution __import__() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/six.py :87
__import__(name) - dynamic code execution eval()/exec() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/typing_extensions.py :4034
value if not isinstance(value, str) else eval(value, globals, locals) - dynamic code execution eval()/exec() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/typing_inspection/typing_objects.py :101
exec(func_code, globals_, locals_) - dynamic code execution __import__() zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/yaml/constructor.py :531
__import__(name) - over-broad OAuth scope https://www.googleapis.com/auth/cloud-platform zenml-io-mcp-zenml-d67c059/mcp-zenml.mcpb!/server/lib/zenml/integrations/gcp/service_connectors/gcp_service_connector.py :1163
"https://www.googleapis.com/auth/cloud-platform",
- recent drift +20 capability drift →
Heuristic, inferred signals — false positives (legitimately powerful tools, forks, language ports) are expected. Treat each as "review this", not a verdict. See the ecosystem-wide picture on the security hub, or the fleet security of zenml-io.