offdata ai — agentic AI for data modelers and data engineers

MCP server for AI agents

Give your AI agents the meaning behind your data

Connect Claude or any MCP client to OffDataAI. Agents get your approved concepts, metric definitions and join paths, then run read-only SQL against your databases, all under scoped API keys.

mcp · tools/calljson-rpc
→ tools/call  get_query_context
  { "question": "revenue by customer segment" }

← {
    "concepts": ["Revenue", "Customer"],
    "metric": {
      "name": "Revenue",
      "expression": "sum(fct_orders.amount)"
    },
    "tables": ["marts.fct_orders",
               "marts.dim_customer"],
    "join": "fct_orders.customer_sk
             = dim_customer.customer_sk"
  }

→ tools/call  run_query
  { "connection_id": "…", "sql": "SELECT …",
    "max_rows": 200 }

AI agents are good at writing SQL and bad at knowing your business. Point one at a warehouse and it has to guess which of three revenue columns is the right one and how five tables join. The answers already exist in your data model and ontology; the MCP server hands them to the agent.

Ask a question and the agent calls get_query_context to receive the relevant concepts, the metric's definition and the join path already resolved. It then runs a read-only query through run_query and answers with numbers your team would recognize. When it finds a gap, it can propose a new concept, which waits for a person to approve.

What agents can do

  • Get the query context for a question

    get_query_context returns the concepts, metric definitions, tables and resolved join path for a natural-language question in one call.

  • Search and browse the ontology

    search_concepts, get_concept, get_ontology and join_path let an agent explore your business vocabulary and how concepts connect.

  • Run read-only SQL safely

    run_query allows one SELECT or WITH statement, in a read-only transaction with a timeout and a row cap. Writes and stacked statements are refused.

  • Suggest, never overwrite

    propose_concept and propose_relation put an agent's ideas in the review queue. Your ontology only changes when a person accepts them.

  • Scoped API keys

    Grant ontology:read, ontology:write or query:read per key. Database access is opt-in, and every query attempt is recorded.

  • Built on your real model

    The context comes from the same model that generates your DDL and dbt project, so what the agent reads matches what is deployed.

Frequently asked questions

What is an MCP server?
The Model Context Protocol (MCP) is an open standard that lets AI assistants such as Claude call external tools. OffDataAI's MCP server exposes your ontology and connected databases as tools, so an agent can look up what your data means before it writes SQL.
Why do AI agents need an ontology to query a warehouse?
Given only table names, an agent guesses: which table holds revenue, whether amount includes tax, how orders join to customers. The ontology answers those questions with approved definitions and resolved join paths, so the SQL an agent writes matches how your team actually calculates things.
Which tools does the OffDataAI MCP server provide?
list_ontologies, get_ontology, search_concepts, get_concept, get_query_context and join_path for reading the ontology; list_connections and run_query for querying connected databases; and list_proposals, propose_concept and propose_relation so agents can suggest additions for human review.
Can an agent change my data or my ontology?
No data can be changed. run_query accepts only a single SELECT or WITH statement, runs it in a read-only transaction with a statement timeout and a row cap of at most 1,000 rows, and records every attempt. Agents cannot edit the ontology directly either: propose_concept and propose_relation add suggestions to the review queue, where a person decides.
How is access controlled?
Every call is authenticated with an OffDataAI API key, and each key carries scopes: ontology:read for browsing, ontology:write for proposals, and query:read for running SQL. Querying your databases is opt-in and is never granted to a key by default.
Which AI clients work with it?
Any client that speaks the Model Context Protocol over HTTP, including Claude. The server is stateless JSON-RPC, so it also works from your own agents and scripts.

Your data warehouse is one conversation away.

Describe your domain, or open one of 170+ production-grade templates. ERDs, DDL, and a complete dbt project — generated in under a minute.