io.github.aggrete/aggrete
MCP policy proxy: enforces a code of conduct across connectors before the upstream is called.
What can you do with io.github.aggrete/aggrete?
- Refuses before fetching, using a YAML policy and per-user memory across calls and sessions — not single-call authorization.
- Redacts emails, SSNs, cards, and tokens from results before they reach the model; hides walled tools from users who can't call them.
- Shields against prompt injection — any write after a session reads untrusted content is refused — and against tool poisoning, flagging hidden instructions in tool descriptions.
- Holds upstream credentials itself (confused-deputy safe), with optional per-user on-behalf-of access.
- Audits tamper-evidently — every decision is one hash-chained JSON line (
aggrete-audit), forwarded to a SIEM or an OpenTelemetry collector, with Prometheus metrics and health endpoints for operations. - Ask before you act —
checkpreviews any sequence,scenarioslists things to try. - Hold for a human —
action: approvepauses a call until the clause owner approves it, from Slack, the terminal, or the console; the approval is a time-limited, audited grant.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
aggreteclaude mcp add aggrete -- uvx aggrete==0.13.4 --demo
{
"mcpServers": {
"aggrete": {
"command": "uvx",
"args": [
"aggrete==0.13.4",
"--demo"
]
}
}
}
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Aggrete
An MCP proxy that enforces a code-of-conduct document across connectors, with per-user memory that accumulates across calls.
Four individually-authorized questions can assemble a layoff list — no single one is sensitive, so no guardrail fires. Aggrete is the layer that catches the combination: is this call, together with everything this person already pulled today, something the code of conduct forbids?
Try it live — nothing to install · or uvx aggrete --demo
Start with a scan
pip install aggrete && aggrete scan
Finds every MCP server your clients use, connects to each, and prints what no per-server scanner does: tool combinations across servers that form a leak path, hidden instructions in descriptions, secrets in client configs, servers that bypass the proxy. --fix writes the config and policy that close them. Details.
Install
pip install aggrete # or: uv tool install aggrete
uvx aggrete --demo # the walkthrough — no config, auth, or network
aggrete --config proxy.config.yaml # run it for real
The one example
The check tool dry-runs a plan and returns the verdict before anything is fetched:
Plan check: REFUSED.
1. hr__recent_joiners [hr-personnel] -> allowed
2. finance__budget_roles [finance-comp] -> allowed
3. ops__oncall_draft [ops-rota] -> REFUSED COC-HR-004
Personnel, compensation, and operational rosters may not be combined to
derive the planned departure of identifiable individuals.
Each call is fine alone. The third completes a forbidden set across three domains that overlap on the same people, so it's denied before the upstream call — the data is never fetched.
What it does
- Refuses before fetching, using a YAML policy and per-user memory across calls and sessions — not single-call authorization.
- Redacts emails, SSNs, cards, and tokens from results before they reach the model; hides walled tools from users who can't call them.
- Shields against prompt injection — any write after a session reads untrusted content is refused — and against tool poisoning, flagging hidden instructions in tool descriptions.
- Holds upstream credentials itself (confused-deputy safe), with optional per-user on-behalf-of access.
- Audits tamper-evidently — every decision is one hash-chained JSON line (
aggrete-audit), forwarded to a SIEM or an OpenTelemetry collector, with Prometheus metrics and health endpoints for operations. - Ask before you act —
checkpreviews any sequence,scenarioslists things to try. - Hold for a human —
action: approvepauses a call until the clause owner approves it, from Slack, the terminal, or the console; the approval is a time-limited, audited grant.
Learn more
- Writing policy — the
coc.yamlschema, rule types,arg_match, and drafting from your handbook withaggrete-ingest - Deploying — architecture, the deploy matrix, HTTP + OAuth, connecting Claude, and per-user credentials
- Building a connector — expose read/write tools and govern any system (Google Drive is the reference)
- Adapter mode — run the engine inside agentgateway (native ExtMCP over gRPC,
aggrete extmcp), Docker MCP Gateway, IBM ContextForge or any AuthZEN-speaking gateway - What it does not stop — supply chain, host execution, client bugs, memory poisoning: where a proxy is the wrong control and what is
- Scanning —
aggrete scanhardens an existing MCP setup: cross-server leak paths, poisoned descriptions, secrets in configs, proxy bypasses, and a one-command fix - Conformance —
aggrete conformanceruns sixteen checks against the real components and maps them onto the OWASP MCP Top 10, OWASP Agentic Top 10, CoSAI and AIUC-1;--urlruns the same scenarios black-box against any gateway (latest report) - Roadmap — shipped, in progress, and planned
- Agent skill — teach Claude Code or any MCP client to set up and operate Aggrete:
/plugin marketplace add aggrete/aggrete, or readskill://aggrete/SKILL.mdfrom a running proxy
Honest limitations
- Post-call denial redacts, it does not un-fetch — prefer rules decidable pre-call.
- stdio identity is advisory — real enforcement needs streamable HTTP with OAuth and IdP-level blocking of direct connector grants, so the proxy is the only path.
- Aggregation can only be narrowed, not solved — a user who spaces requests beyond the window, or paraphrases across systems the proxy doesn't front, gets through. This raises the cost and creates the audit trail; it isn't a ceiling.
- Not a gateway — no multi-tenancy, token vault, or HA. For production, run it behind agentgateway, Docker's gateway or IBM ContextForge and let them call it (adapter mode).
mcp-name: io.github.aggrete/aggrete
Frequently asked questions
What is io.github.aggrete/aggrete?
MCP policy proxy: enforces a code of conduct across connectors before the upstream is called.
How do I install io.github.aggrete/aggrete?
It runs on your machine. In Claude Code: claude mcp add aggrete -- uvx aggrete==0.13.4 --demo. For other clients, paste the JSON configuration from this page into their MCP settings.
Does io.github.aggrete/aggrete need an API key?
Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.
Is io.github.aggrete/aggrete open source?
Yes. Its code is on GitHub under the Apache-2.0 license.
Who maintains io.github.aggrete/aggrete?
It is published by aggrete. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.