Skip to content

MCP Server

The Model Context Protocol (MCP) server exposes Adsify’s PLC capabilities to AI assistants. Instead of manually constructing API calls, users can interact with PLCs through natural language — asking an AI assistant to read variables, browse symbols, or check EtherCAT health.

Endpoint

/mcp

Transport: Streamable HTTP with SSE fallback.

Feature Flag

The MCP server is disabled by default. Enable it in configuration:

{
  "Features": {
    "Mcp": { "Enabled": true }
  }
}

Authentication

The MCP endpoint uses the same authentication as the REST API:

  • Production: JWT Bearer token required. The /mcp endpoint enforces the ReadAccess policy. The write_variable tool enforces WriteAccess internally.
  • Development: When no Authority is configured, authentication is bypassed.

Tools

ToolDescriptionAuth
list_plcsList all configured PLCs with connection statusReadAccess
get_plc_statusGet connection state and device info for a PLCReadAccess
read_variableRead a PLC variable by symbol pathReadAccess
read_variablesBatch read multiple variablesReadAccess
write_variableWrite a value to a PLC variableWriteAccess
browse_symbolsList/search symbols at a path or by patternReadAccess
get_symbol_infoGet detailed type info for a symbolReadAccess
get_device_infoGet PLC device name, version, stateReadAccess
get_ethercat_healthGet EtherCAT master state and slave summaryReadAccess
get_ethercat_slaveGet detailed info for a specific EtherCAT slaveReadAccess

Resources

Resource URIDescription
adsify://plcsList of all PLCs with status
adsify://plcs/{plcId}/stateCurrent PLC device state
adsify://plcs/{plcId}/symbolsRoot-level symbol tree
adsify://plcs/{plcId}/ethercat/healthEtherCAT diagnostics summary

Client Configuration

Claude Code

claude mcp add --transport http --scope user adsify http://localhost:5000/mcp

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "adsify": {
      "type": "http",
      "url": "http://localhost:5000/mcp",
      "headers": {
        "Authorization": "Bearer <jwt-token>"
      }
    }
  }
}

VS Code (GitHub Copilot)

Add to .vscode/mcp.json:

{
  "servers": {
    "adsify": {
      "type": "http",
      "url": "http://localhost:5000/mcp",
      "headers": {
        "Authorization": "Bearer <jwt-token>"
      }
    }
  }
}
In development mode (no Authority configured), no Authorization header is needed.

Example Prompts

Once connected, try asking your AI assistant:

  • “Is the PLC running? What’s the current state?”
  • “Read all motor parameters and tell me if anything looks abnormal”
  • “What symbols are available under GVL?”
  • “Show me the EtherCAT slave health – are any in error state?”