OpenL MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OPENL_TIMEOUT | No | Optional timeout in ms | 60000 |
| OPENL_BASE_URL | Yes | Base URL of OpenL Studio | |
| OPENL_PASSWORD | No | Password for basic auth | |
| OPENL_USERNAME | No | Username for basic auth | |
| OPENL_PERSONAL_ACCESS_TOKEN | No | Personal access token |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| openl_list_repositoriesA | List all design repositories in OpenL Studio. Returns repository information including 'id' (internal identifier) and 'name' (display name). Use the 'name' field when working with repositories in other tools. Example: if response contains {id: 'design-repo', name: 'Design Repository'}, use 'Design Repository' (the name) in other tools like list_projects(repository: 'Design Repository'). |
| openl_list_branchesA | List all Git branches in a repository. Returns branch names and metadata (current branch, commit info). Use this to see available branches before switching or comparing versions. Use repository name (not ID) - e.g., 'Design Repository' instead of 'design-repo'. |
| openl_list_projectsA | List all projects with optional filters (repository, status, tags). Returns project names, status (OPENED/CLOSED), metadata, and a convenient 'projectId' field from API to use with other tools. For local-only projects, do not pass repository filter 'local' (it may fail); list projects without that filter and filter results by repository === 'local' client-side. For such projects, open/save/close do not work; table/rule/test tools work without opening. IMPORTANT: The 'projectId' is returned exactly as provided by the API and should be used without modification. Use repository name (not ID) - e.g., 'Design Repository' instead of 'design-repo'. Use this to discover and filter projects. |
| openl_get_projectA | Get comprehensive project information including details, modules, dependencies, and metadata. Returns full project structure, configuration, and status. |
| openl_open_projectA | Open a project for editing. Supports opening on specific branches or viewing specific Git revisions. Use this before making changes to project tables or rules. |
| openl_save_projectA | Save project changes to Git. Works only when project status is EDITING (after opening and making changes). Requires comment (used as revision/commit message). Creates a new revision and transitions project to OPENED. Optional closeAfterSave: true saves and closes in one request. Use after update_table, append_table, or other edits. Does not work for repository 'local'. Validates project before saving if validation endpoint is available. |
| openl_close_projectA | Close a project. If the project has unsaved changes (status EDITING), you must either save (saveChanges: true with comment) or discard (discardChanges: true). When discarding, ask the user for confirmation and then call again with confirmDiscard: true. Prevents accidental data loss. |
| openl_list_tablesA | List all tables/rules in a project with optional filters for type, name, and file. Returns table metadata including 'tableId' (the 'id' field) which is required for calling get_table(), update_table(), append_table(), or run_project_tests(). Use the 'tableId' field from the response to reference specific tables in other API calls. |
| openl_get_tableA | Get detailed information about a specific table/rule. By default returns a parsed table structure with signature, conditions, actions, dimension properties, and row data. Set raw=true to get an unparsed 2D cell matrix (RawTableView) instead — useful for unknown/custom table types or preserving exact cell layout. Note: raw output cannot be passed directly to openl_update_table (which expects the parsed form). |
| openl_update_tableA | Replace the ENTIRE table structure with a modified version. Use for MODIFYING existing rows, DELETING rows, REORDERING rows, or STRUCTURAL changes. CRITICAL: Must send the FULL table structure (not just modified fields). DO NOT use for simple additions - use append_table instead. Required workflow: 1) Call get_table() to retrieve complete structure, 2) Modify the returned object, 3) Pass the ENTIRE modified object to update_table(). |
| openl_append_tableA | Add new rows/fields to an existing table (additions only). Payload by type: Datatype→fields, SimpleRules/SmartRules→rules, SimpleSpreadsheet→steps, Vocabulary→values, RawSource→rows. For modifying, deleting, or reordering use update_table instead. |
| openl_create_project_tableA | Create a new table/rule in OpenL project using BETA API (Create New Project Table). This is the recommended tool for creating new OpenL tables programmatically. Use cases: Create Rules (decision tables), Spreadsheet tables, Datatype definitions, Test tables, or other table types. Requires moduleName (existing project module name) and complete table structure (EditableTableView). The table structure must include at least tableType, kind, name, plus type-specific data (rules/headers for Rules tables, rows for Spreadsheet, fields for Datatype). id is optional for create requests. Use get_table() on an existing table as a reference for the structure. This tool uses the Create New Project Table (BETA) API endpoint. |
| openl_list_deploymentsB | List all active deployments across production environments. Returns deployment names, repositories, versions, and status information. |
| openl_deploy_projectA | Deploy a project to production environment. Publishes rules to a deployment repository for runtime execution. Use production repository name (not ID) - e.g., 'Production Deployment' instead of 'production-deploy'. |
| openl_start_traceA | Start trace execution for a table. Trace is asynchronous (returns 202 Accepted). For regular rules: provide inputJson with { params: {...}, runtimeContext?: {...} }. For test tables: use testRanges (e.g. '1-3,5'). After starting, use openl_get_trace_nodes to retrieve results; if you get 409 Conflict, trace is still running—wait and retry. |
| openl_get_trace_nodesA | Get trace node children (or root nodes if nodeId omitted). Requires trace to be completed (409 Conflict if still running). Use openl_start_trace first, then poll this until it returns nodes. |
| openl_get_trace_node_detailsA | Get detailed trace node including parameters, context, result, and errors. Node IDs come from openl_get_trace_nodes. |
| openl_get_trace_parameterA | Get lazy-loaded parameter value. Use when a TraceParameterValue has lazy:true and parameterId set. |
| openl_cancel_traceB | Cancel ongoing trace execution for a project. |
| openl_export_traceB | Export trace as plain text. Returns full trace content. Use release: true to clear trace from memory after export. |
| openl_list_repository_featuresA | Get features supported by a design repository (branching, searchable, etc.). Use this to check if a repository supports specific features like branching before performing operations that depend on those features. Use repository name (not ID) - e.g., 'Design Repository' instead of 'design-repo'. |
| openl_repository_project_revisionsA | Get revision history (commit history) of a project in a design repository. Returns list of revisions with commit hashes, authors, timestamps, and commit types. Supports pagination and filtering by branch and search term. Use repository name (not ID) - e.g., 'Design Repository' instead of 'design-repo'. |
| openl_list_deploy_repositoriesA | List all deployment repositories in OpenL Studio. Returns repository names, their types, and status information. Use this to discover all available deployment repositories before deploying projects. |
| openl_create_project_branchA | Create a new branch in a project's repository from a specified revision. Allows branching from specific revisions, tags, or other branches. If no revision is specified, the HEAD revision will be used. |
| openl_list_project_local_changesA | List local change history for a project. Returns list of workspace history items with versions, authors, timestamps, and comments. NOTE: Requires the project to be opened (openl_open_project first); not available for repository 'local' (local projects cannot be opened). Uses session-based project context; no projectId parameter. |
| openl_restore_project_local_changeA | Restore a project to a specified version from its local history. Use the historyId from openl_list_project_local_changes response. NOTE: Requires the project to be opened first; not available for repository 'local'. Uses session-based project context; no projectId parameter. |
| openl_start_project_testsA | Start project test execution. For design repositories the project is automatically opened if closed; for repository 'local' the project is not opened (tests run directly). Returns execution status and metadata. Test results can be retrieved using openl_get_test_results_summary, openl_get_test_results, or openl_get_test_results_by_table. |
| openl_get_test_results_summaryA | Get brief test execution summary without detailed test cases. Returns aggregated statistics (execution time, total tests, passed, failed) without the testCases array. Use openl_start_project_tests() first to start test execution. |
| openl_get_test_resultsA | Get full test execution results with pagination support. Returns complete test execution summary including testCases array grouped by table. IMPORTANT: Pagination applies to test tables (not individual test cases). Each page returns test results aggregated by table (e.g., 'TestTable1' with 7 tests, 'TestTable2' with 8 tests). Supports filtering failures and pagination (page/offset/size). Use openl_start_project_tests() first to start test execution. |
| openl_get_test_results_by_tableA | Get test execution results filtered by specific table ID. Returns filtered test execution summary with only test cases for the specified table. Supports pagination (page/offset/size) for efficient data retrieval. Use openl_start_project_tests() first to start test execution. |
| openl_redeploy_projectA | Redeploy an existing deployment with a new project version. Use this to update a deployment with a newer version of the project or rollback to a previous version. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| local_projects | Working with projects in repository 'local': no open/save/close, no Git; table/rule/test tools work directly without opening |
| append_table | Guide for efficiently appending new rows/fields to existing Datatype and Data tables without replacing the entire structure |
| create_rule | Comprehensive guide for creating OpenL decision tables, spreadsheets, and datatypes with examples for all table types (Rules, SimpleRules, SmartRules, SimpleLookup, SmartLookup, Spreadsheet) |
| create_rule_decision_tables | Comprehensive guide for creating decision tables (Rules, SimpleRules, SmartRules, SimpleLookup, SmartLookup) in OpenL Studio with detailed examples and parameter matching strategies |
| create_rule_spreadsheet | Detailed guide for creating Spreadsheet tables in OpenL Studio for multi-step calculations with formula syntax, JSON structure, and common mistakes |
| create_test | Step-by-step guide for creating OpenL test tables with proper 3-row structure, test case design, and expected value validation |
| datatype_vocabulary | Guide for creating custom datatypes (domain objects) and vocabularies (enumerations) in OpenL Studio with inheritance, field types, and validation |
| deploy_project | OpenL deployment workflow with mandatory validation checks, test execution requirements, and environment selection (dev, test, staging, prod) |
| dimension_properties | Explanation of OpenL dimension properties for business versioning (state, country, lob, effectiveDate) vs Git versioning, with runtime selection logic |
| execute_rule | Guide for constructing test data and executing OpenL rules with proper JSON formatting for simple types, complex objects, and arrays |
| file_history | Guide for viewing Git-based file version history in OpenL, including commit hash navigation and version comparison |
| get_project_errors | OpenL error analysis workflow with pattern matching, categorization, and fix recommendations for common validation errors |
| project_history | Guide for viewing project-wide Git commit history, comparing with file history, and understanding when to use each |
| run_test | Test selection logic and workflow for running OpenL tests efficiently based on scope (single table, multiple tables, or all tests) |
| update_test | Guide for modifying existing test tables, adding test cases, updating expected values, and handling test failures |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| OpenL Repositories | All design repositories in OpenL Studio |
| OpenL Projects | All projects across all repositories |
| OpenL Project Details | Get details for a specific project (use projectId from openl_list_projects) |
| Project Tables | List all tables in a project |
| Table Details | Get details for a specific table |
| Project History | Get Git commit history for a project |
| Project File | Download a file from a project |
| OpenL Deployments | All deployment repositories and deployed projects |
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/openl-tablets/openl-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server