Skip to main content
Glama
SGromych

DataForge Semantic MCP Server

by SGromych

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CACHE_DIRNoCache directory path./cache
LOG_LEVELNoLog levelINFO
MCP_TRANSPORTNoTransport: stdio or ssestdio
DEFAULT_LANGUAGENoDefault language for measures/dimensionsru
CACHE_TTL_SECONDSNoCache TTL in seconds3600
DATAFORGE_API_KEYYesAPI key (required)
DATAFORGE_BASE_URLNoDataForge API base URLhttps://api.prod-df.businessqlik.com

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
df_healthA

Check server health, DataForge API connectivity and cache status.

df_list_projectsB

List DataForge projects visible to the configured API key.

df_list_versionsB

List versions of a DataForge project.

df_get_measuresA

Get all measures (business metrics) of a project version, paged through automatically. Each measure carries a stable id that the write tools accept. Set include_sql=true to also get generated SQL per measure.

df_get_dimensionsB

Get all dimensions of a project version. Each dimension carries a stable id and, where bound to a database, a connected_source naming its connection, table and column.

df_get_factsC

Get all facts of a project version.

df_get_rmdB

Get the normalized semantic context of a project version: project, version, measures, dimensions, facts and counts. Shares one API call and one cache entry with df_get_consolidated_rmd.

df_get_consolidated_rmdB

Get the full raw export of a project version: RMD content plus dimension groups, fact tables and relationships in one payload.

df_refresh_cacheA

Drop the cached state of a project version (or the whole project) and re-fetch its RMD snapshot.

df_list_data_martsB

List data marts of a project version.

df_get_data_martB

Get one data mart in full: source fact tables, selected measures, facts and dimensions with their aggregation and filter settings.

df_get_data_mart_viewA

Get the physical view materialized for a data mart: existence, object type, database, status, staleness and last refresh.

df_generate_sqlA

Generate the SQL query of a data mart. Nothing is executed and nothing is stored. A generation failure comes back as succeeded=false with validation_errors, not as an error.

df_list_connectionsB

List database connections of a project version. Credentials are never returned. Unsupported engines (e.g. MySQL) are excluded entirely.

df_get_connectionB

Get one connection: host, port, database, schema and username. Set include_db_schema=true to get the full cached table/column schema.

df_get_connection_schemaA

Get the cached schema of a connection (tables and columns). This is a snapshot taken when the connection was last refreshed, not a live query. Use it to pick valid table and column names for write operations.

df_list_dimension_groupsA

List dimension groups (shared reference hierarchies) of a version.

df_get_dimension_groupA

Get one dimension group: primary key, member dimensions with their hierarchy levels, and the fact tables related to it.

df_list_fact_tablesB

List fact tables of a project version with element counts.

df_get_fact_tableA

Get one fact table: assigned measures, dimensions, facts, dimension groups and verification filters. Set include_dependencies=true to get the formula dependency tree of each measure.

df_list_relationshipsC

List star-schema relationships (fact table to dimension group joins). relationship_type is the raw slug many_to_one.

df_get_relationshipA

Get one relationship with its foreign and primary key source objects.

df_get_project_accessA

List the owner and every user with explicit access to a project.

df_list_git_connectionsA

List the company's saved Git connections. Credentials are never returned. Requires a company administrator API key.

df_get_git_connectionB

Get one saved Git connection.

df_create_projectB

WRITES TO DATAFORGE. Create a project. An initial version is created with it.

df_update_projectB

WRITES TO DATAFORGE. Update a project's name, description or colour.

df_delete_projectA

PERMANENTLY DELETES DATA IN DATAFORGE. Delete a project WITH ALL OF ITS VERSIONS and their entire content. This cannot be undone.

df_create_versionA

WRITES TO DATAFORGE. Create a project version. Content is cloned from clone_from_version, or from the current global version when omitted. Counts against the licence version limit.

df_update_versionA

WRITES TO DATAFORGE. Rename a version or make it the global (published) one. Versions have no description field.

df_delete_versionA

PERMANENTLY DELETES DATA IN DATAFORGE. Delete a version and all of its content. The current global version cannot be deleted.

df_write_measureA

WRITES TO DATAFORGE. Create, replace or update a measure in a project version. mode=create adds a new one; mode=replace (PUT) overwrites it and RESETS every optional field you do not pass; mode=update (PATCH) changes only the fields you pass. replace and update require measure_id.

df_write_dimensionA

WRITES TO DATAFORGE. Create, replace or update a dimension in a project version. mode=create adds a new one; mode=replace (PUT) overwrites it and RESETS every optional field you do not pass; mode=update (PATCH) changes only the fields you pass. replace and update require dimension_id.

df_write_factA

WRITES TO DATAFORGE. Create, replace or update a fact in a project version. mode=create adds a new one; mode=replace (PUT) overwrites it and RESETS every optional field you do not pass; mode=update (PATCH) changes only the fields you pass. replace and update require fact_id.

df_delete_measureA

PERMANENTLY DELETES DATA IN DATAFORGE. Delete a measure. Rejected with a conflict if another element's formula references it.

df_delete_dimensionA

PERMANENTLY DELETES DATA IN DATAFORGE. Delete a dimension. Rejected if it belongs to a dimension group or is referenced by a formula.

df_delete_factB

PERMANENTLY DELETES DATA IN DATAFORGE. Delete a fact.

df_bulk_write_measuresA

WRITES TO DATAFORGE. Create and/or update many measures in one call. An item with id is updated, an item without one is created. Items are applied in order, each in its own transaction: a partial result comes back with status=partial and a failed[] array addressing rows by index.

df_bulk_write_dimensionsB

WRITES TO DATAFORGE. Create and/or update many dimensions in one call.

df_bulk_write_factsB

WRITES TO DATAFORGE. Create and/or update many facts in one call.

df_write_dimension_groupC

WRITES TO DATAFORGE. Create, replace or update a dimension group. primary_key is the source object of the group's key column.

df_delete_dimension_groupA

PERMANENTLY DELETES DATA IN DATAFORGE. Delete a dimension group. Rejected while it is assigned to a fact table.

df_set_group_dimensionsA

WRITES TO DATAFORGE. Add dimensions to a group, or change the hierarchy level of existing members. Applied all-or-nothing; levels must stay unique.

df_remove_group_dimensionA

PERMANENTLY DELETES DATA IN DATAFORGE. Remove one dimension from a group. The dimension itself stays in the RMD.

df_write_fact_tableA

WRITES TO DATAFORGE. Create, replace or update a fact table. A fact table created via the API has no base physical table; attach elements with df_assign_to_fact_table.

df_delete_fact_tableA

PERMANENTLY DELETES DATA IN DATAFORGE. Delete a fact table. Rejected while it has active relationships.

df_assign_to_fact_tableA

WRITES TO DATAFORGE. Attach existing measures, dimensions, facts or dimension groups to a fact table. Ids are applied in order; already-assigned or unknown ids come back in failed[] with status=partial rather than failing the whole call.

df_unassign_from_fact_tableA

PERMANENTLY DELETES DATA IN DATAFORGE. Detach one element from a fact table. The element itself stays in the RMD.

df_write_verification_filterA

WRITES TO DATAFORGE. Create, replace or update a verification filter. Pass fact_table_id to target a fact-table filter; omit it for a version-level (global) filter. Element references in conditions are written as [Element name].

df_delete_verification_filterB

PERMANENTLY DELETES DATA IN DATAFORGE. Delete a verification filter.

df_write_relationshipB

WRITES TO DATAFORGE. Create, replace or update a star-schema relationship. foreign_key (fact table side) and primary_key (dimension group side) must name the same connection - a join cannot span two databases.

df_delete_relationshipA

PERMANENTLY DELETES DATA IN DATAFORGE. Delete a relationship.

df_set_project_accessA

WRITES TO DATAFORGE. Grant or change a user's access level on a project. Downgrade-only: a level above the user's global role is rejected. Requires the caller to be the project owner or a company administrator.

df_revoke_project_accessA

PERMANENTLY DELETES DATA IN DATAFORGE. Remove a user's explicit access to a project.

df_transfer_project_ownershipA

WRITES TO DATAFORGE. Transfer project ownership. The new owner must belong to the project's company and hold an ownership-capable role.

df_export_version_to_gitA

WRITES TO DATAFORGE. Export a version's configuration to a Git repository. Pass either connection_id (a saved Git connection) or authentication. Exporting an unchanged version creates no commit and returns commit_hash=null.

df_export_version_to_fileA

WRITES TO DATAFORGE. Export a version to a .dfexport.zip archive and return a signed download link. Nothing in DataForge changes, but the archive is stored.

df_check_import_sourceB

Dry run: validate an import source without writing anything. Returns valid, errors[], warnings[] and element counts.

df_preview_importA

Dry run: compare an import source with the target version and report what would change, including per-field conflicts. Nothing is written.

df_import_version_from_gitA

PERMANENTLY DELETES DATA IN DATAFORGE. Import a version from Git. target.method=create makes a new version; target.method=replace OVERWRITES THE VERSION IN THE PATH entirely. Run df_preview_import first. conflict_strategy=overwrite also applies deletions.

df_import_version_from_fileB

PERMANENTLY DELETES DATA IN DATAFORGE. Import a version from a local .dfexport.zip archive. On-premises installations only. target_method=replace OVERWRITES the version in the path.

df_create_git_connectionA

WRITES TO DATAFORGE. Register a Git connection for the company. Requires a company administrator API key. Credentials are stored encrypted and never returned.

df_update_git_connectionA

WRITES TO DATAFORGE. Replace a saved Git connection's configuration.

df_delete_git_connectionA

PERMANENTLY DELETES DATA IN DATAFORGE. Delete a saved Git connection.

df_test_git_connectionA

WRITES TO DATAFORGE. Run the five repository checks for a saved Git connection and refresh its stored status. A failed check is reported as status=failed, not as an error.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 65 tools

Disambiguation4/5

Most tools are clearly separated by resource type (measure, dimension, fact, fact_table, dimension_group, relationship, version, project, connection, git_connection, data_mart) and action (get/list/write/delete/bulk/import/export). A few potential confusions exist: df_get_rmd vs df_get_consolidated_rmd overlap heavily (one is a normalized subset of the other), and df_get_connection_schema vs df_get_connection with include_db_schema=true could be confused, but descriptions clarify the distinction.

Naming Consistency5/5

All tools follow a consistent df_<verb>_<resource> pattern with snake_case throughout. Verbs are predictable: get/list for reads, write for create/replace/update, delete for removals, bulk_write for batch operations, and import/export for transfer operations. The prefix df_ is applied uniformly, making the set highly predictable.

Tool Count2/5

65 tools is a very large surface for a single MCP server. While the domain is broad (semantic modeling, fact tables, relationships, versions, projects, git, access control, import/export), the count exceeds the 25+ threshold and will impose significant context overhead on agents. The tools could reasonably be split into multiple focused servers (e.g., semantic model editor, admin/access, git/import-export).

Completeness5/5

The tool surface is remarkably complete for the DataForge domain: full CRUD for projects, versions, measures, dimensions, facts, fact tables, dimension groups, relationships, verification filters, and git connections; plus bulk operations, assignment/detachment, access management, import/export with dry-run validation, and health/cache utilities. No obvious dead ends or missing lifecycle operations were identified.

Maintenance

ActivityMaintained
ResponsivenessNo issues