0
0
Fork 0
Codesys-MCP-SP21-plus/package.json
Karstein Phobic Nyvold Kvistad 19fbaef9f4 feat(device-mgmt): add_device_user + grant_object_access tools
Two new MCP tools to drive previously IDE-only workflows:

- add_device_user: add (or update password of) a user in the PLC
  runtime's live User Management via
  ScriptOnlineDevice.create_live_user_management() + add_user(). Required
  for OPC UA authentication on CODESYS Control SP16+, where the OPC UA
  server reads its UserIdentityToken policies from the runtime UserMgr.
  Handles add-vs-update by calling live_um.upload() to sync local cache,
  and falls back to set_user_password if add_user reports "already
  existing" (the upload() race).

- grant_object_access: set Access Control permissions on a project
  object for a user group. Maps to the IDE's Properties -> Access
  Control matrix. Wraps ScriptUserManagement.get_object_permission() +
  ScriptObjectPermission.set_permission_state(). Common use case: grant
  Everyone View+Modify on the Symbol Configuration so the downloaded
  OPC UA server can advertise UserIdentityTokens for clients.

Both tools follow the existing pattern: JSON markers in the script,
extractMarkerJson() to surface the output, ensure_project_open helper.

Also bumps grant_object_access timeout to 120s after observing that
first-touch project ACL operations can be slow.
2026-05-11 20:34:21 +02:00

62 lines
2.1 KiB
JSON

{
"name": "codesys-mcp-sp21-plus",
"version": "0.9.10",
"description": "Codesys-MCP-SP21+ -- fork of luke-harriman/Codesys-MCP carrying CODESYS V3.5 SP22 Patch 1 fixes (and forward-compat with later SPs): script-engine API drift, online/runtime tool auto-login, dual-SHA release classifier, set_pou_code omitted-decl wipe fix, add_library managed-overload, etc. MCP server for CODESYS with persistent UI instance and file-based IPC.",
"main": "dist/server.js",
"bin": {
"codesys-mcp-sp21-plus": "dist/bin.js",
"phobiCS-tui": "dist/tui/index.js"
},
"files": [
"dist/",
"README.md",
"LICENSE"
],
"scripts": {
"build": "tsc && tsc -p tsconfig.tui.json && node -e \"require('fs').cpSync('src/scripts','dist/scripts',{recursive:true})\" && node -e \"const fs=require('fs');fs.writeFileSync('dist/tui/package.json','{\\\"type\\\":\\\"module\\\"}');const p='dist/tui/index.js';fs.writeFileSync(p,'#!/usr/bin/env node\\n'+fs.readFileSync(p,'utf8'));\"",
"build:tui": "tsc -p tsconfig.tui.json",
"test": "vitest --run",
"test:watch": "vitest",
"typecheck": "tsc --noEmit && tsc -p tsconfig.tui.json --noEmit",
"prepublishOnly": "npm run build && npm test"
},
"keywords": [
"codesys",
"mcp",
"plc",
"automation",
"persistent",
"ui"
],
"author": "luke-harriman (upstream); phobicdotno (SP21+ fork)",
"repository": {
"type": "git",
"url": "https://github.com/phobicdotno/Codesys-MCP-SP21-plus.git"
},
"homepage": "https://github.com/phobicdotno/Codesys-MCP-SP21-plus#readme",
"license": "MIT",
"engines": {
"node": ">=18"
},
"dependencies": {
"@modelcontextprotocol/sdk": "^1.26.0",
"commander": "^11.1.0",
"diff": "^5.2.2",
"ink": "^5.2.1",
"react": "^18.3.1",
"ssh2": "^1.17.0",
"uuid": "^9.0.0",
"zod": "^3.24.3"
},
"devDependencies": {
"@types/diff": "^5.2.3",
"@types/node": "^20.14.1",
"@types/react": "^18.3.28",
"@types/ssh2": "^1.15.5",
"@types/uuid": "^9.0.0",
"ink-testing-library": "^4.0.0",
"tsx": "^4.21.0",
"typescript": "^5.5.3",
"vitest": "^1.6.0"
}
}