Skip to main content
Glama

Documentation · Quickstart · Repo Structure · Policies · Roadmap


A guardrail should not merely tell an agent what it should do. The system should enforce what the agent is allowed to do.


Layers ③ and ⑤ ship complete in v0.1. The others ship at the minimum depth needed to make those two credible, then deepen along the roadmap.


⚙️ How it works

SHUGO presents itself to your agent as a standard MCP server and sits between the agent and the tools it calls. Every tools/call is evaluated against a human-readable policy file before it reaches an upstream server. No protocol changes. No agent code changes.

┌──────────────┐   MCP    ┌───────────┐   MCP    ┌──────────────────┐
│  MCP client  │ ───────▶ │   SHUGO   │ ───────▶ │ Upstream MCP     │
│ (any agent)  │ ◀─────── │   guard   │ ◀─────── │ servers (n)      │
└──────────────┘          └─────┬─────┘          └──────────────────┘
                                │
                    ┌───────────┼───────────┐
                    ▼           ▼           ▼
              guardrails    audit log    approval
                 .yaml      (JSONL)       channel

Works with Claude Desktop, Claude Code, Cursor, VS Code, and any framework with an MCP adapter — LangGraph, CrewAI, the OpenAI Agents SDK, n8n.


Related MCP server: flux7-mesh

⚡ Quickstart

uvx shugo init      # scaffold a policy from your existing MCP config
uvx shugo serve     # start guarding

Point your MCP client at SHUGO instead of your servers:

{
  "mcpServers": {
    "shugo": {
      "command": "uvx",
      "args": ["shugo", "serve", "--config", "guardrails.yaml"]
    }
  }
}

Your agent now sees only the tools policy allows, blocks on anything needing approval, and writes an audit record for every call it makes.


📜 Policy as code

The most important file in the project. Design target: a risk lead can read it unaided, and a reviewer can diff it in a pull request.

version: "0.1"

defaults:
  decision: deny            # deny by default; allowlist upward
  on_error: deny            # fail closed

rules:
  - id: read-only-github
    match:
      server: github
      tool: ["get_*", "list_*", "search_*"]
    decision: allow

  - id: no-force-push
    description: Force push can destroy history irrecoverably
    match:
      server: github
      tool: push
      args: { force: true }
    decision: deny
    reason: Force push is prohibited for autonomous agents.
    controls: [OWASP-LLM06, NIST-AI-RMF-MANAGE-2.2]

  - id: ticket-write-needs-approval
    match:
      server: tickets
      tool: ["update_ticket", "close_ticket"]
    decision: escalate
    approval:
      channel: cli
      timeout_seconds: 300
      on_timeout: deny
    controls: [EU-AI-ACT-ART-14]

Deny by default. First match wins, top to bottom. Globs, not regex — readability is the constraint.


🧾 Evidence, not just logs

Enforcement without evidence is unauditable. Evidence without enforcement is theatre. SHUGO does both.

shugo evidence --framework owasp-llm --since 30d --out evidence/

Reads the audit log and produces a control-by-control bundle: which rules were in force, how often each fired, approval latency, exceptions, coverage gaps, and a hash-chain integrity check.

Framework mappings ship as data files sourced from public standards only — NIST AI RMF, EU AI Act, OWASP Top 10 for LLM Applications, and ISO/IEC 42001 control identifiers.

Scope note. SHUGO produces evidence about the guardrail layer. It does not certify an organisation as compliant with any standard.


🧰 CLI

Command

Purpose

shugo serve

Run the guard proxy

shugo init

Scaffold a starter policy from installed MCP servers

shugo validate

Lint and schema-check the policy file

shugo explain

Dry-run a call — see which rule fires and why

shugo audit tail / verify

Inspect the log, verify the hash chain

shugo evidence

Generate an evidence bundle

shugo halt

Kill switch — deny all calls immediately


📦 Release notes — v0.1.0 (2026-07-30)

First release. Everything in the sections above is now real code you can install with uvx shugo.

What ships:

  • Guard proxy over stdio — SHUGO speaks MCP to both your client and any number of upstream servers, namespaces tools as <server>__<tool>, and applies policy on every tools/call.

  • Policy engine — deny-by-default, first-match-wins, fnmatch globs on server/tool, nested-equality on args. Decisions: allow, deny, escalate.

  • Human approvals — file-drop queue at ~/.shugo/pending/ resolved by either shugo approve --watch (Rich TUI) or an opt-in local HTTP UI (shugo serve --approvals http).

  • Hash-chained audit log — append-only JSONL, rolling SHA-256, NFC-canonical JSON, per-line fsync. shugo audit verify detects any post-hoc edit.

  • Evidence bundlesshugo evidence -f <owasp-llm|nist-ai-rmf|eu-ai-act|iso-42001> produces a control-mapped report, policy snapshot, filtered audit-log window, and SHA-256 manifest.

  • shugo init — reads Claude Desktop / Code / Cursor / VS Code MCP configs, enumerates upstream tools, writes a starter policy, prints the exact JSON snippet to paste.

  • Kill switchshugo halt denies everything until shugo unhalt.

Quality: 102 fast tests + 1 e2e test (real @modelcontextprotocol/server-filesystem via npx). CI on Python 3.11–3.13 × macOS / Ubuntu / Windows. All dependencies MIT / BSD-3 / Apache-2.0; no copyleft, no BSL.

Full changelog: CHANGELOG.md · GitHub release: v0.1.0


🗺️ Roadmap

Version

Theme

Status

v0.1

Guard proxy, policy engine, approvals, audit log, evidence packs

✅ released 2026-07-30

v0.2

Layer ① depth — OAuth 2.1 / OIDC identity, per-principal policy, delegation scoping

planned

v0.3

Layer ② depth — retrieval boundaries, context filters, memory access rules

planned

v0.4

Layer ④ depth — injection detection, output validation, rollback

planned

v0.5

Layer ⑤ depth — policy regression suites, adversarial harness

planned

v1.0

Frozen policy schema, semantic versioning guarantee, plugin API

planned


🤝 Contributing

SHUGO is built in public, and the contribution ladder is deliberately low to the ground:

policy pack → scenario test → framework mapping → core

A new policy pack is a self-contained YAML file. You do not need to read the codebase to ship one. Start with CONTRIBUTING.md and the good first issues.


📄 License

Released under the MIT License. Use it, fork it, adapt it to your own agent architecture — that is the point.


守護 — shugo, to guard and protect.

A
license - permissive license
-
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    A
    maintenance
    Guardrail sidecar proxy between AI agents and their MCP/REST/CLI tools. Policy engine, human approval gates, time-limited grants, rate limiting, and OTEL tracing. One Go binary, one YAML config, fail-closed by default.
    Last updated
    1
    Apache 2.0
  • A
    license
    -
    quality
    C
    maintenance
    MCP server for AI agent security guardrails. Provides input validation, prompt injection detection, PII redaction, output filtering, policy enforcement, rate limiting, and comprehensive audit logging.
    Last updated
    50
    1
    MIT
  • A
    license
    -
    quality
    B
    maintenance
    An open-source MCP server that protects AI agents at runtime by evaluating every tool call against YAML policies and generating audit trails.
    Last updated
    1
    Apache 2.0

View all related MCP servers

Related MCP Connectors

  • Runtime permission, approval, and audit layer for AI agent tool execution.

  • Security firewall for AI agents — scans MCP calls for injection, secrets, and risks.

  • Responsible-AI guardrails for agents: scoring with policy, injection & PII detection, DPDP.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aritraghosh01/shugo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server