io.github.sinhaKAN-ra/anumana

Official registry Other

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

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).

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 configuration (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>"
            }
        }
    }
}

Environment variables

  • ANUMANA_DSN secret Read-only connection string for the primary target database (e.g. postgresql://readonly@host:5432/db). Optional if ANUMANA_TARGETS is used.
  • ANUMANA_TARGETS secret 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.

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  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

Frequently asked questions

What is io.github.sinhaKAN-ra/anumana?

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

How do I install io.github.sinhaKAN-ra/anumana?

It runs on your machine. In 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. For other clients, paste the JSON configuration from this page into their MCP settings.

Does io.github.sinhaKAN-ra/anumana need an API key?

Yes. It expects ANUMANA_DSN, ANUMANA_TARGETS, which you set in its configuration.

Is io.github.sinhaKAN-ra/anumana open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains io.github.sinhaKAN-ra/anumana?

It is published by sinhaKAN-ra. 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.