内容
# ftx-mcp
<!-- mcp-name: io.github.asqi-carter/ftx-mcp -->
**与 FactoryTalk Optix 项目对话**。ftx-mcp 将 AI 工具(桌面版、协作版、代码版或任何 MCP 客户端)连接到您 Windows 机器上的 FactoryTalk Optix Studio,这样您可以通过描述所需内容来构建和更改 HMI 屏幕:
> *"在屏幕 1 上添加一个显示 'Hello Optix' 的标题,并给我看看。"*
>
> *"将该标签的可见性绑定到 Model/PumpRunning。"*
>
> *"看起来不错。启动模拟器并验证它。"*
您的 LLM 直接在您打开的 Studio 项目中进行更改,运行模拟器,并查看渲染的运行时以确认其有效。它是一个开发和测试的伴侣:部署到硬件仍在 Studio 的部署对话框中,由您亲自操作。除了 LLM 调用之外的所有操作都在您的机器上本地运行。无需云服务,无需 API 密钥;您选择的 LLM 提供智能。
[**博客文章**](https://asqi.org/resources/ftx-mcp-v1/)
## 安装(10 分钟)
要求:Windows 11、FactoryTalk Optix Studio 1.7.x 和 MCP 客户端,如 Claude Cowork。另外:**谷歌浏览器**(CDP 验证循环;使用 `setup.ps1 -NoCdp` 跳过)和 — 对于 Claude Desktop **Microsoft Store 构建**连接器路径 — **Node.js**(`winget install OpenJS.NodeJS.LTS`;配置使用 `npx mcp-remote`)。
在**常规 PowerShell 窗口**中运行 `setup.ps1` — 而不是托管在诸如 Store 构建的 Claude Desktop 之类的打包应用内的 shell,其 `%LOCALAPPDATA%` 写入是虚拟化的(安装现在检测到这一点并拒绝)。如果您下载了 ZIP 而不是克隆,请先运行 `Get-ChildItem -Recurse | Unblock-File`。
```powershell
git clone https://github.com/asqi-carter/ftx-mcp.git
cd ftx-mcp
.\bootstrap\setup.ps1 # 安装并启动服务
.\bootstrap\services.ps1 start # 启动 mcp
.\bootstrap\services.ps1 status # 验证健康状态
http://127.0.0.1:8765/ui # 健康仪表盘
```
## 启动 Studio Bridge(5 分钟)
1. **一次性桥接设置**(每个项目):在 Studio 项目树中,右键单击 **NetLogic** → 添加一个新的名为 `StudioMCPBridge` 的 **DesignTime NetLogic**,双击它以打开 C# 编辑器,并粘贴 [`studio-bridge/StudioMCPBridge.cs`](studio-bridge/StudioMCPBridge.cs)(确保在代码编辑器中重建或在 Studio 中保存以触发重建)
2. **设置项目** 每个 Studio 会话一次:右键单击 **StudioMCPBridge** → **SetupProject** → 这只是在 localhost:8081 上添加了一个用于验证访问的 WebUI
3. **启动桥接** 每个 Studio 会话一次:右键单击 **StudioMCPBridge** → **StartBridge** → 接受 Studio 的一次性安全提示。
4. **验证桥接健康状态**:Studio 输出将显示 `listening on http://127.0.0.1:8768`(桥接)。服务仪表盘在 http://127.0.0.1:8765/ui 上也会显示桥接状态。
## 协作(5 分钟)
要求:MCP 服务器和桥接正在运行。Claude 桌面应用程序已下载。
```powershell
cd ftx-mcp # 安装并启动服务
.\bootstrap\setup-mcp-client.ps1 -WriteConfig # 作为桌面应用程序的连接器
```
重启 Claude Desktop(您可能需要任务管理器中的任务才能完全重启),然后要求 Claude **"运行 optix_doctor"** — 它会报告缺少的项目,并为每个项目提供纯英文的修复方法。在设置 > 连接器中,您可以调整每个工具的权限
## Claude 代码(5 分钟)
要求:MCP 服务器健康且 claude 可以在 cli 中访问
```powershell
claude mcp add --transport http ftx-mcp http://127.0.0.1:8766/mcp
```
然后在 Claude Code 中,运行 `/mcp` 并确认 `ftx-mcp` 显示为已连接。
## Visual Studio 代码(5 分钟)
创建或打开 `.vscode/mcp.json` 并添加:
```json
{
"servers": {
"ftx-mcp": {
"type": "http",
"url": "http://127.0.0.1:8766/mcp"
}
}
}
```
## 您的第一个更改
1. 请求更改,例如 *"使用 ftx mcp,在 MainWindow 上添加一个启动和停止按钮,切换 Model/MotorRun,并使用文本为 'MOTOR RUNNING' 的标签验证它是否有效。"*
2. 观察其工作:作者 → 模拟器预览 → 截图 → 当它看起来正确时,您像往常一样将其部署到硬件上。
## 功能
- **作者** 小部件、属性、绑定、计算表达式、事件、翻译和多屏幕导航 — 在打开的 Studio 项目中实时进行。
- **运行** Studio 内置的模拟器,通过 F5 键并读取运行时日志。
- **验证** 通过查看 webui:截图、点击按钮和选项卡、在字段中输入。
- **交还给您进行部署** 当预览看起来正确时,您像往常一样从 Studio 部署。
完整的工具列表(48 种工具,以及通过纯 HTTP 为脚本和 CI 提供的相同接口)位于 [docs/tool-reference.md](docs/tool-reference.md)。捆绑的**创作剧本**(导航、绑定控件、样式、表达式)与服务器本身一起提供 — Claude 通过 `optix_list_skills` / `optix_get_skill` 发现它们,因此每个连接的客户端都可以在无需设置的情况下获得它们。(在 Claude Code 中,它们也作为 [技能](skills/) 原生加载。)
## 安全性和安全态势
- **仅限本地**。服务绑定到 `127.0.0.1` 并与机器以外的任何内容都不通信。可选的承载令牌身份验证,在任何 LAN 绑定之前强制执行。
- **默认只读**。每个工具都带有 MCP `readOnlyHint` / `destructiveHint` 注释(通过测试固定),因此您的 MCP 主机可以自动批准读取并控制写入。
- **写入门控,而不是希望**。未声明的属性、数组写入、重复名称和不安全的重新父节点都会被拒绝,并带有类型错误;复合操作在失败时会回滚。在 Studio 拥有项目时,会拒绝文件级编辑。
- **审计**。每个模型突变都会追加一个 JSON 行到本地审计轨迹(`%LOCALAPPDATA%\ftx-mcp\logs\audit.jsonl`),记录内容、何时、结果。
- **部署保留在您的控制中**。预览永远不会触及您的运行时;部署到硬件从 Studio 完成。这次分发仅进行设计时编辑和通过模拟器的测试。
完整的姿态,包括提示注入表面分析,位于 [SECURITY.md](SECURITY.md)。
## 文档
| | |
|---|---|
| [运行手册](docs/runbook.md) | 第一次会话,逐步 |
| [工具参考](docs/tool-reference.md) | 每个 MCP 工具 + HTTP API |
| [架构](docs/architecture.md) | 各个部分如何组合 |
| [故障排除](docs/troubleshooting.md) | 按症状索引的修复 |
| [安全](docs/security.md) | 身份验证、端口、通信对象 |
## 兼容性
在 Windows 11、Python 3.12 上测试了 FactoryTalk Optix Studio 1.7.x。Optix CLI 行为在不同主版本之间不稳定 — 在生产中固定您的 Studio 版本。
## 许可证
[MIT](LICENSE) · 2026 ASQI · 不属于罗克威尔自动化公司或其认可。FactoryTalk Optix 是罗克威尔自动化公司的商标;该项目协调本地安装的 Optix 二进制文件,而不重新分发它们。参见 [NOTICE](NOTICE)。