Skip to main content

Natural-language query engine — open-source core (CLI, connectors, MCP server)

Project description

nlqueries-core

CI PyPI Python License: BSL 1.1

NLQueries Core turns plain-English questions into validated SQL, builds a self-updating YAML knowledge base from your schema and query history, and exposes everything as an MCP server your AI assistant can call directly. It also answers questions from your documents (PDF, Word, Excel, Notion, Confluence) and can blend both in a single hybrid answer.


Features

Capability Description
Database connectors PostgreSQL, MySQL, Snowflake, BigQuery, Redshift, SQL Server / Azure SQL, DuckDB
Document connectors PDF, Word, Excel, Notion, Confluence — ask questions over ingested documents with citations
Query pipeline Filter, cluster, and parameterize query history into reusable QueryCapsule templates
Knowledge base Auto-generated YAML schema + capsule file, with coverage reporting via kb-stats
Multi-agent orchestration Routes each question to a SQL agent, document agent, or both in parallel (hybrid)
Semantic cache Returns previously-answered similar questions in under 50 ms, no LLM or DB round-trip
Embedding daemon Keeps the embedding model resident in memory — ~10 ms per call instead of ~9 s
LLM client Anthropic, OpenAI, or any LiteLLM-supported provider
MCP server Query execution and schema/knowledge lookup exposed as MCP tools for Claude, Cursor, etc.
CLI nlqueries (or the shorter nlq alias) — connect, build, query, and inspect from your terminal

See docs/architecture.md for how these pieces fit together.


Quickstart

Prerequisite: Python 3.11 or 3.12. Python 3.14+ is not yet supported — see docs/troubleshooting.md before installing on a newer interpreter.

Option A — Docker (recommended)

Pulls the published nlqueries/core image from Docker Hub — no clone required, just the compose file:

curl -O https://raw.githubusercontent.com/nlqueries/nlqueries/main/docker-compose.yml

Create a .env file next to it with at least one LLM key:

ANTHROPIC_API_KEY=sk-ant-...
# or OPENAI_API_KEY=sk-...

Then start the stack:

docker compose up

This pulls nlqueries/core:latest and starts it alongside Qdrant (:6333), with the MCP server on :8080. Run CLI commands against the running stack from a second terminal:

docker exec -it nlqueries-core nlqueries health

Option B — pip install

pip install nlqueries-core
export ANTHROPIC_API_KEY=sk-ant-...   # or OPENAI_API_KEY
nlqueries health

Optional extras for specific connectors:

pip install "nlqueries-core[mysql]"     # MySQL
pip install "nlqueries-core[redshift]"  # Amazon Redshift
pip install "nlqueries-core[mssql]"     # SQL Server / Azure SQL
pip install "nlqueries-core[duckdb]"    # DuckDB
pip install "nlqueries-core[docs]"      # PDF / Word / Excel ingestion
pip install "nlqueries-core[wiki]"      # Notion / Confluence sync

Option C — Clone and install from source

No Docker required — for contributing, or to run against unreleased changes:

git clone https://github.com/nlqueries/nlqueries.git
cd nlqueries
python -m venv .venv && source .venv/bin/activate   # Windows: .venv\Scripts\Activate.ps1
pip install -e ".[dev]"
export ANTHROPIC_API_KEY=sk-ant-...   # or OPENAI_API_KEY
nlqueries health

See CONTRIBUTING.md for linting and test commands.

First query

nlqueries connect postgres --host localhost --database mydb --user alice --password secret --alias dev
nlqueries process-history dev --days 30 --annotate
nlqueries export-kb dev
nlqueries query dev "How many orders shipped last month?"

Full walkthrough: docs/getting-started.md.


Documentation

Doc Covers
docs/getting-started.md Step-by-step setup and your first query
docs/cli-reference.md Every command and flag
docs/connectors.md Database and document connector setup, per-connector notes and caveats
docs/configuration.md Environment variables
docs/troubleshooting.md Common warnings and errors explained
docs/qdrant-setup.md Setting up Qdrant (required for embeddings, semantic cache, document search)
docs/architecture.md Module layout and request flow

Contributing

See CONTRIBUTING.md. All contributors must sign the CLA before a PR can be merged — see CONTRIBUTOR_LICENSE_AGREEMENT.md.


License

Business Source License 1.1 — each release converts to Apache 2.0 four years after its release date.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nlqueries_core-0.1.0.tar.gz (214.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nlqueries_core-0.1.0-py3-none-any.whl (144.8 kB view details)

Uploaded Python 3

File details

Details for the file nlqueries_core-0.1.0.tar.gz.

File metadata

  • Download URL: nlqueries_core-0.1.0.tar.gz
  • Upload date:
  • Size: 214.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nlqueries_core-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bf398463ea43ec399210fc076e5debb2bfca6ac1311f505cc7542dc8c324203d
MD5 83626dba1b6539af7bd3ff3fbd0ad7bf
BLAKE2b-256 38c592aeb2cf750fa59e9adb7125019dc41cf78feff23122fa649a60f61e2b52

See more details on using hashes here.

Provenance

The following attestation bundles were made for nlqueries_core-0.1.0.tar.gz:

Publisher: release.yml on nlqueries/nlqueries

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nlqueries_core-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: nlqueries_core-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 144.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nlqueries_core-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2bc3ff8f4b896747873b1c91b6ef056d591f7c4f1b264cf90b0ede7eb5c97db9
MD5 58190808d592da46516b5a46b93fef9d
BLAKE2b-256 ed9ef0f1c3d17829291ad50d73ae4e60e4caf2cacea28f11b592a2e906fa10ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for nlqueries_core-0.1.0-py3-none-any.whl:

Publisher: release.yml on nlqueries/nlqueries

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page