Skip to main content
Glama
calvinchengx

data-agent-service

by calvinchengx

Data Agent Service

CI Docs release License: Apache 2.0

python coverage go coverage witnesses

Ask your data warehouse a question in English. Get an answer you can defend.

Natural-language questions over the warehouses, databases and APIs you already have — Fabric and Azure SQL, PostgreSQL, Databricks, and any REST service including a retrieval one — grounded in the glossary, metrics and schema held in OpenMetadata. Each query is authorized twice: role rules in the service, then the source itself under the caller's own identity. Any MCP client, unchanged against real Azure.

📖 Documentation site — the full reference, also browsable as Markdown in docs/.

Why this exists

"Which support team resolves tickets fastest?" has a right answer only if everyone agrees what resolves means. Point a general-purpose SQL agent at the warehouse and it will infer that from column names, fluently and with no warning when it is wrong.

On this repository's own seeded data, that inference names the wrong team. Wall-clock elapsed time says Frontline is fastest and Billing is worst. The business's actual definition — Resolution Time, which excludes hours spent waiting on the customer — reverses it: Billing is fastest. A wrong winner is not a rounding error, and nothing in the answer would tell you it happened.

This service is built so that class of error is structurally hard rather than merely unlikely.

What you get

How

Proof

Meaning comes from your catalog, not the model

Glossary terms, metric formulas and column descriptions are read from OpenMetadata at query time. Business semantics are never baked into a prompt

make eval — an ablation scores the same questions with the catalog withheld

Every answer runs as the person asking

The user's token is exchanged on-behalf-of all the way to the engine, so row and column permissions are the engine's decision, not the agent's

make test — two personas, same question, different rows

It cannot write, wander, or work around a refusal

One read-only SELECT, parsed rather than pattern-matched; schema allow-list; row ceiling applied for you; a refusal is reported, not routed around

make conformance — a 28-assertion contract the executor must satisfy

It answers with its reasoning attached

The figure, the definition applied, the tables it came from, and any caveat the catalog raised

make ask Q="..."

Any MCP client, no custom code

Claude, Cursor, VS Code and the SDKs connect over standard MCP with OAuth discovery

docs/09-mcp-clients.md

Runs on your laptop, deploys to real Azure unchanged

The whole stack runs on the emulator family; switching to Fabric, APIM and Entra is configuration, not a code path

docs/10-production.md

Nothing here is claimed without something that checks it

Every capability carries a command that proves it; where something is designed but not built, the docs say so

88 end-to-end witnesses, in CI on every push

Status: Phases 0-16 landed — see docs/00-plan.md.

Related MCP server: MCP-DB-Server

Quick start

make doctor   # toolchain, docker, ~14 GB memory
make up       # entra, keyvault, arm, fabric (+ SQL Server), OpenMetadata 1.13.2, apim
make status   # "stack OK" is the verdict

Then make seed, make test, make eval, make load, make ask Q="…" — or make stack to do the whole bring-up from nothing, which is what CI runs.

What is here

Path

Purpose

docker-compose.yml

Pinned, published images only — dependencies are used as-is

.env.example

Every DAS_* setting; copy to .env (local) or .env.prod (real Azure)

docs/00-plan.md

Architecture, decisions, phases, evaluation, load, authz, extension

docs/

Quickstart, architecture, authorization, evaluation, load, MCP clients, adding a source, production, CI

services/

The warehouse-query executor (Python and Go), and the contract both answer to

agent/, evals/, e2e/

The agent, the accuracy suite, and the witnesses

seed/

Datasets, warehouse provisioning, OpenMetadata semantics, identity setup

infra/terraform/

Terraform for real Azure; docs/10-production.md is the runbook

.github/workflows/ci.yml

Four jobs; docs/11-ci.md says what each proves

website/

The docs site — Astro + Starlight, generated from docs/, which stays the source of truth

scripts/

doctor.sh, status.sh, check-discipline.sh, preflight.py

Discipline

  1. Emulators and OpenMetadata are never modified; suspected bugs go to docs/upstream-issues.md.

  2. No emulator-only code paths. Standard protocols only (OIDC/OAuth2 incl. OBO, managed-identity App Service protocol, TDS FedAuth, ARM, Graph, OM REST/MCP). ENV=prod swaps .env and nothing else.

Emulator family

Built on entra-emulator, azure-keyvault-emulator, arm-emulator, fabric-emulator, azure-apim-emulator; composed per azure-emulators. Tier: leaf.

License

Apache-2.0.

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
3Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables natural language querying of Microsoft Fabric Data Warehouses with intelligent SQL generation, metadata exploration, and business-friendly result summarization. Features two-layer architecture with MCP-compliant server and agentic AI reasoning for production-ready enterprise data access.
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables natural language querying of SQL databases with robust safety guarantees including read-only enforcement, AST validation, and row caps.
  • A
    license
    A
    quality
    B
    maintenance
    Enables natural language querying of OLAP/SSAS cubes with verified MDX generation, self-consistency checks, and honest abstention when queries are ambiguous.
    4
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables natural-language querying of PostgreSQL databases with schema grounding and self-correcting error recovery. Provides a live audit trace and verifies results through exploratory decomposition and empty-result sanity checks.

View all related MCP servers

Related MCP Connectors

  • Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.

  • The grounded data layer for any LLM: governed SQL, metrics, lineage and catalog over your data.

  • GibsonAI MCP server: manage your databases with natural language

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/calvinchengx/data-agent-service'

If you have feedback or need assistance with the MCP directory API, please join our Discord server