Install
$ agentstack add skill-ulises-jeremias-agent-toolkit-mcp-audit Open-source listing, not yet scanned by AgentStack. Follow the source repository for install instructions.
Security review
⚠ Flagged1 finding(s); flagged for manual review. · v0.1.0 How review works →
- • Prompt-injection patterns
- • Secret / credential exfiltration
- • Dangerous shell & filesystem operations
- • Untrusted network calls
- • Known-malicious package signatures
- high Possible prompt-injection directive.
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
MCP Audit — Config + Implementation Security
Audit MCP servers before adopting — static inspection only, never execute remote servers. Use when reviewing mcp/registry/*.yaml, mcp/templates/*/config.template.json, skill/plugin MCP declarations, or when a static surface scan flags MCP references.
Single skill, two modes — decision per #379 review: config and implementation scopes meaningfully overlap (both inspect mcp/registry/*.yaml + templates), but checklists differ enough to keep separate gates. One skill with two modes avoids duplicating registry parsing while keeping config (secret hygiene, version pinning) distinct from implementation (command injection, SSRF, tool poisoning).
> Static only: Do not start or call remote MCP servers during audit. Inspect YAML/JSON, package provenance, tool descriptions, and env handling.
Modes
| Mode | What it checks | Evidence | |------|----------------|----------| | Config audit | mcp/registry/*.yaml auth, package provenance, version pinning, remote vs local, OAuth, env/secret exposure, permissions | Registry YAML, template JSON, env var names, docs/MCP.md | | Implementation audit | Command injection, shell execution, SSRF, unsafe args, tool description poisoning, secret env leakage, dangerous permissions, transport security | Skill SKILL.md + static surface patterns (shell/network/mcp/hooks), tool definitions, args validation, network_hosts |
Run the relevant mode per request; for full adoption review, run both and emit a single mcp-audit-report.md.
Config audit — checklist
Auth & secrets
- [ ]
auth.envlists only env var names, never values (scan registry YAML forghp_,xoxb, hardcoded tokens) - [ ] Template
config.template.jsonuses${ENV_VAR}placeholders (no real credentials) - [ ] Remote MCP (
streamable_httpURL likehttps://mcp.figma.com/mcp) documents auth asbearer-envwith region var, not query param - [ ] Local MCP (
stdiovianpx/docker/uvx) does not embed secrets inargs— secrets only inenv - [ ] No
default-branch pushorfilesystemWritesbeyond declaredsecurity.network_hosts
Version pinning & provenance
- [ ]
implementation.packageis machine-verifiable: npmchrome-devtools-mcp@latest/ dockerghcr.io/.../ URLhttps://mcp.figma.com/mcp— not barelatestwithout policy - [ ]
implementation.version_policydeclared (npx-latest,pin image digest,pin to minor) and matches templateargs(-y chrome-devtools-mcp@latestvsmcp-notion-server) - [ ]
implementation.provenance=officialwithrepositoryURL +licenseverifiable viagh api(e.g., ChromeDevTools/chrome-devtools-mcp Apache-2.0, github/github-mcp-server MIT) - [ ] Remote vs local decision documented: remote (Figma) for designer-hosted, local (GitHub/Slack/Notion) for on-host execution — no mixed remote + local for same provider without rationale
Permissions & env exposure
- [ ]
security.network_hostsenumerates expected hosts (no*, no private.local/192.168.) - [ ]
security.secret_storage=environment variablewithsecret_storagenotes - [ ]
platformsmatrix declares support per target (native/bridged/manual) — no assumed universal - [ ]
approval.defaultmatches risk:read-onlyfor Figma/GitHub vsread-writefor Chrome DevTools (can modify page) — justified
Per-template gate
- [ ] Template
command∈npx|docker|uvxandargs[:2] == ["-y", provider.package]fornpx(verified bytests/test_mcp_templates.py)
Implementation audit — checklist
Command injection & shell
- [ ]
argscontain no shell interpolation ($(, ``,;,&&,|). MCPcommandis single binary, notsh -c`. - [ ]
commandis notsh/bash/python -cwith concatenated args — use directnpx/dockerentrypoint.
SSRF & network
- [ ] URL args (
--browser-url,https://mcp.linear.app/mcp) are not user-controlled without allowlist;navigate_pagetool validates hosts. - [ ]
network_hostsdoes not include internal metadata endpoints (169.254.169.254,metadata.google.internal).
Tool poisoning & unsafe args
- [ ] Tool descriptions in registry
tools.read/writedo not contain prompt injections (e.g.,ignore previous instructions,send secrets to). - [ ] Tool
write/destructivesets are minimal — nodelete_filewhere read-only suffices (GitHubdestructivecorrectly listsdelete_fileonly there). - [ ] Args that become file paths (
FIGMA_OAUTH_TOKEN) are env var refs, not string interpolation.
Secret leakage & OAuth
- [ ] No
envvalue contains PII — only${VAR}placeholders in templates; registry listsenvnames withCHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICSstyle opt-outs. - [ ] OAuth flows (Linear) documented as browser OAuth, not token paste.
Workflow
- Load registry:
agent_toolkit.compiler.mcp_registry.load_registry(mcp/registry)— recordproviders, errors(evidence: registry count). - Pick mode:
config(default for adoption) orimplementation(for command/SSRF/poisoning) or both. - Run checks: For each
providerinproviders, apply the relevant checklist above; forimplementation, Grep the registry/templates for shell/network/hooks patterns and capture findings withfile:lineevidence. (Repo checkout/CI may also runv run scripts/audit-capability.vsh mcp/registry/.yaml --json— that script is not on the host install.) - Score:
ALLOW(no Blocking),CAUTION(Major, e.g., unpinned version, remote without TLS),BLOCK(Blocking: hardcoded secret, command injection, SSRF to metadata endpoint, provenance unknown). - Report: Emit
mcp-audit-report.md(seereferences/mcp-audit-template.md) with per-provider table:provider | config verdict | impl verdict | package/license | version_policy | provenance | evidence.
Example report row
| Provider | Config | Impl | Package | License | Version policy | Verdict | Evidence | |----------|--------|------|---------|---------|----------------|---------|----------| | chrome-devtools | ✅ auth none, package chrome-devtools-mcp@latest, npx-latest, no secrets | ✅ no shell, no SSRF, read-write justified | npm chrome-devtools-mcp@latest | Apache-2.0 | npx-latest | ALLOW | registry chrome-devtools.yaml + template config.template.json |
Relation to mcp skill
mcp(integrations/mcp) — how to setup (agent-toolkit mcp setup,mcp list,doctor) — orchestration.mcp-audit(this skill) — whether to trust — security gate before setup. Call this skill beforemcp setupfor unreviewed providers; delegatesupply-chain-auditfor full skill/plugin surface.
Delegation table
| Need | Skill | |------|-------| | Setup MCP after audit | integrations/mcp | | Full skill/plugin supply-chain | agentic-security/supply-chain-audit | | OWASP agentic review (prompt injection, tool poisoning, identity) | agentic-security/owasp-agentic-review (next issue) | | Output gate | output-handshake |
Security & compatibility
- Never execute MCP servers during audit; static YAML/JSON only.
- Portable:
gh apifor provenance license check,yaml+jsonschemaoffline.
References
references/mcp-audit-template.md— report template (per-provider verdict)mcp/registry/*.yaml— canonical registry (7 providers after #375)mcp/templates/*/config.template.json— host wiring (placeholders)- Static surface patterns in this skill’s checklists (shell/network/mcp/hooks); repo checkout/CI may use
scripts/audit-capability.vsh - MCP spec: https://modelcontextprotocol.io/ , ChromeDevTools MCP https://github.com/ChromeDevTools/chrome-devtools-mcp
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: ulises-jeremias
- Source: ulises-jeremias/agent-toolkit
- License: MIT
- Homepage: https://ulises-jeremias.github.io/agent-toolkit-archive/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.