Enable AI-powered solution configuration through Model Context Protocol integration.
Documentation pages: AI Integration | MCP for Designer In Action | AI MCP for Designer Connector
Preview Connector
Preview Version for tests and training, not released for production.
The AI Designer connector enables AI models to interact with FrameworX Designer, providing intelligent assistance for solution configuration. Describe what you need in natural language, AI generates the configuration.
Two MCP servers are available:
Note: This connector is for configuration-time operations (building solutions in Designer.exe). For querying live data from running solutions, see AI Runtime Connector
| AI Model | ↔ | MCP Protocol | ↔ | Solution Configuration |
|---|---|---|---|---|
| Claude Desktop, Claude.ai, Cursor, GitHub Copilot | Model Context Protocol | Designer.exe (live co-pilot) | ||
| Claude Code (console tool) | Model Context Protocol | JSON files (ConsoleMCP) |
↓
Structured Methods
| Manage Solutions | Read & Write Objects | Schema & Discovery | Designer Control | Documentation |
|---|---|---|---|---|
| Create, open, list solutions, get info & audit. | List, create, update, delete, rename objects. | Table schemas, display elements, protocol search. | Navigate, find, screenshot, runtime, security. | Search docs, fetch pages, inspect examples. |
The AI Designer connector enables AI models to interact with FrameworX Designer, providing intelligent assistance for solution configuration. Describe what you need in natural language, AI generates the configuration.
Two MCP servers are available:
Both share the same schema, documentation, and core object tools. ConsoleMCP simply operates on files instead of a live IDE, and excludes the Designer UI control tools.
Note: This connector is for configuration-time operations (building solutions in Designer.exe). For querying live data from running solutions, see [AI Runtime Connector](AI Runtime Connector)
When AI is connected to Designer (DesignerMCP mode), you'll see:
This provides clear visual feedback that AI is actively controlling the Designer. ConsoleMCP has no visual indicator — it operates on files without a running Designer.
For installation and connection setup (DesignerMCP, ConsoleMCP, HTTP/SSE mode, Claude Skill), see [Claude Skill and MCP Setup](Claude Skill and MCP Setup).
AI Designer is Enabled by default. To disable:
This setting is per-solution.
All tools are available in DesignerMCP. ConsoleMCP provides a subset of 12 — see ConsoleMCP: Claude Code below for what's different.
Tools marked ? are DesignerMCP-only — they require a running Designer IDE.
| Tool | Purpose |
|---|---|
| list_solutions | List available solutions and templates on this machine (works without Designer running) |
| create_solution | Create a new solution, launch Designer, and return the MCP Context document with security info |
| open_solution | Open an existing solution, launch Designer, and return the MCP Context document with security info |
| get_solution_info ? | Get solution statistics — object counts per module, recent changes, audit trail |
The solutions visible to AI Designer are only the ones in folders defined as Allow Remote Access, by the Solution Center tool. By default the solutions in the sub-folder ..\Documents\FrameworXSolutions are visible.
→ See Solution Center — Server Information
The first open_solution, create_solution, or inspect_external_solution call in a conversation triggers an MCP authorization prompt. Approve it once — subsequent calls need no further authorization.
| Tool | Purpose |
|---|---|
| get_objects | Read objects from config tables. detail='summary' for listing, detail='full' for complete JSON. Singletons always return full config. |
| browse_runtime_properties ? | Browse runtime namespace paths (Server, Client, Tag, Alarm, Device, etc.) |
| write_objects | Create or update objects from JSON. Modes: upsert (default), create. Supports dry_run for validation. Multi-table writes handle dependency order automatically. |
| delete_objects | Delete objects by name. Backend prevents deletion of referenced objects — use find_object to inspect usage first. |
| rename_object | Rename an object with safe refactoring — all cross-references update automatically (linked by ID, not name). |
Singleton Tables: SolutionSettings, AlarmsGlobalSettings, RuntimeStartup, and RuntimeExecutionProfiles have a single configuration row — no Name column needed. Use get_objects to read, write_objects(mode='upsert') to modify.
| Tool | Purpose |
|---|---|
| get_table_schema | Get field definitions for any table type. No parameter lists all table types. |
| list_protocols | Search and discover communication protocols. Fuzzy matching by vendor name. Auto-includes protocol schema when search returns exactly one match. |
| list_elements | Get display element properties. No parameter lists all element types by category. Query by type: list_elements('Canvas'), list_elements('Dashboard'), list_elements('WizardSymbol'). |
| list_dynamics | Browse dynamic behaviors (FillColor, Visibility, Action, Rotate, etc.) by category or search. Returns property schemas and ready-to-use JSON patterns. |
Protocol search examples:
list_protocols(search='siemens') → S7, S7Pluslist_protocols(search='allen') → EtherNet/IP, DF1, ControlLogixlist_protocols(search='modbus') → Modbus TCP, Modbus RTUDisplay element queries:
list_elements() — List all element types by categorylist_elements('Canvas') — Canvas display structurelist_elements('Dashboard') — Dashboard grid and cell structurelist_elements('WizardSymbol') — Industrial symbols: BLOWER, MOTOR, PUMP, TANK, VALVEDynamic behavior queries:
list_dynamics() — Overview of all dynamics grouped by categorylist_dynamics('color') — FillColor, LineColor, TextColor dynamicslist_dynamics('action') — ActionDynamic for click handlerslist_dynamics('animation') — Rotate, Move, Scale, Skew dynamicslist_dynamics('FillColorDynamic') — Full schema with property definitions| Tool | Purpose |
|---|---|
| get_state | Get current Designer or Runtime state as lightweight text data. Active page, selected object, compilation errors, runtime health. |
| get_screenshot | Capture a screenshot of the Designer UI, Runtime view, or display/symbol previews. Saves image to the Exchange/Screenshots/ folder with a descriptive filename. AI reads the image via the filesystem MCP server. |
| designer_action | Perform Designer commands: navigation, find, runtime control, and security (8 actions). |
designer_action available actions:
| Action | Purpose | Options |
|---|---|---|
navigate | Go to any module, table, or object | Target path: 'DataExplorer.MQTTTools', 'Tag.Folder1/Level', 'Display.MainPage' |
find_object | Find where an object is used — opens Find Results panel | Object name: 'Tag.Folder1/Level' |
find_next | Step through Find Results — Designer navigates to each location | (none) |
start_runtime | Start solution runtime | (none) |
stop_runtime | Stop runtime | (none) |
hot_reload | Push design changes to running runtime without restart | (none) |
logon | Authenticate a user for secured solutions | 'username:password' |
logoff | Return to Guest (anonymous) user | (none) |
Note: get_objects and write_objects auto-navigate the Designer UI to the relevant context. Use navigate only for pages without configuration objects (DataExplorer tools, AlarmsMonitor, etc.).
Page-specific actions: Some Designer pages expose additional context-specific actions (e.g., expand_all, collapse_all on table views). These appear in get_state responses as tabActions and can be passed directly to designer_action.
| Tool | Purpose |
|---|---|
| search_docs | Search FrameworX documentation with label/section filtering — or fetch full page content by URL. Supports skills, code snippets, examples, and tutorials. |
| inspect_external_solution | Open an external reference solution (local or from web) to inspect its full JSON configuration. Use to study and replicate complete implementation patterns. Creates a subfolder at Exchange named after the application containing solution json files. AI reads files via the filesystem MCP server. |
search_docs modes:
search_docs('alarm configuration') — returns titles and snippetssearch_docs(fetch_url='<url from results>') — returns full page content with code examplesDocumentation labels: concept, tutorial, how-to, example, reference, connector, code, control, use-case, skill
AI Skills: Use search_docs('', labels='skill') to discover available step-by-step implementation guides. Skills are multi-module playbooks that prevent common mistakes in complex configurations.
inspect_external_solution workflow:
search_docs(query, labels='example') — find documented solution examplesinspect_external_solution(solution_path) — list available JSON filesinspect_external_solution(solution_path, file_name='Tags.json') — read specific configurationinspect_application workflow:
inspect_application() — exports current solution to Exchange/<AppName>/ folderConsoleMCP is the file-based companion for Claude Code. It uses 12 of the 16 tools listed above — the same schemas, the same documentation, the same object operations — but writes to JSON files instead of a live Designer.
For installation and configuration, see [Claude Skill and MCP Setup — Option C](Claude Skill and MCP Setup).
Tools that require a running Designer IDE and are not available in ConsoleMCP:
| Excluded Tool | Why |
|---|---|
| get_solution_info | Queries live solution state (object counts, audit trail) |
| browse_runtime_properties | Browses the live runtime namespace |
| designer_action (includes get_state, get_screenshot, find_object, hot_reload, navigate, start/stop runtime, logon/logoff) | Controls the Designer UI |
Behavioral differences in shared tools:
| Tool | DesignerMCP | ConsoleMCP |
|---|---|---|
| create_solution / open_solution | Launches Designer.exe, opens solution in IDE | Creates or opens a <n>-json/ folder in Documents/FrameworX/Exchange/ |
| list_solutions | Scans Solution Center folders for .fxproj files | Scans Exchange folder for *-json/ folders |
| write_objects | Writes to live solution via named pipe, backend validates in real time | Writes JSON files following ExportFormat 1.2, validates against local schema |
| get_objects | Reads from live solution | Reads from JSON files in the solution folder |
| delete_objects | Deletes in live solution, backend prevents deletion of referenced objects | Removes from JSON files, cleans up empty files |
| rename_object | Renames with automatic cross-reference updates (linked by ID) | Updates Name field in JSON — cross-references resolved on Designer import |
Each JSON file generated by ConsoleMCP follows this envelope:
{
"ObjectIdentification": {
"TableType": "UnsTags",
"SolutionName": "MySolution"
},
"ExportMetadata": {
"ExportDate": "2026-02-21T14:30:00Z",
"ExportUser": "ConsoleMCP",
"ExportProduct": "FrameworX",
"ExportFormat": "1.2"
},
"Data": [
{ "Name": "Tank1/Level", "Type": "Analog", "EngUnits": "%" },
{ "Name": "Tank1/Pump", "Type": "Digital" }
]
}
| Scenario | Use |
|---|---|
| Claude Code on same machine as Designer — want live co-pilot | DesignerMCP |
| Claude Desktop or Claude.ai — want live co-pilot over the network | DesignerMCPHttp |
| Claude Code — generate configs without a running Designer | ConsoleMCP |
| Analyzing existing projects, auditing configurations | ConsoleMCP |
| Batch-building or generating solutions from specifications | ConsoleMCP |
Both servers can be installed side by side. They register as separate MCP servers and do not conflict.
Several AI Designer tools use the Exchange folder to share files between the Designer and AI, rather than embedding large data in MCP responses. The filesystem MCP server (configured during [setup](Claude Skill and MCP Setup)) gives AI direct read access to these files.
| Subfolder | Tool | Contents |
|---|---|---|
Exchange/<AppName>/ | inspect_application | Solution JSON files (Tags.json, Channels.json, Displays.json, etc.) |
Exchange/Screenshots/ | get_screenshot | Captured images with descriptive filenames (e.g., Screenshot_MainPage_2026-02-15_14-30-00.jpg) |
Exchange/<SolutionName>-json/ | ConsoleMCP | JSON configuration files generated by Claude Code |
This file-based approach keeps MCP responses lightweight and avoids large base64-encoded data in the conversation context.
Objects created by AI receive Category = "MCP" (via SolutionCategories) to track AI-created vs manually-created.
| Object Category | What AI Can Update |
|---|---|
| Contains "MCP" | All fields (full replacement) |
| No "MCP" (user edited) | Description field only |
How it works:
Note: MCP Category protection applies to DesignerMCP only. ConsoleMCP writes plain JSON files — ownership is managed when the engineer imports into Designer.
Solutions can have security enabled with user accounts and edit permissions.
How authentication works with AI (DesignerMCP):
Guest by default) and edit permissionsUnrestricted, AI informs the user that some operations may be restricteddesigner_action('logon', 'username:password')designer_action('logoff') returns to GuestAI can browse and read the solution even as Guest. Permission restrictions only affect write operations.
Security: AI never echoes, logs, or repeats passwords in its responses.
Note: ConsoleMCP does not have authentication — it operates on JSON files in the Exchange folder. Security is enforced when the engineer imports files into a secured solution in Designer.
| Module | TableType | Notes |
|---|---|---|
| UNS | UnsTags | Process tags organized in folder paths |
| UnsUserTypes | UDT templates | |
| UnsTagProviders | External data sources | |
| UnsEnumerations | Enum mappings | |
| Devices | DevicesChannels | Protocol configuration |
| DevicesNodes | Device addresses | |
| DevicesPoints | Tag-to-address mapping | |
| Alarms | AlarmsGroups | Behavior rules |
| AlarmsItems | Tag-bound triggers | |
| AlarmsAreas | Optional hierarchy | |
| AlarmsGlobalSettings | Module configuration (singleton) | |
| Historian | HistorianStorageLocations | Data repository |
| HistorianHistorianTables | Storage coordination | |
| HistorianHistorianTags | Tags to log | |
| Datasets | DatasetsDBs | Database connections |
| DatasetsQueries | SQL queries | |
| DatasetsTables | Direct table access | |
| DatasetsFiles | File operations | |
| Scripts | ScriptsTasks | Event-triggered code |
| ScriptsClasses | Reusable libraries | |
| ScriptsExpressions | One-liner calculations | |
| ScriptsReferences | External DLL references | |
| Reports | ReportsForms | Documents |
| ReportsWebData | JSON/XML | |
| Displays | DisplaysList | UI screens (Canvas or Dashboard) |
| DisplaysSymbols | Reusable user-authored components | |
| DisplaysLayouts | Layout regions | |
| DisplaysImages | Image library | |
| Security | SecurityUsers | Accounts |
| SecurityPermissions | Permission groups | |
| SecurityPolicies | Session/password rules | |
| SecuritySecrets | Credentials (not accessible by AI) | |
| Solution | SolutionCategories | Object labels (MCP flag) |
| SolutionSettings | Global solution config (singleton) | |
| Runtime | RuntimeStartup | Startup configuration (singleton) |
| RuntimeExecutionProfiles | Dev/Prod replacement connections (singleton) |
| Context | Syntax | Example |
|---|---|---|
| Scripts (C#, VB, Python) | @ prefix + .Value | @Tag.Tank1/Level.Value |
| Expressions | No prefix, no .Value | Tag.Tank1/Level + 10 |
| Display bindings | @ prefix + .Value | @Tag.Tank1/Level.Value |
| String embedding | Curly braces | "Level: {Tag.Tank1/Level} %" |
/ (slash) — only for Tags and Symbols: Tag.Area1/Line1/Tank1. (dot) — for all other access: Server.DateTimeInfo.SecondTag.Area1/Line1/Loop1.Setpoint (dot after tag path for member access)Alarm.Group.Critical.TotalCountCritical: Never use . for folders or / for members. Tag.Area1.Line1.Tank1 is WRONG. Tag.Area1/Line1/Loop1/Setpoint is WRONG.
designer_action('find_object', 'Tag.Tank1Level') — opens Find Results panel in Designer showing all cross-references.designer_action('find_object', 'Display.TestDisplay') to check references first, then delete_objects if safe.rename_object — all cross-references update automatically (linked by ID, not name).designer_action('hot_reload')designer_action('logon', 'admin:password')inspect_application() to export JSON files to the Exchange folder, then reads them via the filesystem server for analysis.Instead of "Create some tags", say:
"Create these tags in the Production folder: MixerSpeed (Double, 0-1000 RPM), MixerRunning (Digital), BatchCount (Integer)"
"Validate this configuration before creating 50 tags"
AI uses write_objects with dry_run=true to check for errors without committing.
"Search for a skill on Modbus TCP configuration"
AI searches for step-by-step guides that prevent common mistakes.
"Show me the recent changes" or "Navigate to the Tags tab"
AI Designer server not starting
Claude doesn't see Designer tools
Filesystem MCP server not connecting
node --version in command prompt)"Update blocked" message
Changes not appearing in Designer
No visual indicator (orange border)
Permission errors on write operations
ConsoleMCP: "No active solution"
open_solution or create_solution firstConsoleMCP: "Control schemas not found"
ControlSchemas.json is in the MCP folder alongside ConsoleMCP.exeConsoleMCP fails to launch
dotnet --list-runtimes — install .NET 8.0 from dotnet.microsoft.com