Skip to main content
Glama
winccoa-tools-pack

WinCC OA MCP Server

# WinCC OA MCP Server

A Model Context Protocol (MCP) server that exposes WinCC OA operations as LLM-callable tools. It runs inside a WinCC OA Node.js Manager and uses the native winccoa-manager add-on to interact with the WinCC OA runtime.

Features

  • Datapoints — read/write values, create/delete/copy DPs, name discovery, SQL-like queries, timed/period writes

  • DP types — list, inspect, create, change, delete types; name validation

  • Archive — historical value queries and archive configuration

  • Alarms — binary/non-binary alarm config and alarm log queries

  • Common metadata — alias, description, unit, format

  • PV range — engineering min/max limits for numeric DPEs

  • Manager / PMON — list, status, start/stop/restart/kill, add/remove, properties, system info

  • OPC UA — connection CRUD, address mapping, namespace browse

  • ASCII — DPL export/import via WCCOAascii

  • CTRL scripts — execute inline or file-based CTRL with log capture

  • Address / distrib / smooth / dp_fct — peripheral and config management

Full parameter reference: docs/TOOLS.md (57 tools across 14 categories).

Tool overview

Category

Tools

datapoints

dp_get, dp_set, dp_create, dp_delete, dp_copy, dp_names, dp_exists, dp_query, dp_set_timed, dp_set_period

dp_types

dp_types, dp_type_get, dp_type_create, dp_type_change, dp_type_delete, dp_type_name, name_check

archive

archive_get, archive_config_get, archive_config_set, archive_config_delete

alarms

alarm_config_get, alarm_config_set, alarm_config_delete, alarm_log_get

common

common_get, common_set, common_delete

pv_range

pv_range_get, pv_range_set, pv_range_delete

manager

manager_list, manager_status, manager_start, manager_stop, manager_restart, manager_kill, manager_add, manager_remove, manager_properties_get, manager_properties_set, project_name, system_info

opcua

opcua_connection_list, opcua_connection_add, opcua_connection_delete, opcua_address_set, opcua_browse

ascii

ascii_export, ascii_import

script

script_execute

address

address_config_set, address_config_delete

distrib

distrib_config_set, distrib_config_delete

smooth

smooth_config_set, smooth_config_delete

dp_fct

dp_fct_config_set, dp_fct_config_delete

Registered tool names use the form category.tool_name (e.g. datapoints.dp_get).

Related MCP server: RL-MCP

Prerequisites

  • WinCC OA 3.20 (or compatible) with the Node.js Manager enabled

  • Node.js 18+ (bundled with WinCC OA or system-installed)

  • The winccoa-manager native add-on (provided by the WinCC OA runtime – not on npm)

Installation

cd winccoa-mcp-server
npm install
npm run build

This bundles TypeScript sources from src/ into dist/index.js and copies .env.example to dist/.

Configuration

Since the WinCC OA Node.js Manager does not support command-line arguments, all configuration is done through a .env file placed next to the built entry point (or in the working directory).

Copy .env.example as a starting point. Minimal example:

# Transport mode: "stdio" or "http"
MCP_TRANSPORT=stdio

# Port for the HTTP transport (only used when MCP_TRANSPORT=http)
# Default 47899 avoids conflicts with common Node.js apps on port 3000
MCP_HTTP_PORT=47899

# Maximum response size in characters to prevent overwhelming the LLM context
MCP_CHARACTER_LIMIT=25000

Variable

Description

Default

MCP_TRANSPORT

"stdio" or "http"

stdio

MCP_HTTP_PORT

Port for HTTP transport

47899

MCP_CHARACTER_LIMIT

Max response length (chars)

25000

MCP_AUTH_TYPE

HTTP auth: bearer, apikey, or none

bearer

MCP_API_TOKEN

Token required when auth is enabled

—

TOOLS

Comma-separated categories/tool short names; unset = all

(all)

Full reference (CORS, SSL, rate limits, IP filter, field profiles): docs/CONFIGURATION.md.

Usage

stdio transport (default)

The server communicates over stdin / stdout. Use this when the MCP client (e.g. Claude Desktop, VS Code) starts the process directly or when testing with MCP Inspector.

node dist/index.js

HTTP transport

Set MCP_TRANSPORT=http in your .env file, then start the server. It will listen on the port specified by MCP_HTTP_PORT (default 47899).

node dist/index.js

Endpoints:

  • POST /mcp — MCP protocol (auth required when enabled)

  • GET /health — health check (no auth)

Integration with WinCC OA

This server is designed to be run as customer code inside a WinCC OA Node.js Manager. The typical setup:

  1. Place the built dist/ folder (or the whole project) in your WinCC OA project's scripts directory.

  2. Configure a Node.js Manager in the WinCC OA console with this server as the entry script.

  3. The WinCC OA bootstrap will load the native winccoa-manager add-on, then execute dist/index.js.

MCP client configuration

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "winccoa": {
      "command": "node",
      "args": ["C:/path/to/winccoa-mcp-server/dist/index.js"]
    }
  }
}

VS Code (.vscode/mcp.json)

{
  "servers": {
    "winccoa": {
      "type": "stdio",
      "command": "node",
      "args": ["C:/path/to/winccoa-mcp-server/dist/index.js"]
    }
  }
}

For HTTP transport, point the client to http://localhost:47899/mcp (or your configured port) and supply the bearer/API token as configured.

Development

# Typecheck
npm run typecheck

# Unit tests
npm test

# Build bundle
npm run build

# Test with MCP Inspector
npm run inspect

To switch transports during development, edit the .env file.

Project structure

src/
├── index.ts                 # Entry point – transport setup
├── server.ts                # McpServer creation + resources
├── constants.ts             # Shared constants (port, tool filter, limits)
├── winccoa-client.ts        # WinccoaManager singleton
├── config/
│   └── server-config.ts     # HTTP security config from env
├── pmon/                    # PMON TCP client for manager tools
├── types/
│   └── winccoa-manager.d.ts # Type declarations for native add-on
├── tools/
│   ├── register-all.ts      # Tool registration orchestrator
│   ├── datapoints/          # DP read/write/create/query tools
│   ├── dp-types/            # DP type management tools
│   ├── archive/             # Historical data + archive config
│   ├── alarms/              # Alarm config + log
│   ├── common/              # Alias/description/unit/format
│   ├── pv-range/            # Engineering range
│   ├── manager/             # PMON manager lifecycle + system info
│   ├── opcua/               # OPC UA connections, address, browse
│   ├── ascii/               # ASCII export/import
│   ├── script/              # CTRL script execution
│   ├── address/             # Peripheral address config
│   ├── distrib/             # Distribution config
│   ├── smooth/              # Smoothing config
│   └── dp-fct/              # Datapoint function config
├── resources/
│   ├── systemprompt.md      # LLM system instructions
│   ├── conventions.md       # Naming conventions resource
│   └── fields/              # Industry field guidelines
└── utils/                   # Error handling, formatters, helpers

See docs/ARCHITECTURE.md for request flow and middleware details.

Adding new tools

  1. Create src/tools/<category>/your-tool.ts following the existing pattern (Zod schema + registerTool()).

  2. Register the tool with a canonical name category.tool_name (dot separator).

  3. Import and call your registration function in src/tools/register-all.ts.

  4. Add the name to the correct category list in the CATEGORIES map.

  5. Add unit tests next to the tool file and a section in docs/TOOLS.md.

  6. Rebuild with npm run build.

Documentation

Doc

Content

docs/TOOLS.md

Full tool parameter/return reference

docs/CONFIGURATION.md

Environment variable reference

docs/ARCHITECTURE.md

Runtime architecture and structure

CLAUDE.md

Contributor guide for AI agents

License

MIT

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that provides AI models with structured access to external data and services, acting as a bridge between AI assistants and applications, databases, and APIs in a standardized, secure way.
    2
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that bridges AI assistants with WinCC OA projects, enabling natural language queries for datapoint search, manager management, and CTL script execution.
    2
    MIT