emo-cyber-agent
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@emo-cyber-agentrun a quick security audit of this repo and summarize findings"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.

EMO-Cyber-Agent β the security subagent your AI stack can actually trust
Stop letting your coding agent guess about security. Give it a specialist: scoped read-only audits, evidence-backed findings, and verification plans β over CLI, MCP, or Python, with zero code changes and zero invented results.
β 2,738 tests green | Full suite passing, 36/36 schemas valid |
π 7 MCP tools | Works with OpenCode, Pi, Hermes, Jan, AnythingLLM |
π₯οΈ 3 OSs proven | Live runtime parity: Linux + Windows + macOS |
π Read-only by design | Default-deny policy engine; it cannot edit your code |
Get value in 60 seconds
pip install emo-cyber # requires Python >= 3.11
cyber-agent audit . --format json > result.jsonThat's it β a machine-checkable security audit of your project. No API keys, no provider lock-in, no code changes. Then wire it into your agent:
{ "mcpServers": { "emo-cyber-agent": { "command": "cyber-agent", "args": ["mcp"] } } }β If this saves you one bad merge, star the repo β it keeps the project alive.
Related MCP server: mcp-audit
Who it's for
AI agent builders β your Codex/Cline/OpenCode agent writes fast and breaks things fast. Delegate every security question to a governed specialist instead of a confident guess.
CI / platform teams β gate merges on stable JSON contracts and machine-readable exit codes, not on prose opinions.
Security reviewers β triage evidence-linked findings (with provenance and verification plans) instead of chasing hallucinations.
Why governed security for agents
AI coding agents ship code fast β and every generated diff, prompt, dependency, and tool call is a new attack surface. Generic assistants will happily opine about security, but their answers are ungrounded, unverifiable, and bound to no policy. EMO-Cyber-Agent exists for the gap in between: a specialist subagent that owns the security workflow, runs deterministic checks around probabilistic reasoning, and returns findings your pipeline can actually act on.
What it does
Scoped security audits of a project tree (
quick,standard,deep), with focus areas (auth,secrets,deps, β¦).Focused reviews of a target, verification planning for a candidate finding (plans, never exploits), and evidence-linked reports in JSON, JSONL, or Markdown.
Threat-intel lookups (leak monitor, feed triage, ATT&CK mapping β defensive knowledge only, no network calls, no execution) via MCP.
Stable JSON contracts across CLI, MCP, and the Python API, so results are machine-checkable in CI.
What it does not do
No auto-remediation and no production changes by default.
No exploit development and no offensive operations.
Not a replacement for SAST, SCA, secret scanners, DAST, runtime security, or human security review.
No scores-as-verdicts: findings carry evidence and provenance, not ratings.
EMO-Cyber vs the alternatives
Generic AI assistant | Traditional scanner | EMO-Cyber-Agent | |
Grounded in your repo | β guesses | β rules | β evidence-linked |
Understands agent workflows | β | β | β MCP-native, 7 tools |
Policy-enforced (not prompt-suggested) | β | β | β default-deny engine |
Verification before confirmation | β | β οΈ partial | β plans + provenance |
Model-agnostic, no lock-in | β | β | β bring any model |
Read-only, cannot break prod | β | β | β by design |
Why it is different
Model-agnostic. No weights, no provider lock-in. The product is the methodology, control loop, tool contracts, and evidence model β bring any model or run it model-free in CI.
Policy-enforced, not prompt-suggested. A default-deny
PolicyEnginein Core decides; CLI and MCP are thin adapters that cannot widen capabilities, whatever a prompt or tool description claims.Evidence-first. No material finding without evidence; tool outputs are data, never instructions; repository content is untrusted by default.
Verification before confirmation. Candidates become plans with methods, locators, and rationale β confirmation requires evidence.
Read-only by default. Destructive actions need an explicit permission transition; progress is advisory-only and recovery is bounded and fail-closed.
Architecture
Host / CI / You βββΆ CLI Β· MCP (stdio + Streamable HTTP) Β· Python API
β thin adapters, no authority
βΌ
Core: Policy β Tools β Evidence β Reasoning
β Verification β Findings β ReportingCore owns every security decision. Deterministic tool adapters (argv-only,
confined, secret-free execution) surround the reasoning loop; the evidence
graph correlates deterministically; the finding lifecycle gates promotion.
Details: docs/02-architecture.md, docs/03-security-methodology.md.
Quick start
pip install emo-cyber # requires Python >= 3.11
cyber-agent --help
cyber-agent doctor # presence checks; never prints secrets
cyber-agent audit . --format json > result.jsonFrom source (developers):
pip install -e '.[all]'Docker (reproducible runtime and test target):
make docker-build
make docker-run
make docker-test
make docker-unitThe runtime runs as an unprivileged user with a read-only filesystem, no
Linux capabilities, and no network access. See docs/docker.md for the
security model and release-image pinning requirements.
MCP and integrations
Register once as an MCP server, then delegate from any compatible host:
{ "mcpServers": { "emo-cyber-agent": { "command": "cyber-agent", "args": ["mcp"] } } }Seven tools (the last opt-in): cyber_audit, cyber_review,
cyber_verify, cyber_report, cyber_status, cyber_extensions,
cyber_threat_intel. Transports: stdio plus Streamable HTTP
(localhost by default, with Host/Origin/session validation).
Per-host guides: docs/integrations/ (OpenCode, Pi, Hermes, Jan,
AnythingLLM, generic MCP, delegation rules, security model).
Host | Status |
Generic MCP host (stdio) | Contract Tested |
OpenCode | Supported (config), Contract Tested discovery |
Pi (stdio / Streamable HTTP) | Supported (config), project-scoped |
Hermes (per-server filtering) | Supported (config), least-surface guidance |
Jan (Desktop + Agent/CLI shared config) | Supported (config) |
AnythingLLM (workspace/RAG = untrusted inputs) | Supported (config), boundary guidance |
Levels: Supported = config + mapping shipped; Contract Tested = in-repo
contract tests; Environment Tested = live binary exercised (where available);
otherwise Not Tested β see docs/integrations/ per host.
Example workflow: an authorized audit, end to end
# 1. Check operational presence (no secrets printed).
cyber-agent doctor
# 2. Run a scoped, read-only audit; findings never change the exit code.
cyber-agent audit ./my-service --mode standard --format json > audit.json
python -c "import json; print(json.load(open('audit.json'))['result']['status'])"
# 3. Request a verification plan for a candidate (input is never authorization).
cyber-agent verify --candidate cand.json --method static-review \
--kind sast --locator src/auth/login.py:42 --rationale "unverified input reaches query" \
--audit-id <id-from-audit.json>
# 4. Render the evidence-backed report for humans or the pipeline.
cyber-agent report --findings findings.json --audit-id <id> --format markdownExit codes stay machine-readable and separate from findings:
0 success Β· 1 audit/domain failure Β· 2 invalid input Β·
3 policy denied Β· 4 security blocked Β· 5 provider/tool unavailable Β·
6 verification inconclusive Β· 7 internal error.
Commands
cyber-agent doctor | audit | review | verify | status | report | extensions | mcpaudit takes --mode quick|standard|deep, --focus a,b,
--format human|json, and --output PATH. Only implemented options
exist β there are no --shell, --exec, --grant, --sudo,
--allow-write, or --bypass-policy flags, and no secret-valued flags
(use environment or secret providers).
Platform parity (evidence-first)
Live runtime proof, not CI-smoke claims. Method: real runners, real
installs, real CLI/MCP/HTTP/security batteries β green run
#37866150660.
Per-platform evidence lives in docs/evidence/:
Platform | Status |
Linux (ubuntu-24.04, Python 3.11 + 3.14) | Runtime PASS β 234/234 checks Γ2 combos (wheel + sdist + PyPI origins; |
Windows (windows-2025, Python 3.11 + 3.14) | Runtime PASS β 234/234 Γ2 combos; live PowerShell session NOT-EXECUTED, documented gap ( |
Android emulator (API 34, ARM64) via Termux | PASS β install + CLI/MCP/HTTP/security/E2E + independent review; verified working, not an officially supported platform ( |
macOS (arm64) | PASS β full suite 2720 passed / 0 failed + live CLI/MCP checks ( |
Honestly open (never inflated to PASS): Pi/Jan native delegation and
AnythingLLM adversarial-via-host are ENVIRONMENT-BLOCKED with reproducible
reasons; test-key rotation is LOW / OPEN (operator step). See
docs/evidence/POST-T021-final-review.md.
Limitations
Read-only analysis; no auto-remediation, no exploit capabilities, no scores-as-verdicts. Live-host interop beyond contract tests is environment-dependent (see host docs). Progress never gates security decisions; recovery never mutates policy, evidence, or findings.
FoundationSecurityAuditor.audit currently invokes locally installed Gitleaks
through the strict read-only tool boundary and returns redacted scanner
observations as evidence. It remains partial: Semgrep is intentionally not
run until offline rule configuration is verified, Trivy and OSV-Scanner are
not part of this local path, and finding classification/full control coverage
are not implemented. review and verify remain partial stubs. A successful
CLI process or an empty findings list is not a completed security assessment.
Verification and tests
make test # full suite (pytest, ~2 min)
python -m pytest tests/unit -q # unit scope onlyRelease-gate checks live in tests/release/; benchmark corpus sanity in
tests/unit/test_benchmark_*.py. Every material finding requires evidence;
verification precedes confirmation β see docs/03-security-methodology.md.
Reference documentation
Specs and contracts:
docs/(02-architecture.md,05-mcp-interface.md,06-cli-interface.md,07-python-api.md,08-tool-contracts.md).Host guides:
docs/integrations/(OpenCode, Pi, Hermes, Jan, AnythingLLM, generic MCP, delegation rules, security model).Threat model and guardrails:
docs/13-threat-model.md,docs/14-safety-guardrails.md,docs/policies/.Release provenance:
CHANGELOG.mdanddocs/evidence/.Contributing:
CONTRIBUTING.md.
Security vulnerabilities
Do not open a public issue for a suspected vulnerability. Report it
privately as described in SECURITY.md.
Contribute β help secure the agent era
Good first issues: host guides, benchmark cases, docs. PRs are reviewed against the same evidence bar the product enforces.
git clone https://github.com/SE-Emam/EMO-Cyber-Agent.git
cd EMO-Cyber-Agent && make checkSee CONTRIBUTING.md. If the project helps you, β star it β
discoverability is our growth engine.
License
Apache-2.0 β see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Live behavioral security verifier, schema auditor, and trust oracle for A2A, MCP & x402 agents.
Zero-secret MCP gateway for AI agents: risk-scored, audited calls with human-in-the-loop approval.
Read-only Remote MCP for externally grounded AI agent trust receipts.
Read-only smart-contract security intelligence for autonomous agents.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceRead-only MCP server that answers questions about turva.dev from its published data. Five tools return JSON: the service catalog with prices, contact and operator details, engagement principles and dated agent-readiness and security evidence with verification links. Connect over Streamable HTTP. You need no API key. The server does not scan other websites or run audits.MIT
- AlicenseNot gradedqualityAmaintenanceAudits MCP server configurations for security risks including capability inventory, SSRF, prompt injection, and drift detection. Works in read-only mode and can also be used as an MCP server to let AI agents audit their own attack surface.178 PyPI4MIT
- AlicenseNot gradedqualityCmaintenanceEnables authorized security auditing of AI-agent supply chains and agent-facing surfaces: deterministic local skill-bundle audits against eight attack patterns, secrets scanning, and scope-gated read-only recon of agent endpoints and MCP surfaces.MIT
- AlicenseAqualityAmaintenanceEnables AI agents to run read-only AWS security audits and receive normalized, severity-ranked findings about account posture, such as stale access keys, missing MFA, public buckets, open security groups, and CloudTrail coverage.11MIT