Advanced command-line integration for FrameworX with Claude Code.
AI Integration | Claude Skill and MCP Setup | Claude Code MCP Setup
Claude Code connects to FrameworX from the terminal — no GUI needed. Two MCP servers are available depending on your workflow:
AI Designer (DesignerMCP) connects Claude Code to the live Designer IDE on the same machine. Every tool call produces immediate visual changes — the same co-pilot experience as Claude Desktop, but driven from the command line. Use this when you want live building with Designer open on your screen.
AI Console (ConsoleMCP) connects Claude Code to a file-based engineering workflow. No running Designer needed — Claude generates JSON configuration files following the ExportFormat 1.2 standard. Use create_solution_file (for a new solution) or update_solution_file (to update an existing .dbsln in place with auto-backup) to produce or refresh a deployable .dbsln — or open the workspace inside Designer. Use this for analyzing existing projects, generating solutions from specifications, or batch-building.
You can install both. They register as separate MCP servers and do not conflict.
Scenario | Use |
|---|---|
Claude Code on the same Windows machine as Designer — want live co-pilot | AI Designer |
Generate configs without a running Designer | AI Console |
Analyze existing projects, audit configurations | AI Console |
Batch-build or generate solutions from specifications | AI Console |
Interactively migrate solutions from other platforms | AI Designer |
Batch/background migration from other platforms | AI Console |
The two modes use parallel-but-distinct tool names so it is always obvious which mode you are in:
AI Designer (live IDE) | AI Console (file-based) |
|---|---|
|
|
|
|
|
|
|
|
AI Designer operates on .dbsln files (the live solution). AI Console operates on -json/ workspace folders that hold the same configuration as separate JSON files. The create_solution_file and update_solution_file tools (AI Console) and the from_workspace parameter on AI Designer's open_solution / create_solution are the bridges between the two.
This connects Claude Code to the running FrameworX Designer IDE on the same Windows machine. Claude Code launches DesignerMCP directly as a subprocess — the simplest possible setup.
Open a terminal and run:
claude mcp add FrameworX-Designer -- dotnet "C:\Program Files\Tatsoft\FrameworX\fx-10\net8.0\DesignerMCP.dll"
This saves the configuration at project level by default. For other scopes:
-s project — saves to .mcp.json in the project root (shared via version control)-s user — saves to global/user-level config, available in all projectsFor a global install:
For a global install (works in any folder):
claude mcp add -s user FrameworX-Designer -- dotnet "C:\Program Files\Tatsoft\FrameworX\fx-10\net8.0\DesignerMCP.dll"
The filesystem MCP server allows Claude to directly read files produced by get_screenshot and get_solution_export_files. Without it, those tools still work but you must manually provide the files. All other Designer tools work independently.
The filesystem server requires Node.js — install from https://nodejs.org if not already present.
claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem "C:\Users\Public\Documents\FrameworX\Exchange"
Step 3: Verify
claude mcp list
You should see FrameworX-Designer (and filesystem if added) in the list.
If you prefer editing config files directly, add to your .mcp.json or Claude Code MCP settings:
{
"mcpServers": {
"FrameworX-Designer": {
"command": "dotnet",
"args": [
"C:\\Program Files\\Tatsoft\\FrameworX\\fx-10\\net8.0\\DesignerMCP.dll"
],
"transport": "stdio"
},
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"C:\\Users\\Public\\Documents\\FrameworX\\Exchange"
]
}
}
}
Claude Code handles tool authorization inline, it prompts on first use and remembers the decision for the session. No pre-configuration of permissions is needed.
Both open_solution and create_solution accept an optional from_workspace parameter. When supplied, all *.json files in the workspace folder are imported into the solution after it is opened or created. Use this to apply a workspace authored in AI Console to an existing or fresh solution from inside AI Designer.
open_solution(name, from_workspace="C:\\Path\\Foo-json") — opens the existing .dbsln, auto-backs it up (3-file retention), then imports the workspace files using always-replace upsert semantics.create_solution(name, template="HeaderLayout", from_workspace="C:\\Path\\Foo-json") — creates a fresh .dbsln from the template, then imports the workspace files.Missing folder, empty folder, or pipe exception become warnings — the open / create still succeeds. The response includes a workspaceImport section with per-file results.
Beyond the existing navigate / find_object / runtime control actions, three new actions point the user's attention at a specific object:
Action | Purpose | Example |
|---|---|---|
| Select a specific row in a config grid by name and scroll it into view. Visual only, no mutation. |
|
| Alias of |
|
| Expand a tree node in the AssetTree, select it, and scroll into view. V1 supports the AssetTree only. |
|
AI Console connects Claude Code to FrameworX without a running Designer. Claude generates JSON configuration files in a workspace folder that is later turned into a deployable .dbsln via the create_solution_file tool, or refreshed in place on an existing .dbsln via update_solution_file (auto-backup, always-upsert) — or by opening the workspace from inside Designer.
Local machine (stdio):
claude mcp add FrameworX-Console -- dotnet "C:\Program Files\Tatsoft\FrameworX\fx-10\net8.0\ConsoleMCP.dll"
For a global install (works in any folder):
claude mcp add -s user FrameworX-Console -- dotnet "C:\Program Files\Tatsoft\FrameworX\fx-10\net8.0\ConsoleMCP.dll"Step 2: Verify
claude mcp list
You should see FrameworX-Console in the list.
{
"mcpServers": {
"FrameworX-Console": {
"command": "dotnet",
"args": [
"C:\\Program Files\\Tatsoft\\FrameworX\\fx-10\\net8.0\\ConsoleMCP.dll"
],
"transport": "stdio"
}
}
}
How the File-Based Workflow Works
create_workspace or open_workspace — creates or opens a <name>-json/ workspace folder under Documents/FrameworX/Exchange/.get_table_schema to fetch column definitions, then write_objects to generate JSON files.create_solution_file(solution_name, workspace=...) to produce a fresh .dbsln, or update_solution_file(solution=..., workspace=...) to refresh an existing one (auto-backup kept, always-upsert semantics). Both spawn SolutionCreator.exe headlessly.open_solution(name, from_workspace=...) — Designer auto-backs up the target solution and imports the workspace files in place.Category | Tools |
|---|---|
Workspace management |
|
Build & deploy |
|
Object operations |
|
Schema queries |
|
Documentation |
|
AI Console uses *_workspace tool names (file-based JSON folders). AI Designer uses *_solution (live Designer IDE). The underlying operations are parallel but the vocabulary distinguishes the two modes.
Once a workspace has been authored with write_objects, call create_solution_file to produce the deployable .dbsln. The tool invokes SolutionCreator.exe headlessly and waits for it to finish.
create_solution_file(
solution_name="Foo",
workspace="C:\\Users\\Public\\Documents\\FrameworX\\Exchange\\Foo-json",
template="HeaderLayout",
platform="Windows"
)
If workspace is omitted, the active workspace folder set by open_workspace / create_workspace is used. Default template is HeaderLayout, default platform is Windows, default output folder is the standard Solutions folder. The response includes the produced .dbsln path, exit code, per-file import attribution (created / modified / skipped / errors), and the headless log.
Use update_solution_file when the target .dbsln already exists and you want to apply the workspace changes to it rather than produce a new file. The tool auto-backs up the existing .dbsln (keep-last-3 retention, <name>.dbsln__backup__<timestamp>.backup), then spawns SolutionCreator.exe headlessly. SolutionCreator detects the existing target and switches to open-existing mode. Workspace JSON files are imported via SolutionDB.ImportJsonFiles using always-upsert semantics — existing objects with the same name are overwritten by the workspace version.
update_solution_file(
solution="C:\\Solutions\\Foo.dbsln",
workspace="C:\\Users\\Public\\Documents\\FrameworX\\Exchange\\Foo-json"
)
The solution argument must be an absolute path ending in .dbsln to an existing file; the folder and filename are decomposed internally. If workspace is omitted, the active workspace folder is used. The response includes the target path, the backup path, exit code, per-file import attribution, and the headless log.
Use this variant when Claude Code runs on a different machine from the FrameworX Designer. Examples: Claude Code on a Mac terminal driving a Designer inside a Parallels VM, or a laptop connecting to a shared Designer on the LAN.
The Windows machine runs DesignerMCPHttp.exe as a local HTTP MCP server (default port 10150). Claude Code uses the mcp-remote bridge (an npm package) to forward MCP calls to that HTTP endpoint.
Prerequisites. FrameworX Designer installed on the Windows machine. Node.js LTS installed on the Claude Code host (for mcp-remote). Port reachable from the Claude Code host.
On the Windows machine where FrameworX is installed, open File Explorer and navigate to Documents\FrameworX\Utilities, then double-click StartDesignerMCPHttp.bat. A console window confirms the server is listening on port 10150. Leave it running.
claude mcp add FrameworX-Designer -- npx -y mcp-remote http://127.0.0.1:10150/mcp
Use 127.0.0.1 for a local VM, or the LAN IP of the Windows box (for example, 192.168.1.50). For a global install add -s user.
To override the port (when DesignerMCPHttp.json has a custom ListenPort), substitute in the URL. The default 10150 matches the shipped config.
claude mcp list
You should see FrameworX-Designer in the list.
Make sure port 10150 is open in Windows Firewall on the Designer machine. If Claude Code runs on the same host as the VM (Parallels / VMware), configure port forwarding from host to guest for 10150.
Same split-host pattern as the Designer HTTP variant, applied to a file-based workspace. Use this when Claude Code runs on a different machine than the one hosting the workspace folder, or when you want a shared ConsoleMCP server that multiple Claude Code sessions connect to.
Prerequisites: same as the Designer Split Host / HTTP section above. Node.js LTS must be installed on the Claude Code host because mcp-remote is an npm package.
The Windows machine runs ConsoleMCPHttp.exe on default port 10151.
Run ConsoleMCPHttp.exe manually, or install it as a Windows Service for unattended operation. Port and API key live in ConsoleMCPHttp.json alongside the executable (default ListenPort: 10151).
claude mcp add FrameworX-Console -- npx -y mcp-remote http://127.0.0.1:10151/mcp
Replace 127.0.0.1 with the LAN IP of the workspace host when they are on different machines.
claude mcp list
The workspace folder must be reachable from the ConsoleMCPHttp host, not from the Claude Code host. The workspace path on the ConsoleMCP server side is what matters for open_workspace and create_workspace path resolution.
AI Runtime (RuntimeMCP) connects Claude Code to a running FrameworX TServer to read live tag values, browse the operational namespace, inspect alarms, and query the historian. Use this when you need to answer questions about what is happening in a running solution, as opposed to configuring it. Same machine as the runtime.
claude mcp add FrameworX-Runtime -- dotnet "C:\Program Files\Tatsoft\FrameworX\fx-10\net10.0\RuntimeMCP.dll" /Host:localhost /Port:3101 /UserName:guest /Password:""
Runtime connection parameters:
/Host: TServer host (default localhost)./Port: TServer port (default 3101)./UserName and /Password: runtime login (use guest with empty password for anonymous access).Add -s user for a global install. 10 tools ship: runtime_get_value, runtime_browse_uns, runtime_search_uns, runtime_get_object_context, runtime_find_by_iri, runtime_list_by_type, runtime_get_active_alarms, runtime_query_alarm_history, runtime_get_tag_history, runtime_get_info.
claude mcp list
Use this when Claude Code and the running FrameworX TServer are on different machines. Example: an operations console on a laptop connecting to a production TServer on the plant floor.
Prerequisites: same as the Designer Split Host / HTTP section above. Node.js LTS must be installed on the Claude Code host because mcp-remote is an npm package.
The Windows machine runs RuntimeMCPHttp.exe on default port 10120. That HTTP server holds the runtime connection to TServer. Claude Code bridges via mcp-remote.
Edit RuntimeMCPHttp.json alongside the executable to set the target TServer connection (Runtime Host / Port / Username / Password) and the MCP listen port (default 10120). Start RuntimeMCPHttp.exe or install RuntimeMCPHttpService as a Windows Service.
claude mcp add FrameworX-Runtime -- npx -y mcp-remote http://127.0.0.1:10120/mcp
Replace 127.0.0.1 with the LAN IP of the Runtime machine. To override the port when RuntimeMCPHttp.json has a custom ListenPort, substitute in the URL.
claude mcp list
The TServer connection is configured on the RuntimeMCPHttp side, not on the Claude Code side. Claude Code only needs to reach the RuntimeMCPHttp port. The HTTP server handles the downstream TServer link.
Inside RuntimeMCPHttp.json, the TServer port (default 3101) is separate from the MCP listen port (default 10120). Two ports, two roles: MCP bridge = Claude-side, TServer = runtime-side.
The write_objects tool's data parameter accepts three shapes (in both AI Designer and AI Console). Pick the one that matches how you are authoring:
Shape | When to use | Example |
|---|---|---|
JSON string literal | Backwards-compatible. Required when the call is built as a string concatenation. |
|
Parsed JSON array | Single-table without JSON-inside-JSON escaping. Preferred when authoring plan files. |
|
Parsed JSON object | Multi-table without escaping. Preferred for batched plans. |
|
AI Designer test: Open Designer, then ask Claude Code: "Create a new FrameworX solution with a bottling line" — Claude should call create_solution and start building in the live IDE.
AI Console test: Ask Claude Code: "Create a new FrameworX workspace with 10 motor tags and Modbus communication, then build it" — Claude should call create_workspace, fetch schemas, write JSON files, then call create_solution_file to produce the .dbsln.
Symptom | Likely Cause | Fix |
|---|---|---|
| Add command failed or wrong scope | Re-run |
DesignerMCP or ConsoleMCP won't start | .NET 8 runtime missing | Run |
"No active workspace" in AI Console | Workspace not opened | Call |
"Control schemas not found" in AI Console | Missing data file | Ensure |
| SolutionCreator.exe not in expected location | Verify FrameworX is installed and the .NET 4.8 binaries are present alongside ConsoleMCP.dll's parent folder |
HTTP connection refused (remote) | Firewall or wrong IP | Open port 10130, verify IP address |
Claude web-searches for FrameworX basics | Skill not loaded | Verify SKILL.md is in |
File | Location |
|---|---|
Claude Code MCP (project-level) |
|
Claude Code MCP (user-level) |
|
Claude Code skills |
|
AI Console workspace |
|
Questions or feedback: