Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

Maango

БесплатноНе проверен

Maango is the pre-flight check for AI agents on the web. Before an agent scrapes, summarises, trains on, or searches a site, it calls Maango and gets back wheth

GitHubEmbed

Описание

Maango is the pre-flight check for AI agents on the web. Before an agent scrapes, summarises, trains on, or searches a site, it calls Maango and gets back whether the action is allowed for that domain, along with the reason and the policy signals that decided it.

README

CI License: MIT Python 3.10+ Docker (GHCR)

The permissions layer for AI agents on the web. Before your agent scrapes, summarises, trains on, or otherwise uses content from a website, ask Maango what's allowed. One call, canonical answer.

Why

Every site that publishes a robots.txt, ai.txt, llms.txt, TDM-Rep header, or AI-specific ToS clause is telling agents what they can and can't do. Today no one parses all eight standards. NYT, Reddit, and Stack Overflow are suing over training data; the EU AI Act now requires opt-out compliance. Building this gate from scratch is weeks of work per agent.

Maango aggregates 1,000,000+ domains × 8 AI-policy standards into one canonical answer. Your agent calls check_permission(domain, action) and gets back allowed: true/false + a structured reason. That's it.

Tools exposed

Tool What it does
check_permission(domain, action, agent_id?) Decide in one call whether an action is allowed. Returns allowed + reason code + explanation + stance + signals.
lookup_domain(domain) Summary of a domain's AI policy — stance, use-cases, bots, signals.
lookup_domain_full(domain) Full raw policy data including robots.txt, ai.txt, llms.txt, TDM-Rep, meta tags.
lookup_domain_conflicts(domain) Cross-signal conflicts (e.g. robots.txt vs ToS).
search_domains(query, stance?, limit?, offset?) Prefix search the registry with optional stance filter.
batch_check(domains[]) Compare policies across 2–25 domains side by side.
get_changelog(domain?, change_type?, limit?, offset?) Policy change history.

Reason codes returned by check_permission

  • compliant — action explicitly permitted
  • action_blocked — the specific use-case (training/search/ai_input) is blocked
  • bot_blocked — the named agent_id is on the domain's blocked-bots list
  • stance_blocks_all — domain blocks all AI access site-wide
  • no_policy — no policy on file; conservative default is deny
  • unspecified — action or use-case not addressed by the policy
  • lookup_error — registry could not be reached

Installation

Claude Desktop (remote, recommended)

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "maango": {
      "url": "https://mcp.maango.io/sse"
    }
  }
}

Restart Claude Desktop. Ask: "Check if I can scrape nytimes.com for training data."

Cursor

Settings → MCP → Add new MCP Server:

{
  "maango": {
    "url": "https://mcp.maango.io/sse"
  }
}

Cline / Zed / any MCP client

Point them at https://mcp.maango.io/sse. No auth required for the hosted endpoint.

Local development (stdio)

git clone https://github.com/maango-io/maango-mcp.git
cd maango-mcp
uv venv && source .venv/bin/activate
uv pip install -e .
cp .env.example .env          # optionally add MAANGO_API_KEY for higher rate limits
maango-mcp                    # runs with stdio transport

Then in Claude Desktop:

{
  "mcpServers": {
    "maango": {
      "command": "maango-mcp"
    }
  }
}

Self-hosting

Any platform that can run a Python HTTP service works. Quick Docker path:

docker build -t maango-mcp .
docker run -p 8000:8000 \
  -e MAANGO_API_KEY=maango_sk_xxx \
  -e MAANGO_MCP_TRANSPORT=sse \
  maango-mcp

Environment variables:

Var Default Purpose
MAANGO_MCP_TRANSPORT stdio stdio | sse | streamable-http
MAANGO_MCP_HOST 0.0.0.0 Bind address (remote transports only)
MAANGO_MCP_PORT 8000 Bind port (remote transports only)
MAANGO_API_BASE_URL https://api.maango.io Maango REST API base URL
MAANGO_API_KEY (none) Optional bearer token for higher rate limits

How it works

┌────────────────┐     MCP (sse/streamable-http)     ┌─────────────────┐
│ Claude Desktop │ ◄───────────────────────────────► │  mcp.maango.io  │
│  Cursor, …     │                                   │  (this server)  │
└────────────────┘                                   └────────┬────────┘
                                                              │ HTTPS
                                                              ▼
                                                     ┌─────────────────┐
                                                     │  api.maango.io  │
                                                     │  (REST, 1M      │
                                                     │   domains)      │
                                                     └─────────────────┘

The MCP server is a thin wrapper. The real data lives in the Maango REST API. We normalise the response into MCP-friendly tool output and handle the action → use-case mapping (e.g. "scrape" → training policy check).

Observability

The server exposes two HTTP endpoints when running on sse or streamable-http transports (not stdio — there's no port to bind):

  • GET /health — cheap liveness probe, no upstream call. Used by Docker HEALTHCHECK, nginx, and uptime monitors.
  • GET /metrics — Prometheus exposition. Tracks maango_mcp_tool_requests_total{tool,status} and maango_mcp_tool_duration_seconds{tool} (histogram).

Logs are emitted as one JSON object per stderr line with a per-tool-call req_id that propagates through the client and decision-tree. Pipe stderr to your log shipper of choice (Loki / Datadog / CloudWatch).

Development

See CONTRIBUTING.md for the full workflow. Quick start:

uv sync --extra dev
uv run pytest -q
uv run maango-mcp                                # stdio
MAANGO_MCP_TRANSPORT=sse uv run maango-mcp       # SSE on :8000

Security disclosures: see SECURITY.md.

Roadmap (not in v0.1)

  • Web Bot Auth signature verification
  • Capability-token issuance (Biscuits / Macaroons)
  • Payment-required flow via x402
  • Receipt IDs with tamper-evident Merkle proof
  • Real-time policy negotiation (Phase 3)

The roadmap is shaped by what users actually need — see Issues for the live list.

Contributing

If you find this useful:

  • ⭐ Star the repo — that's how more agents find it.
  • 🐛 Open an issue for bugs, missing domains, or anything in a tool's output that surprised you. Include the req_id from the JSON log line if you have it.
  • 💡 Have a use case the current 7 tools don't cover? File an issue with a real example — that beats abstract feature requests every time.
  • 🛠 PRs welcome — see CONTRIBUTING.md for the dev workflow and PR checklist.
  • 🔒 Security disclosures: SECURITY.md. Email instead of opening an issue.

Links

License

MIT — see LICENSE.

from github.com/maango-io/maango-mcp

Установка Maango

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/maango-io/maango-mcp

FAQ

Maango MCP бесплатный?

Да, Maango MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для Maango?

Нет, Maango работает без API-ключей и переменных окружения.

Maango — hosted или self-hosted?

Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.

Как установить Maango в Claude Desktop, Claude Code или Cursor?

Открой Maango на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare Maango with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории ai