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 MCP for Designer 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.
Note: This connector is for configuration-time operations (building solutions in Designer.exe). For querying live data from running solutions, see .
| AI Model | ↔ | MCP Protocol | ↔ | Solution Configuration | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Claude, GPT, GitHub Copilot | Model Context Protocol | Designer.exe | ||||||||||
| ↓ | ||||||||||||
| Structured Methods | ||||||||||||
| ||||||||||||
Visual Indicator
When AI is connected to Designer, you'll see:
This provides clear visual feedback that AI is actively controlling the Designer.
MCP for Designer is Enabled by default. To disable:
This setting is per-solution.
{
"mcpServers": {
"FrameworX-Designer": {
"command": "<ProductPath>\\fx-10\\MCP\\DesignerMCP.exe",
"transport": "stdio"
}
}
}Tip: You can run both MCP for Designer and MCP for Runtime simultaneously by including both configurations in your claude_desktop_config.json file.
| Tool | Purpose |
|---|---|
| list_solutions | List available solutions on this machine (works without Designer running) |
| create_solution | Create a new solution and return the MCP Context document |
| open_solution | Open an existing solution and return the MCP Context document |
| get_solution_info | Get solution statistics — object counts per module |
The solutions visible to the MCP for 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
| Tool | Purpose |
|---|---|
| get_objects | Read objects from config tables. detail='summary' for listing, detail='full' for complete JSON. Singletons always return full config. |
| browse_namespace | Browse runtime namespace paths (Server, Client, Tag, Alarm, Device, etc.) |
| get_table_schema | Get field definitions for any table type. No parameter lists all table types. |
| write_objects | Create or update objects from JSON. Modes: upsert (default), create. Supports dry_run for validation. |
Singleton Tables: SolutionSettings, AlarmsGlobalSettings, RuntimeStartup, and RuntimeExecutionProfiles have a single configuration row — no Name column needed. Use
get_objectsto read,write_objects(mode='upsert')to modify.
| Tool | Purpose |
|---|---|
| designer_action | Navigate UI, get state, control runtime (8 actions) |
Available actions:
navigate — Go to target page (DataExplorer.MQTTTools, AlarmsMonitor, etc.)get_current_view — Current UI state + selected object config. Options: 'true' for screenshot.get_runtime_status — Runtime health. Auto-navigates to diagnostics or startup page.start_runtime / stop_runtime — Control runtime executionhot_update — Apply configuration changes without full restartstart_mqtt_broker — Start the built-in MQTT brokerstart_mqtt_simulator — Start the MQTT publisher simulatorNote:
get_objectsandwrite_objectsauto-navigate the Designer UI to the relevant context. Usenavigateonly for pages without configuration objects (DataExplorer tools, AlarmsMonitor, etc.).
| Tool | Purpose |
|---|---|
| get_table_schema | Field definitions for config tables (also listed under Object Operations) |
| list_protocols | Search and discover communication protocols. Auto-includes schema when search returns exactly one match. |
| get_element_schema | Get display element properties (Canvas, Dashboard, controls, gauges, charts) |
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:
get_element_schema() — List all element types by categoryget_element_schema('Canvas') — Canvas display structureget_element_schema('Dashboard') — Dashboard grid and cell structureget_element_schema('WizardSymbol') — Industrial symbols: BLOWER, MOTOR, PUMP, TANK, VALVE| Tool | Purpose |
|---|---|
| search_docs | Search FrameworX documentation with label and section filters |
| get_solution_files | Fetch JSON config files from documented solution examples |
Recommended workflow: Start with search_docs(query, labels='code') for code snippets. Escalate to labels='example' + get_solution_files only when complete configurations are needed.
Documentation labels: concept, tutorial, how-to, example, reference, connector, code, control, use-case
| Tool | Purpose |
|---|---|
| get_track_changes | Query audit trail, cross-references, versions, usage counts |
Query types:
RecentChanges — Modification history (who/what/when)VersionControl — Version info for objectsCrossReference — Where an object is referenced (requires object_name)UseCount — Usage count across solution| 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) | |
| Track Changes | RecentChanges, VersionControl, CrossReference, UseCount — query-only via get_track_changes | |
| 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.Tank1is WRONG.Tag.Area1/Line1/Loop1/Setpointis WRONG.
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:
"Create a Double tag called TankLevel in the Tanks folder with range 0-100"
"Connect to a Siemens S7-1500 PLC at 192.168.1.10"
AI will: Search protocols → Present options → Create Channel → Create Node → Help map Points
"Create a dashboard with 4 cells showing TankLevel, TankTemp, PumpStatus, and AlarmCount"
"Create high and low alarms for TankLevel: High at 90 (Critical), Low at 10 (Warning)"
"Where is tag Tank1Level used?"
AI uses: get_track_changes('CrossReference', object_name='Tag.Tank1Level')
"Apply my tag changes to the running system"
AI uses: designer_action('hot_update')
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.
"Show me the recent changes" or "Navigate to the Tags tab"
"Search the documentation for alarm configuration options"