Labsco
MCP SERVER

OrionBelt Analytics

by ralfbecher

Turn a database schema into an ontology, then ask questions in English and get SQL that is checked before it runs.

Data Platform: Pipelines, Warehousing, BI & Governance
Summary
Ontology-checked SQL: structural errors are caught before the query reaches the database.

OBQC is deterministic — it parses the generated SQL and cross-references every table, column, join and aggregation against the ontology, so a fan-trap that would silently multiply your numbers comes back as an error instead of a wrong answer. On a large schema, graphrag_query_context is the other half: it hands the model a focused slice instead of the whole catalogue.

What it is

A Text-to-SQL server that first reads your schema into an RDF/OWL ontology, then validates every generated query against it — across 8 database connectors including PostgreSQL, MySQL, Snowflake, ClickHouse, Dremio, BigQuery, DuckDB and Databricks SQL.

What you get
  • connect_database, list_schemas, discover_schema and get_table_details map the database, including relationships
  • generate_ontology produces RDF/OWL with SQL annotations; load_my_ontology takes your own Turtle file instead
  • execute_sql_query runs SQL through OBQC first — missing tables and columns, Cartesian joins, type mismatches, GROUP BY gaps and fan-traps are caught, and errors block execution
  • suggest_semantic_names and apply_semantic_names rename cryptic identifiers into business-readable ones
  • graphrag_query_context narrows a large schema to just the relevant tables and columns before SQL generation; graphrag_find_join_path resolves how two tables join, graphrag_search explores by keyword
  • reachable_from, measurable_from and plan_composite_query work out fan-trap-safe decompositions for a given grain
  • query_sparql, store_ontology_in_rdf and add_rdf_knowledge give a SPARQL 1.1 interface over a persistent Oxigraph store
  • generate_chart renders Plotly bar, line, scatter and heatmap output; download_artifact exports the ontology or R2RML mapping as Turtle
  • sample_table_data previews rows, save_semantic_model and list_semantic_models keep models per connection
Requirements

Python 3.13+ and uv. Credentials come from environment variables per database — POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DATABASE, POSTGRES_USERNAME and POSTGRES_PASSWORD for PostgreSQL, SNOWFLAKE_ACCOUNT and its siblings for Snowflake — not from tool parameters. The server listens on http://localhost:9000, configurable through MCP_SERVER_PORT. Licensed BSL 1.1.

Setup effort

Build from source — clone the repository and build it, then point your client at the binary