File-based MCP surface for FrameworX. Author solutions as JSON workspace folders with no running Designer.
AI Integration → ConsoleMCP Reference
Draft preview of the 10.1.5
. Workspace architecture v2 renames the solution tools to*_workspace, adds additions to ConsoleMCP — compile feedback on create_solution_file and update_solution_file, and
the new verify_solution_file tool.
ConsoleMCP Reference → ConsoleMCP Reference (10.1.5 draft)
| Info |
|---|
This is a 10.1.5 draft preview. The tools and parameters described here are not yet released in the currently shipping version. When 10.1.5 ships, this content will be merged into the parent page and this draft retired. |
10.1.5 surfaces the compile output that already lives inside a produced .dbsln. Both create_solution_file and update_solution_file now include the shared build block in their response, drawn directly from the error columns of the four *Contents tables inside the solution file. A new tool, verify_solution_file, lets an agent inspect a .dbsln after the fact and confirm that every expected object is present and compiled cleanly.
The JSON shape returned by both paths is defined once on MCP SDK Reference (10.1.5 draft) — the "build Block" section there is the authoritative shape. This page covers only the ConsoleMCP-specific entry points
ConsoleMCP is one of two MCP servers Tatsoft ships for Claude Code. It operates on JSON workspace folders under Public Documents\FrameworX\Exchange\<Name>-json\. Each folder holds the same tables that live inside a .dbsln, one table per file, in the ExportFormat 1.2 envelope. Use ConsoleMCP for batch-build, audit, migration, and specification-driven workflows where a live Designer is not required.
See Claude Code MCP Setup for install steps. Use MCP SDK Reference for the list of MCP server executables and their transports.
| Table of Contents | ||||||
|---|---|---|---|---|---|---|
|
build blockBoth tools already return per-file import attribution and the headless SolutionCreator.exe log. In 10.1.5 they additionally carry the shared build block, so the agent sees compile status for every Script and Display in the produced solution without a second call
Both servers expose parallel operations with deliberately distinct tool names so the mode is always obvious in a transcript.
| DesignerMCP (live IDE) | ConsoleMCP (file-based) | Target |
|---|---|---|
list_solutions | list_workspaces | .dbsln vs. workspace folder |
open_solution | open_workspace | Activate the target for the session. |
create_solution | create_workspace | Create a new target from the default template. |
get_solution_info | get_workspace_info | Return environment context for the active target. |
Tools with no mode-specific vocabulary keep the same name in both servers: write_objects, get_objects, delete_objects, rename_objects, browse_object_model, get_table_schema, list_elements, list_dynamics, list_protocols, search_docs, get_solution_export_files, search_uns, import_graph_model, export_graph_model, generate_uns_visual.
A workspace folder holds one JSON file per table, using the ExportFormat 1.2 envelope. ConsoleMCP creates the folder under Public Documents\FrameworX\Exchange\<Name>-json\ and keeps a session log in mcp_session_log.json alongside the tables.
| Code Block | ||
|---|---|---|
| ||
<Name>-json/{ UnsUserTypes.json UnsTags.json UnsAssetTree.json UnsEnumerations.json DisplaysList.json DisplaysSymbols.json AlarmsItems.json DevicesChannels.json ... Exchange/ Graphs/ <Name>_UNS_Graph.rj Visualizations/ <Name>_UNS_Visual.md mcp_session_log.json"solution": "C:\\Solutions\\Foo.dbsln", "exitCode": 0, "imported": { "created": 12, "modified": 0, "skipped": 0, "errors": 0 }, "build": { "objects": [ { "type": "Script", "name": "Line1_Cycle", "status": "ok", "diagnostics": [], "elapsedMs": 42 }, { "type": "Display", "name": "MainPage", "status": "error", "diagnostics": [ { "line": 18, "msg": "Cannot implicitly convert type 'string' to 'int'" } ], "elapsedMs": 91 } ], "summary": { "built": 11, "failed": 1, "skipped": 0, "timestamp": "2026-04-21T16:02:11Z" } } } |
A .dbsln is a SQLite database. Each of the four affected tables — ScriptsTasks, ScriptsClasses, ScriptsExpressions, DisplaysList — has a companion *Contents table (ScriptsTasksContents, ScriptsClassesContents, ScriptsExpressionsContents, DisplaysListContents) whose error columns hold the compile result written at build time by SolutionCreator.
ConsoleMCP queries those columns after the build completes and assembles the build block from the result. This is NOT stdout parsing of the SolutionCreator log — it is a direct read of the compiled result persisted inside the produced .dbsln. The same data the Designer displays when it opens the solution is the data ConsoleMCP reports back to the agent.
A non-zero summary.failed does not by itself fail the tool call. The .dbsln is still produced and the agent can inspect build.objects[] to decide whether to correct the workspace and re-run.
Reads an existing .dbsln and returns two things: a per-table Name inventory of every object in the solution, and the shared build block drawn from the *Contents tables. Optionally diffs the inventory against a caller-supplied list of expected object names.
This is a verification tool, not a read tool. It returns Names only — no row contents, no field values. Use get_objects to read row contents.
Overlay semantics apply on import. When you run import_graph_model, the overlay is written as UnsUserTypes-graph-<ts>.json next to the canonical file. Canonical files are never overwritten until you explicitly build the .dbsln.
| Category | Tools |
|---|---|
| Workspace management | list_workspaces, open_workspace, create_workspace, get_workspace_info |
| Build and deploy | create_solution_file, update_solution_file |
| Object operations | write_objects, get_objects, delete_objects, rename_objects, browse_object_model |
| Schema queries | get_table_schema, list_elements, list_dynamics, list_protocols |
| Semantic and ontology | search_uns, import_graph_model, export_graph_model, generate_uns_visual |
| Documentation | search_docs, get_solution_export_files |
Note. ConsoleMCP does NOT expose promote_retentive_attributes. That tool mutates runtime state via the live Designer pipe and is intentionally excluded from the file-based surface.
Turns a workspace into a new .dbsln. ConsoleMCP spawns SolutionCreator.exe headlessly and waits for completion.
| Code Block | ||
|---|---|---|
| ||
createverify_solution_file( solution_name="Foo", workspace="C:\\Users\\Public\\Documents\\FrameworX\\Exchange\\Foo-json", template="HeaderLayout", platform="Windows", output_folder=null ): string, // .dbsln base name or absolute path expected_names: { <TableType>: [<Name>, ...], ... } // optional diff input ) -> { solution: "<path>", inventory: { <TableType>: [<Name>, ...], ... }, build: <shared build block>, missing: { <TableType>: [<Name>, ...], ... }, // present only when expected_names supplied unexpected: { <TableType>: [<Name>, ...], ... } // present only when expected_names supplied } |
| Parameter | RequiredDefault | Notes | |
|---|---|---|---|
| solution_name | Yes | – | Name of the The .dbsln to produce. |
| workspace | No | Active workspace | Absolute path to the -json/ folder. Falls back to the workspace set by open_workspace or create_workspace. |
| template | No | HeaderLayout | Template used when materializing the new .dbsln. |
| platform | No | Windows | Platform flag passed to SolutionCreator. |
| output_folder | No | Standard Solutions folder | Absolute path. Use when the .dbsln must land outside the default Solutions folder. |
Response includes the produced .dbsln path, exit code, per-file import attribution (created, modified, skipped, errors), and the headless log.
open. Either a base name resolved against the standard Solutions folder or an absolute path ending in .dbsln. | ||
| expected_names | No | Object shaped as { table_type: ["Name1", "Name2", ...], ... }. When supplied, the response includes missing[] (expected but not found) and unexpected[] (found but not expected) per table type. |
verify_solution_file opens only current-version .dbsln files. It performs a direct SQLite read — it does not go through the DbslnExplorer pipeline and does not handle legacy formats, password-protected files, or pre-migration schema versions. A .dbsln that does not match the current schema version returns SOLUTION_VERSION_MISMATCH; the caller is expected to upgrade the solution through Designer first.
| Code Block | ||
|---|---|---|
| ||
verify |
Refreshes an existing .dbsln in place from a workspace. Auto-backs up the target .dbsln with keep-last-3 retention, then applies the workspace JSON files with always-upsert semantics (existing objects with the same name are overwritten by the workspace version).
| Code Block | ||
|---|---|---|
| ||
update_solution_file( solution_name = "Foo", expected_names = { "ScriptsTasks": ["Line1_Cycle", "Line2_Cycle"], "DisplaysList": ["MainPage", "AlarmsPage"], "UnsTags": ["Plant1/Temperature", "Plant1/Pressure"] } ) # Response (abbreviated) { "solution": "C:\\Solutions\\Foo.dbsln", "inventory": { "ScriptsTasks": ["Line1_Cycle", "Line2_Cycle"], workspace="C:\\Users\\Public\\Documents\\FrameworX\\Exchange\\Foo-json" ) |
The solution argument is an absolute path ending in .dbsln and must point to an existing file. Backup filename pattern: <Name>.dbsln__backup__<timestamp>.backup. Response mirrors create_solution_file and includes the backup path.
"DisplaysList": ["MainPage"],
"UnsTags": ["Plant1/Temperature", "Plant1/Pressure", "Plant1/Flow"]
},
"build": { "objects": [...], "summary": { "built": 2, "failed": 0, "skipped": 0, "timestamp": "..." } },
"missing": {
"DisplaysList": ["AlarmsPage"]
},
"unexpected": {
"UnsTags": ["Plant1/Flow"]
}
}
|
An agent that writes a workspace to a specification typically pairs create_solution_file or update_solution_file with verify_solution_file using the spec's expected-names list. The pair catches both build breaks (via build.summary.failed) and inventory drift (via missing[] and unexpected[]).
DesignerMCP's open_solution and create_solution accept an optional from_workspace parameter. When supplied, Designer opens or creates the target .dbsln, auto-backs up (3-file retention), and imports every *.json file from the workspace folder using the same upsert semantics as update_solution_file. Use this to apply a workspace authored in ConsoleMCP to an existing or fresh solution from inside a live Designer session.
open_solution(name, from_workspace="C:\\Path\\Foo-json")create_solution(name, template="HeaderLayout", from_workspace="C:\\Path\\Foo-json")A missing folder, an empty folder, or a pipe exception becomes a warning. The open or create still succeeds. The response carries a workspaceImport section with per-file results.
| Code | Where | Meaning | |||||
|---|---|---|---|---|---|---|---|
NOSOLUTION_ACTIVEVERSION_WORKSPACE | Object and schema tools | Call open_workspace or create_workspace first. | MISMATCH | verify_solution_file | The target .dbsln is not a current-version file. Upgrade through Designer first; verify | WORKSPACE_NOT_FOUND | open_workspace, update_solution_fileFolder does not exist at the given absolute pathmigrate. |
SOLUTION_NOT_FOUNDENCRYPTED | updateverify_solution_file | Target The target .dbsln is password-protected. verify_solution_file does not exist at the given absolute path. | SOLUTION_CREATOR_NOT_FOUND | accept credentials — use the Designer session for protected files. | |||
INVALID_EXPECTED_NAMES | verifycreate_solution_file, update_solution_file | SolutionCreator.exe is not in the expected location next to ConsoleMCP.dll. | |||||
INVALID_SCOPE | search_uns | Scope folders is runtime-only and not supported on the file-based surface. | |||||
expected_names is not shaped as { table_type: [names], ... }. Response includes an examples array with the correct shape | CONTROL_SCHEMAS_NOT_FOUND | Schema tools | ControlSchemas.json missing from the MCP folder alongside ConsoleMCP.dll. |
| Page Tree | ||
|---|---|---|
|