DataForge Semantic MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CACHE_DIR | No | Cache directory path | ./cache |
| LOG_LEVEL | No | Log level | INFO |
| MCP_TRANSPORT | No | Transport: stdio or sse | stdio |
| DEFAULT_LANGUAGE | No | Default language for measures/dimensions | ru |
| CACHE_TTL_SECONDS | No | Cache TTL in seconds | 3600 |
| DATAFORGE_API_KEY | Yes | API key (required) | |
| DATAFORGE_BASE_URL | No | DataForge API base URL | https://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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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 |
| df_get_dimensionsB | Get all dimensions of a project version. Each dimension carries a stable |
| 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 |
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 65 tools
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.
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.
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).
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.