io.github.sinhaKAN-ra/anumana

السجل الرسمي أخرى

Predict query cost, explain the plan, and rewrite it before you run it — 12 DB engines.

التثبيت

أضف هذا إلى إعدادات MCP في عميلك (Claude Desktop: claude_desktop_config.json، وCursor: ‏.cursor/mcp.json، ويستخدم VS Code وغيره الصيغة نفسها «mcpServers»).

PYPI package anumana-mcp
Claude Code
claude mcp add anumana -e 'ANUMANA_DSN=<your anumana_dsn>' -e 'ANUMANA_TARGETS=<your anumana_targets>' -e 'ANUMANA_POLICIES=<ANUMANA_POLICIES>' -- uvx anumana-mcp==0.2.1
إعداد JSON (Claude Desktop وCursor وVS Code)
{
    "mcpServers": {
        "anumana": {
            "command": "uvx",
            "args": [
                "anumana-mcp==0.2.1"
            ],
            "env": {
                "ANUMANA_DSN": "<your anumana_dsn>",
                "ANUMANA_TARGETS": "<your anumana_targets>",
                "ANUMANA_POLICIES": "<ANUMANA_POLICIES>"
            }
        }
    }
}

متغيرات البيئة

  • ANUMANA_DSN سري Read-only connection string for the primary target database (e.g. postgresql://readonly@host:5432/db). Optional if ANUMANA_TARGETS is used.
  • ANUMANA_TARGETS سري JSON array of named targets for a multi-database setup, each with name, engine, and connection string.
  • ANUMANA_POLICIES JSON array of operator enforcement policies (block/warn/allow rules by risk tier or flag). Optional; open by default.

التوثيق

مأخوذ من ملف README للمشروع على GitHub ويُحدَّث أسبوعيًا. تفتح الروابط على GitHub.

المحتويات
  1. Anumana
  2. What it does (the features)
  3. Install
  4. Try it with no database (30 seconds)
  5. Test against a real Postgres
  6. What's deliberately NOT here
  7. License
  8. Community & contact

Anumana

Know what your query will cost — before you run it. Inference-grade foresight for every query your AI writes.

Anumana is an MCP server that catches the costly query your AI coding agent just wrote — before it runs or reaches a PR. It rides inside Claude, Cursor, Windsurf, Codex, Kiro, or any MCP-compatible agent, reads your real schema via EXPLAIN (never EXPLAIN ANALYZE), and tells you — in plain English — how the query behaves and whether it'll hurt.

Its scope is the queries AI agents actually generate: text-to-SQL today, and RAG / vector search (pgvector) alongside it — because an agent writing a similarity search has no idea it just triggered a brute-force scan over every embedding. Anumana is the feedback loop the agent is missing.

It is not another NL→SQL tool and not a DB-health dashboard. It does one job: stop AI-written database code from silently rotting production.


What it does (the features)

ToolWhat it answers
preflight_query"Will this SQL query be costly?" — risk tier (cheap/moderate/expensive/dangerous), rows scanned vs returned, scan strategy, and overhead flags. Without running it.
preflight_vector_search"Will this RAG similarity search be costly?" — catches the vector traps a plain SQL check misses: brute-force scan with no HNSW/IVFFlat index, top_k too large, unbounded search, metadata-filter/ANN recall loss.
rewrite_query"Make it cheaper." — a verified equivalent rewrite with before/after planner cost, plus index suggestions gated on selectivity (won't tell you to index a column when the filter matches most of the table). engine="pgvector" suggests an HNSW index.
explain_query_working"How does this run?" — two layers: the logical gather order (FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT) and the actual physical plan for your schema, step by step.
preflight_schema_only"I haven't given you DB creds yet." — static analysis against pasted CREATE TABLE DDL, no connection. Offline, zero-trust front door.

Engines (12, across 7 paradigms): Postgres and SQLite are live-tested; MySQL, pgvector, MongoDB, DynamoDB, FalkorDB, Cassandra, Redshift, BigQuery, Snowflake and ClickHouse ship as offline-verified, untested adapters that are promoted to live one at a time. Full matrix + cost signals in SUPPORTED_ENGINES.md. The adapter interface is in DESIGN.md.

The one honest rule

Postgres planner cost is unitless — not milliseconds (docs). Anumana never fakes a ~3.2s number. It reports rows scanned, scan strategy, a risk tier, overhead flags, and the cost-delta of a rewrite — all defensible, nothing invented. Every estimate carries an accuracy tier (UPPER_BOUND live, HEURISTIC schema-only).


Install

pip install anumana-mcp          # once published to PyPI
# or from source:
pip install -e .

Then point your agent at it. The user installs it; the agent discovers the tools automatically on connect via the MCP tools/list handshake — there is no store to publish into.

Claude Desktop / Cursor / Windsurf / Kiro — mcpServers config block
{
  "mcpServers": {
    "anumana": {
      "command": "uvx",
      "args": ["anumana-mcp"],
      "env": { "ANUMANA_DSN": "postgres://readonly@localhost:5432/mydb" }
    }
  }
}

Use a read-only Postgres role. Anumana only ever EXPLAINs, but read-only is defence in depth. Omit ANUMANA_DSN to run in schema-only mode (DDL in, no DB).


Try it with no database (30 seconds)

python3 src/demo.py          # runs the engine on a canned plan, zero deps

Test against a real Postgres

# a throwaway table, then:
ANUMANA_DSN=postgres://localhost/mydb anumana-mcp

See src/live_test.py for a psql-backed harness that proves the real cost-delta and the selectivity gate on live data.


What's deliberately NOT here

No run_query (we never execute your SQL), no NL→SQL (the agent already does that), no DB-health reports, no dollar-billing. Staying narrow is the strategy.

License

MIT — see LICENSE.

Community & contact

Contributions welcome — see CONTRIBUTING.md and the Code of Conduct. Adding a database engine is the highest- leverage contribution; the adapter contract is small (SUPPORTED_ENGINES.md).

  • Bugs / ideas: open a GitHub issue.
  • Security: see SECURITY.md — report privately.
  • Maintainer: nomore.report@gmail.com

الأسئلة الشائعة

ما هو io.github.sinhaKAN-ra/anumana؟

Predict query cost, explain the plan, and rewrite it before you run it — 12 DB engines.

كيف أثبّت io.github.sinhaKAN-ra/anumana؟

يعمل على جهازك. في Claude Code: claude mcp add anumana -e 'ANUMANA_DSN=<your anumana_dsn>' -e 'ANUMANA_TARGETS=<your anumana_targets>' -e 'ANUMANA_POLICIES=<ANUMANA_POLICIES>' -- uvx anumana-mcp==0.2.1. وفي العملاء الآخرين، الصق إعداد JSON من هذه الصفحة في إعدادات MCP الخاصة بهم.

هل يحتاج io.github.sinhaKAN-ra/anumana إلى مفتاح API؟

نعم. يتطلب ANUMANA_DSN, ANUMANA_TARGETS، وتضبطها في إعداداته.

هل io.github.sinhaKAN-ra/anumana مفتوح المصدر؟

نعم. شيفرته متاحة على GitHub بترخيص MIT.

من يصون io.github.sinhaKAN-ra/anumana؟

ينشره sinhaKAN-ra. يدرجه AI.tn لكنه لا يصونه ولا يوصي به.

من سجل MCP الرسمي. الإدراج ليس توصية: راجع شيفرة الخادم وصلاحياته قبل منحه الوصول إلى بياناتك.