项目简介
CODESYS MCP 工具集是一个基于 Model Context Protocol (MCP) 构建的服务器应用,旨在连接 CODESYS V3 自动化编程环境 与支持 MCP 协议的 大型语言模型 (LLM) 客户端(如 Claude Desktop)。它允许 LLM 客户端通过标准化的方式,访问 CODESYS 项目信息(资源)并执行自动化任务(工具),例如打开/创建/保存项目、创建POU(程序组织单元,如程序、功能块、函数)、编辑代码、编译项目等。
主要功能
- 项目管理: 打开现有 CODESYS 项目、从标准模板创建新项目、保存项目修改。
- POU管理: 创建不同类型的 POU(程序、功能块、函数)、设置 POU 的变量声明和实现代码、创建功能块的属性和方法。
- 代码编辑: 精确设置指定 POU、方法或属性访问器的代码内容。
- 项目编译: 调用 CODESYS 脚本引擎编译当前打开项目的应用程序。
- 状态监控: 读取 CODESYS Scripting Engine 的当前状态和打开的项目信息。
安装步骤
- 安装 Node.js: 确保您的系统已安装 Node.js (推荐 18.0.0 或更高版本)。您可以从 Node.js 官方网站 下载安装包。
- 安装 CODESYS: 确保您的系统已安装 CODESYS V3 (已测试 3.5 SP21),并且在安装过程中勾选了 Scripting Engine 组件。
- 全局安装 MCP 工具集: 打开命令行终端,运行以下命令:
这会将 'codesys-mcp-tool' 命令安装到您的系统 PATH 中,方便 MCP 客户端直接调用。npm install -g @codesys/mcp-toolkit
服务器配置(在 MCP 客户端中进行)
MCP 服务器不是独立运行的桌面应用,它由您的 MCP 客户端应用程序(如 Claude Desktop)根据需要启动和管理。您需要在 MCP 客户端的设置中配置如何启动这个服务器。
通常,MCP 客户端的配置文件(例如 Claude Desktop 的 'settings.json')会有一个 'mcpServers' 部分,您需要添加或修改一个条目来指向 'codesys-mcp-tool' 命令,并提供 CODESYS 安装路径和 Profile 名称。
以下是一个示例配置结构(具体文件位置和格式请参考您的 MCP 客户端文档):
{ "mcpServers": { // ... 其他MCP服务器配置 ... "codesys_local": { // 给这个服务器起一个自定义的名字 "command": "codesys-mcp-tool", // 启动服务器的命令名 "args": [ "--codesys-path", "C:\\Program Files\\CODESYS 3.5.21.0\\CODESYS\\Common\\CODESYS.exe", // <-- 替换为您的CODESYS.exe的实际完整路径 "--codesys-profile", "CODESYS V3.5 SP21" // <-- 替换为您的CODESYS Profile的实际名称 // 提示: // 1. CODESYS.exe 路径通常在安装目录的 Common 文件夹下。 // 2. CODESYS Profile 名称可以在打开CODESYS时看到,或在CODESYS选项中查找。 // 3. 确保路径使用双反斜杠 '\\' 或单正斜杠 '/'。 // 4. 如果您使用相对路径打开项目,可以添加一个工作空间目录参数(可选): // "--workspace", "C:\\Users\\YourName\\CODESYS Projects" ], "enabled": true // 确保此服务器是启用状态 } // ... 其他MCP服务器配置 ... } }
配置完成后,请重启您的 MCP 客户端应用程序 以使设置生效。
基本使用方法
一旦在 MCP 客户端中正确配置并连接了 CODESYS MCP 工具集,您就可以通过与 LLM 助手对话来控制 CODESYS。LLM 助手能够感知到这个 MCP 服务器提供的工具和资源,并根据您的指示调用它们。
例如,您可以尝试向您的 LLM 助手发出指令:
- “打开我的 CODESYS 项目文件 'C:\Projects\MyRobotControl.project'。” (LLM 可能会调用 'open_project' 工具)
- “在当前项目中,应用程序下创建一个名为 'MotorController' 的功能块 (FunctionBlock),语言使用结构化文本 (ST)。” (LLM 可能会调用 'create_pou' 工具)
- “为 'MotorController' 功能块添加一个名为 'SpeedSetpoint' 的整数 (INT) 属性。” (LLM 可能会调用 'create_property' 工具)
- “在 'MotorController' 的 'Start' 方法中写入启动逻辑代码。” (LLM 可能会调用 'set_pou_code' 工具,指定正确的 POU 路径和 implementationCode)
- “编译当前打开的 CODESYS 项目。” (LLM 可能会调用 'compile_project' 工具)
- “告诉我当前 CODESYS 项目的状态。” (LLM 可能会读取 'codesys://project/status' 资源)
根据 LLM 助手的实现,您可以通过自然语言与它交互,它会将您的意图转化为对 MCP 工具和资源的调用,并将执行结果反馈给您。
信息
分类
开发者工具