Open Source · MIT License

Ask your MongoDB anything.

Mango is an AI agent that turns natural language into MongoDB queries. Plug in any LLM, connect your database, and start asking questions in seconds.

Get Started Try in Colab
$ pip install mango-ai[anthropic] Then: mango demo

Natural Language Queries

Ask questions in plain English. Mango translates them into accurate MQL queries using the LLM of your choice — Claude, GPT, Gemini, or any Ollama model.

You ask

"Find all users who signed up in the last 30 days and have made at least 3 orders"

Mango returns
db.users.find({
  createdAt: {
    $gte: new Date(Date.now() - 30*24*60*60*1000)
  },
  orderCount: { $gte: 3 }
})

Training & Memory

Load verified examples with mango train. Every successful query is auto-saved. Similar questions get faster, more accurate answers over time.

MQL Validation

Every query is validated before reaching the database. Collection names, field names, and operators are checked against the live schema first.

Auto Error Recovery

When a query fails with a fixable error, Mango injects the error back into context and retries automatically — up to 2 times before giving up.

Pluggable Architecture

Swap LLM providers, memory backends, and tools without changing your agent code. Everything is built on abstract interfaces — swap in minutes.

SSE Streaming

See every tool call in real time via Server-Sent Events. Know exactly what queries are being executed and why — no black boxes.

Read-Only by Design

Only find, aggregate, count, and distinct. Write operations are rejected at the tool level — no accidental mutations, ever.

Schema-Aware

Mango automatically introspects your collections, inferring field types, indexes, and references from sampled documents — no configuration needed.

Ten steps from question to answer.

1

Inject training examples

Gold-standard verified examples are injected first. The LLM uses them directly — no schema exploration needed.

2

Pre-inject memory examples

Auto-saved past interactions are retrieved and injected as additional few-shot examples into the prompt.

3

Select relevant schema

Only the schema portions relevant to the current query are selected and injected — not the full database schema.

4

LLM decides which tools to call

The LLM analyzes the question and selects which tools to invoke — thinking, not just parsing.

5

Auto-inject schema before run_mql

Before each run_mql call, the current schema is automatically re-injected so the LLM always has accurate field names and types at query time.

6

Validate MQL before execution

Every query is validated against the live schema — collection names, fields, and operators — before running.

7

Execute tools against MongoDB

Tools run queries against MongoDB and return structured results.

8

Auto-retry on fixable errors

If a tool fails with a fixable error, the error is injected back and the LLM corrects the query automatically (max 2 retries).

9

Stream natural language answer

The final response is streamed back to the caller via SSE — real-time, no waiting.

10

Auto-save to memory

The successful interaction is automatically saved for future similar questions — the agent learns.

Works with any LLM

Swap providers with one line of code.

Anthropic Claude mango-ai[anthropic]
OpenAI GPT mango-ai[openai]
Google Gemini mango-ai[gemini]
Ollama (Open Source) mango-ai[ollama]
quickstart.py
from mango import MangoAgent
from mango.tools import (
    ToolRegistry,
    ListCollectionsTool,
    SearchCollectionsTool,
    DescribeCollectionTool,
    CollectionStatsTool,
    RunMQLTool,
    SaveTextMemoryTool,
)
from mango.servers.fastapi import MangoFastAPIServer
from mango.integrations.anthropic import AnthropicLlmService
from mango.integrations.mongodb import MongoRunner
from mango.integrations.chromadb import ChromaAgentMemory

# Configure your LLM
llm = AnthropicLlmService(
    model="claude-sonnet-4-6",
    api_key="YOUR_API_KEY",
)

# Configure your database
db = MongoRunner()
db.connect("mongodb://localhost:27017/mydb")

# Configure your agent memory
agent_memory = ChromaAgentMemory(
    persist_dir="./chroma_db",
)

# Create your agent
agent = MangoAgent(
    llm_service=llm,
    tool_registry=tools,
    db=db,
    agent_memory=agent_memory,
    introspect=False
)

# Run the server
server = MangoFastAPIServer(agent)
server.run()  # http://localhost:8000
Up and running in under 3 minutes.

Production-ready from day one.

Every feature is built for real use — not a demo. MQL validation, auto-retry, memory, schema introspection, SSE streaming — the things that make it safe to run in production.