Skip to main content
Glama
badfrog18

ips-automation-mcp

by badfrog18

IPS Automation MCP Server

Ein Model Context Protocol (MCP) Server, der Claude (oder andere MCP-Clients) direkten Zugriff auf die JSON-RPC API von IP-Symcon gibt. Damit kann Claude deine PHP-Skripte lesen, analysieren, optimieren, neu erstellen und ausführen – die Automatisierungs-Entwicklung wird dadurch zum Dialog.

⚠️ Dieser Server greift direkt über die native JSON-RPC API (Port 3777) auf IP-Symcon zu. Es muss kein zusätzliches PHP-Modul in IP-Symcon installiert werden – nur der Fernzugriff muss aktiviert sein.


Was kann der Server?

Claude bekommt 13 Tools, mit denen es eigenständig in deinem IPS-System arbeiten kann:

Skript-Tools (Kernfunktion)

Tool

Beschreibung

script_list

Alle Skripte auflisten (Name, ID, Status, letzter Lauf), optional mit Suchfilter

script_read

PHP-Quellcode eines Skripts lesen + Metadaten

script_write

Code überschreiben (mit Typ-Prüfung als Sicherheitsnetz)

script_create

Neues Skript anlegen + Code setzen (mit Rollback bei Fehler)

script_execute

Skript ausführen + Ergebnis/Laufzeit zurückgeben

script_delete

Skript löschen

php_eval

PHP-Code direkt testen (über temporäres Skript, wird automatisch aufgeräumt)

cleanup_eval_scripts

Verwaiste Temp-Skripte aufräumen (mit Vorschau-Modus)

Kontext-Tools

Tool

Beschreibung

object_search

Objekte/Variablen nach Name suchen → liefert IDs für neue Skripte

variable_read

Variable lesen (Wert + Metadaten)

variable_set

Variable setzen / Aktion auslösen (RequestAction oder SetValue)

object_children

Objektbaum navigieren

System-Tools

Tool

Beschreibung

system_info

IPS Version + Laufzeit

system_log

Fehlerlog lesen – ideal zur Diagnose nach einem Skript-Fehler


Related MCP server: Homey MCP Server

Architektur

┌─────────────────┐   stdio    ┌──────────────────┐   JSON-RPC    ┌──────────────┐
│  Claude Desktop │ ─────────► │  MCP Server      │ ────────────► │  IP-Symcon   │
│  (dein PC)      │            │  (Node.js)       │   Port 3777   │              │
└─────────────────┘            └──────────────────┘               └──────────────┘

Der MCP-Server läuft auf demselben PC wie Claude Desktop und verbindet sich übers Netzwerk mit IP-Symcon. Geschrieben in TypeScript mit dem offiziellen @modelcontextprotocol/sdk.


Voraussetzungen

  • Node.js 18+ (nodejs.org, LTS-Version)

  • IP-Symcon mit aktiviertem Fernzugriff

  • Claude Desktop (oder ein anderer MCP-Client)


Installation

1. Fernzugriff in IP-Symcon aktivieren

Die JSON-RPC API ist durch den Fernzugriff abgesichert.

  1. IP-Symcon Verwaltungskonsole öffnen

  2. Einstellungen → Fernzugriff

  3. Ein Passwort vergeben und speichern

Notiere dir drei Werte:

  • Host/IP deines IP-Symcon Servers (z.B. 192.168.1.100)

  • Benutzer = deine Lizenz-E-Mail-Adresse (nicht der Account-Name!)

  • Passwort = das eben gesetzte Fernzugriff-Passwort

2. Repository klonen & bauen

git clone https://github.com/badfrog18/ips-automation-mcp.git
cd ips-automation-mcp
npm install
npm run build

Windows / PowerShell: Falls npm install mit einem Fehler "die Ausführung von Skripts ist deaktiviert" abbricht, nutze stattdessen npm.cmd install und npm.cmd run build – oder gib einmalig die Execution Policy frei: Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

3. Verbindung testen (empfohlen)

Bevor du Claude konfigurierst, prüfe ob die Verbindung steht:

Windows (CMD):

set IPS_HOST=192.168.1.100 && set IPS_USER=deine@email.de && set IPS_PASS=deinPasswort && node test-connection.mjs

Windows (PowerShell):

$env:IPS_HOST="192.168.1.100"; $env:IPS_USER="deine@email.de"; $env:IPS_PASS="deinPasswort"; node test-connection.mjs

macOS/Linux:

IPS_HOST=192.168.1.100 IPS_USER=deine@email.de IPS_PASS=deinPasswort node test-connection.mjs

Bei Erfolg zeigt das Skript deine IP-Symcon-Version und die Anzahl deiner Skripte/Objekte.

4. Claude Desktop konfigurieren

Öffne in Claude Desktop: Einstellungen → Entwickler → Konfiguration bearbeiten. Das öffnet (bzw. erstellt) die Datei claude_desktop_config.json.

Füge den mcpServers-Block hinzu (Pfad und Zugangsdaten anpassen):

{
  "mcpServers": {
    "ips-automation": {
      "command": "node",
      "args": ["C:/Tools/ips-automation-mcp/dist/server.js"],
      "env": {
        "IPS_HOST": "192.168.1.100",
        "IPS_PORT": "3777",
        "IPS_USER": "deine@email.de",
        "IPS_PASS": "deinPasswort"
      }
    }
  }
}

Windows-Pfade: Im JSON entweder Schrägstriche / oder doppelte Backslashes \\ verwenden – einfache Backslashes brechen die Datei.

Bestehende Config: Falls schon andere MCP-Server eingetragen sind, füge nur den "ips-automation"-Block innerhalb von "mcpServers" hinzu, statt die Datei zu ersetzen.

5. Claude Desktop neu starten

Komplett beenden (Windows: Rechtsklick aufs Tray-Icon → Beenden) und neu öffnen. Ein einfaches Schließen des Fensters reicht nicht.

6. Testen

Frag Claude:

„Zeige mir alle meine IP-Symcon Skripte"

Claude ruft dann script_list auf und listet deine Skripte.


Umgebungsvariablen

Variable

Standard

Beschreibung

IPS_HOST

127.0.0.1

IP-Symcon Hostname/IP

IPS_PORT

3777

JSON-RPC Port

IPS_USER

Lizenz-E-Mail (Pflicht)

IPS_PASS

Fernzugriff-Passwort (Pflicht)

IPS_HTTPS

false

HTTPS statt HTTP

IPS_TIMEOUT

30000

Timeout pro Anfrage in ms – auf langsamen/großen Systemen (Raspi, große DB) höher setzen


Beispiel-Workflows

"Zeig alle Skripte mit 'Pool' im Namen"
 → script_list (gefiltert)

"Lies das Poolpumpen-Skript und erkläre, was es macht"
 → script_read + Analyse

"Optimiere das Skript und schreib die verbesserte Version zurück"
 → script_read → script_write

"Erstelle eine Automation, die bei PV-Überschuss die Poolpumpe einschaltet"
 → object_search (IDs finden) → script_create → script_execute

"Das Skript wirft einen Fehler – finde und behebe ihn"
 → script_execute → system_log → script_write

Sicherheitshinweis

Der Server hat vollen Lese- und Schreibzugriff (inkl. Löschen und Ausführen) auf deine IPS-Skripte. Die claude_desktop_config.json enthält dein Fernzugriff-Passwort im Klartext – behandle sie entsprechend vertraulich und committe sie niemals in ein öffentliches Repo (sie ist in der .gitignore ausgeschlossen).


Changelog

v2.2.0

  • Performance: object_search, script_list und object_children laufen jetzt vollständig serverseitig in IP-Symcon (ein einziger RPC-Call statt tausender Einzelanfragen). Damit funktionieren sie auch auf großen Systemen (>10.000 Objekte) zuverlässig, ohne Timeout. Behebt „Failed to call tool object_search" / „MCP-Server reagiert nicht".

  • Konfigurierbarer Timeout über IPS_TIMEOUT (Standard jetzt 30s statt 15s) – für langsame Hosts wie Raspberry Pi

  • Interne evalPhp-Hilfsfunktion für zuverlässige serverseitige Ausführung mit echtem JSON-Rückgabewert

v2.1.0

  • Fix: Temporäre php_eval-Skripte werden jetzt zuverlässig gelöscht (inkl. PHP-Datei auf der Platte). Ursache war der fehlende zweite Parameter delete_file bei IPS_DeleteScript.

  • Automatisches Aufräumen verwaister __claude_eval_-Skripte beim Serverstart

  • Neues Tool cleanup_eval_scripts (mit Vorschau-Modus) zum manuellen Aufräumen

  • script_delete nutzt jetzt ebenfalls robustes Löschen + Typprüfung

v2.0.0

  • Erste Veröffentlichung mit 13 Tools für Skript-Automatisierung


Lizenz

MIT – siehe LICENSE.

Haftungsausschluss

Dieses Projekt steht in keiner Verbindung zur Symcon GmbH.

Die Nutzung erfolgt vollständig auf eigene Gefahr und eigene Verantwortung. Der Autor übernimmt keinerlei Haftung für direkte oder indirekte Schäden, Datenverluste, Fehlfunktionen, Ausfälle oder sonstige Folgen, die aus der Installation, Konfiguration oder Nutzung dieser Software entstehen – gleich aus welchem Rechtsgrund.

Zu beachten ist insbesondere, dass Claude eigenständig Skripte ändern, ausführen und löschen kann. Vor dem produktiven Einsatz wird dringend ein vollständiges Backup des IP-Symcon Systems empfohlen. Jeder Nutzer ist selbst dafür verantwortlich, Änderungen vor dem Übernehmen zu prüfen.

Die Software wird „wie besehen" („as is") ohne jegliche Gewährleistung bereitgestellt, wie in der MIT-Lizenz ausgeführt.

Available Tools

13 tools
object_childrenA

Listet alle Kind-Objekte eines IPS-Objekts auf (ID=0 für Root). Zeigt die Baumstruktur.

ParametersJSON Schema
NameRequiredDescriptionDefault
parent_idNo

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It mentions 'shows the tree structure' but does not clarify if the operation is purely read-only, what the return format is, or any potential side effects. This lack of detail is a gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of two short sentences that get straight to the point. Every word adds value, and the most important information (listing children, root ID) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema, no annotations), the description covers the essential information: what it does and what the parameter means. It could mention the return structure explicitly, but 'shows the tree structure' provides adequate context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds meaning by explaining that parent_id is the ID of the parent object and defaults to 0 for root. This compensates well for the schema's lack of documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: listing child objects of an IPS object, with a specific mention of ID=0 for root. It uses a specific verb ('listet auf') and resource ('Kind-Objekte'), and distinguishes from sibling tools like object_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (listing children of a parent object) but does not explicitly guide when to use this tool versus alternatives like object_search. There is no mention of exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

php_evalA

Führt PHP-Code direkt in IP-Symcon aus ohne ein persistentes Skript anzulegen. Ideal zum schnellen Testen von Code-Schnipseln, Variablen-IDs prüfen, etc. Erstellt intern ein Temp-Skript, führt es aus, löscht es wieder.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesPHP-Code der ausgeführt werden soll (ohne <?php Tag)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description fully carries the transparency burden. It discloses the internal behavior: creating a temp script, executing it, and deleting it. This gives the agent a good understanding of the tool's lifecycle.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences cover the purpose, use cases, and internal behavior. Every sentence adds value; no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter, no output schema, and no annotations, the description is complete. It explains the action, the temporary nature, and use cases, leaving no gaps for this complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema coverage is 100%, but the description adds crucial context: the code should be without <?php tag. This prevents a common mistake and adds value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool executes PHP code directly without creating a persistent script, and specifies it's for quick testing like code snippets and variable ID checks. This distinguishes it from sibling tools like script_create or script_execute that handle persistent scripts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description notes it's ideal for quick testing and checking variable IDs, implying usage for ad-hoc tasks rather than persistent scripts. While it doesn't explicitly mention alternatives, the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

script_createA

Erstellt ein neues PHP-Skript in IP-Symcon und setzt sofort den Inhalt. Gibt die neue Skript-ID zurück. Ideal für neue Automationen die Claude komplett erstellt.

ParametersJSON Schema
NameRequiredDescriptionDefault
infoNoOptionale Beschreibung/Info-Text
nameYesName des neuen Skripts (erscheint im IPS-Objektbaum)
contentYesPHP-Quellcode des neuen Skripts
parent_idNoÜbergeordnetes Objekt (0 = Root-Kategorie)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states that the tool creates and immediately sets content, and returns an ID. However, it does not disclose potential side effects (e.g., behavior if name conflicts, or parent_id validity), permissions required, or error handling. The description is adequate but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences: first stating the action and return value, second giving the ideal use case. Every sentence contributes essential information without waste. Ideal for quick parsing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters and no output schema, the description provides the core action and return value. However, it omits details like whether the tool overwrites existing scripts, error conditions (e.g., invalid parent_id), or prerequisites. For a creation tool, this is a reasonable minimum but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 4 parameters have descriptions in the schema (100% coverage). The tool description adds little beyond that—it mentions setting content and returning ID, which relates to 'content' and implicitly the return value. Since schema already documents parameters, the description does not significantly enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool creates a new PHP script and sets its content, returning the new script ID. It differentiates from sibling tools like script_write (which likely updates) by emphasizing 'neues' (new). However, the language is German, which may slightly reduce clarity for an English-focused agent, but it remains unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Ideal für neue Automationen die Claude komplett erstellt.' which suggests use for creating new automations from scratch, but it does not explicitly contrast with alternatives like script_write for editing, nor does it mention prerequisites or when to avoid using this tool. Some guidance is present but incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

script_deleteA

Löscht ein IP-Symcon Skript dauerhaft. Vorsicht: nicht rückgängig machbar!

ParametersJSON Schema
NameRequiredDescriptionDefault
script_idYesObjekt-ID des zu löschenden Skripts

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses the key behavioral trait of irreversibility, though it omits details like error handling or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with one sentence and a warning, no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete operation, the description covers purpose and irreversible nature, but could mention error scenarios or prerequisites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter script_id is fully described in the schema; the description adds no additional meaning beyond 'Objekt-ID'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Löscht' (deletes) and the resource 'IP-Symcon Skript', and distinguishes it from sibling tools like script_create or script_execute.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The warning 'nicht rückgängig machbar' (not reversible) implies caution, but no explicit when-not or alternatives are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

script_executeA

Führt ein IP-Symcon Skript aus und gibt das Ergebnis (Return-Value und Laufzeit) zurück. Claude kann damit eigene Skripte nach dem Schreiben sofort testen.

ParametersJSON Schema
NameRequiredDescriptionDefault
script_idYesObjekt-ID des auszuführenden Skripts
parametersNoOptionale Parameter als Key-Value-Objekt für IPS_RunScriptEx

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must cover behavior. It states return values (return value and runtime) but fails to disclose potential side effects, permissions, or error handling, which is critical for a code execution tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that front-load the purpose and return, followed by a practical usage hint—no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate but misses details on error behavior and side effects. For a tool that executes code and has no output schema, more context is expected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The tool description adds no extra meaning beyond the schema's parameter descriptions; it only restates the purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it executes an IP-Symcon script and returns the result, distinguishing it from siblings like script_create or php_eval by focusing on execution and testing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Mentions 'Claude can use this to immediately test own scripts after writing,' providing a clear use case, but lacks explicit when-not-to-use guidance or comparisons to alternatives like php_eval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

script_listA

Listet alle vorhandenen IP-Symcon Skripte auf (Name, ID, Status, letzter Lauf). Ideal als erster Schritt um zu verstehen welche Automationen bereits existieren.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoOptionaler Suchbegriff für Skriptnamen (leer = alle)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that the tool lists scripts with specific fields (name, ID, status, last run) and is read-only in nature. It could mention if pagination or limits apply, but for a simple list, it is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, with the action verb and resource in the first sentence, and usage context in the second. No wasted words, front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one optional parameter and no output schema, the description fully explains what it does, what it returns, and a recommended use case. It is complete and helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (only one parameter 'search' described). The description adds value by explaining that an empty search returns all scripts, while the schema only provides a generic description. This compensates well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists all IP-Symcon scripts with specific fields (name, ID, status, last run) and suggests it as a first step to understand existing automations, distinguishing it from siblings like script_read or object_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear context for use ('ideal as a first step'), but does not explicitly exclude any scenarios or mention alternatives. For a list tool, this is sufficient but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

script_readA

Liest den PHP-Quellcode eines IP-Symcon Skripts anhand seiner Objekt-ID. Gibt den vollständigen Skriptinhalt zurück, den Claude analysieren und optimieren kann.

ParametersJSON Schema
NameRequiredDescriptionDefault
script_idYesObjekt-ID des Skripts in IP-Symcon

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the full burden. It discloses the read-only nature and return of script content, but lacks details on error behavior, permissions, or side effects. Acceptable for a simple read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the main action. Every word is necessary and no repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with one parameter and no output schema, the description is sufficiently complete: it explains input (object ID) and output (full source code). Minor omission is error handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the parameter is described both in schema ('Objekt-ID') and description ('anhand seiner Objekt-ID'), but the description adds no additional meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'liest' (reads) and the resource 'PHP-Quellcode eines IP-Symcon Skripts', specifying the object ID. It explicitly distinguishes itself from sibling tools like script_write and script_execute by focusing on reading source code.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. It only states what it does, without context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

script_writeA

Schreibt neuen PHP-Code in ein bestehendes IP-Symcon Skript (überschreibt den Inhalt). Verwende dies nach einer Analyse um optimierten oder reparierten Code zu speichern.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesDer neue PHP-Quellcode (vollständig, ersetzt alten Inhalt)
script_idYesObjekt-ID des Skripts

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the destructive behavior ('überschreibt den Inhalt'), but lacks details on permissions, reversibility, or error handling. With no annotations, the burden is on the description, and it only adds minimal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loads the core action, and provides relevant usage advice without any extraneous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple write tool with no output schema, the description covers purpose and usage, but does not mention return values, error conditions, or follow-up actions like verifying with script_read.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are described in the schema (100% coverage), and the tool description adds no additional parameter information beyond what the schema provides, meeting the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('schreibt') and resource ('PHP-Code in ein bestehendes IP-Symcon Skript'), and explicitly states it overwrites content, distinguishing it from siblings like script_create or script_read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear usage context ('nach einer Analyse um optimierten oder reparierten Code zu speichern'), but does not explicitly state when not to use it or mention alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_infoA

Gibt IP-Symcon Systeminformationen zurück (Version, Laufzeit).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that the tool returns system info (version, runtime), implying a read-only, safe operation. However, it does not state side effects (likely none), authentication requirements, or rate limits. The description is minimally transparent but sufficient for a simple read-only tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that conveys the essential purpose without extraneous words. Every word earns its place, making it highly concise and well-structured for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (0 parameters, no output schema, few siblings), the description is adequate but incomplete. It mentions version and runtime but does not specify the return format, data types, or structure. Without an output schema, more detail would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema coverage is trivially 100%. The description does not add parameter information because none exist. Following the baseline for 0 parameters, a score of 4 is appropriate as no additional meaning is needed beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns IP-Symcon system information, specifically version and runtime. It uses a specific verb (gibt zurück) and resource (Systeminformationen), and it distinctively differs from sibling tools such as object_children, script_execute, or variable_read, which operate on other domains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is provided on when to use this tool versus alternatives. The description merely states what it does without mentioning prerequisites, conditions, or when not to use it. Sibling tools suggest different contexts, but no comparative guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_logA

Liest das IP-Symcon Statusprotokoll. Nach einem Skript-Fehler zeigt dies die genaue Fehlermeldung. Claude nutzt das zur Fehlerdiagnose nach script_execute.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
typesNoLog-Typen: 0=Info, 1=OK, 2=Hinweis, 3=Warnung, 4=Fehler, 5=Debug, 6=Custom

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a read-only operation ('liest'), but does not explicitly state it is non-destructive or safe. It adds value by mentioning error message retrieval, which is behavioral context beyond a simple read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two short sentences, each adding value: the first states the primary purpose, the second provides a concrete usage scenario. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose and a key use case (error diagnosis). However, it does not describe the return format, pagination behavior, or that the result is a list of log entries. Given the lack of output schema, slightly more detail would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%, with only the 'types' parameter having a description in the schema. The tool description does not add any parameter-specific meaning beyond what is already in the schema. Baseline 3 is appropriate since coverage is not low.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads the IP-Symcon status log, specifies the verb 'liest' (reads) and the resource 'Statusprotokoll', and distinguishes from sibling tools like script_execute by focusing on log reading.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states the tool is used after script errors for error diagnosis, providing a clear use case. It does not list alternatives or when-not-to-use, but the context is sufficiently clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

variable_readB

Liest den aktuellen Wert einer IP-Symcon Variable (formatiert und roh).

ParametersJSON Schema
NameRequiredDescriptionDefault
variable_idYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description must disclose all behavioral traits. It states the tool reads the current value and returns both formatted and raw forms, which is transparent for a read operation. However, it does not mention error conditions or type restrictions, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that immediately states the action and result. It is concise and front-loaded, with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with one parameter and no output schema, the description is adequate but not fully complete. It does not specify the return format (e.g., JSON object with 'formatted' and 'raw' keys) or how to interpret the variable_id.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter variable_id is not explained in the description beyond its role in identifying the variable. With 0% schema description coverage, the description should compensate, but it adds minimal semantic value beyond the schema's type and constraint.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (liest/reads) and resource (IP-Symcon variable), and specifies that both formatted and raw values are returned. This distinguishes it from sibling tools like variable_set (write) or object_children (list children).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., variable_set for writing, object_children for listing). The description only states what it does without providing context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

variable_setB

Setzt eine IP-Symcon Variable oder löst eine Aktion aus (für Aktoren: RequestAction bevorzugt).

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
use_actionNotrue = RequestAction (für Aktoren), false = SetValue (direkt)
variable_idYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the dual behavior (set vs. action) and the use_action parameter, but lacks details on side effects, error conditions, permissions, or what happens on failure. The behavioral disclosure is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently conveys the core purpose and a key usage nuance. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description should provide more completeness. It omits details on success/error returns, prerequisites, type constraints on value, and the operational difference between SetValue and RequestAction. The tool is not fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 33% (only use_action has a description). The description adds meaning for variable_id (the variable to set) and hints at use_action preference, but value is not described. It does not fully compensate for the low coverage, leaving ambiguity about parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool sets an IP-Symcon variable or triggers an action, distinguishing between two use cases (variable setting and actuator action). It uses specific verb 'setzt' and resource 'Variable', and differentiates from siblings like variable_read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives partial guidance: it mentions that for actuators, RequestAction is preferred, implying when to use the action mode. However, it does not explicitly state when to use this tool versus alternatives like script_execute or variable_read, nor does it provide when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 13 tool updatesv2.0.0
    • First observedobject_children
    • First observedobject_search
    • First observedphp_eval
    • First observedscript_create
    • First observedscript_delete
    • First observedscript_execute
    • First observedscript_list
    • First observedscript_read
    • First observedscript_write
    • First observedsystem_info
    • First observedsystem_log
    • First observedvariable_read
    • First observedvariable_set

TDQS

A4/5.0

Scored across 13 tools

Disambiguation5/5

All tools have clearly distinct purposes: object management (children/search), script lifecycle (create/delete/execute/list/read/write), variable read/set, system info/log, and a PHP eval tool. No two tools overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent noun_verb pattern (e.g., script_create, variable_read) with lowercase and underscores. Even php_eval follows this pattern with 'php' as the noun and 'eval' as the verb.

Tool Count5/5

With 13 tools, the set is well-scoped for an automation scripting server. It covers object navigation, complete script CRUD and execution, variable operations, and system diagnostics without being overwhelming.

Completeness4/5

The tool surface covers the full script lifecycle and essential variable operations, plus object search and system info. Minor gaps like object creation or renaming scripts are absent, but these are not critical for the automation focus.

Maintenance

ActivityStale
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Connects AI assistants like Claude to PHP's XDebug debugger for runtime inspection, breakpoint control, and variable tracking, enabling natural language debugging of PHP applications.
    6
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables Claude/agents to read, control, and develop IP-Symcon home automation systems via JSON-RPC, including object tree navigation, variable reading, device switching, and PHP script management.
    MIT