ips-automation-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ips-automation-mcpList all my scripts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| Alle Skripte auflisten (Name, ID, Status, letzter Lauf), optional mit Suchfilter |
| PHP-Quellcode eines Skripts lesen + Metadaten |
| Code überschreiben (mit Typ-Prüfung als Sicherheitsnetz) |
| Neues Skript anlegen + Code setzen (mit Rollback bei Fehler) |
| Skript ausführen + Ergebnis/Laufzeit zurückgeben |
| Skript löschen |
| PHP-Code direkt testen (über temporäres Skript, wird automatisch aufgeräumt) |
| Verwaiste Temp-Skripte aufräumen (mit Vorschau-Modus) |
Kontext-Tools
Tool | Beschreibung |
| Objekte/Variablen nach Name suchen → liefert IDs für neue Skripte |
| Variable lesen (Wert + Metadaten) |
| Variable setzen / Aktion auslösen (RequestAction oder SetValue) |
| Objektbaum navigieren |
System-Tools
Tool | Beschreibung |
| IPS Version + Laufzeit |
| 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.
IP-Symcon Verwaltungskonsole öffnen
Einstellungen → Fernzugriff
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 buildWindows / PowerShell: Falls
npm installmit einem Fehler "die Ausführung von Skripts ist deaktiviert" abbricht, nutze stattdessennpm.cmd installundnpm.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.mjsWindows (PowerShell):
$env:IPS_HOST="192.168.1.100"; $env:IPS_USER="deine@email.de"; $env:IPS_PASS="deinPasswort"; node test-connection.mjsmacOS/Linux:
IPS_HOST=192.168.1.100 IPS_USER=deine@email.de IPS_PASS=deinPasswort node test-connection.mjsBei 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 |
|
| IP-Symcon Hostname/IP |
|
| JSON-RPC Port |
| – | Lizenz-E-Mail (Pflicht) |
| – | Fernzugriff-Passwort (Pflicht) |
|
| HTTPS statt HTTP |
|
| 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_writeSicherheitshinweis
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_listundobject_childrenlaufen 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 PiInterne
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 Parameterdelete_filebeiIPS_DeleteScript.Automatisches Aufräumen verwaister
__claude_eval_-Skripte beim ServerstartNeues Tool
cleanup_eval_scripts(mit Vorschau-Modus) zum manuellen Aufräumenscript_deletenutzt 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 toolsobject_childrenA
Listet alle Kind-Objekte eines IPS-Objekts auf (ID=0 für Root). Zeigt die Baumstruktur.
| Name | Required | Description | Default |
|---|---|---|---|
| parent_id | No |
TDQS
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.
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.
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.
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.
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.
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.
object_searchA
Sucht IP-Symcon Objekte nach Name (Teilmatch). Gibt ID, Typ, aktuellen Wert zurück. Claude braucht das um die richtigen Variablen-IDs für neue Skripte zu finden.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | Max. Ergebnisse | |
| query | Yes | Suchbegriff, z.B. "Pool", "Temperatur", "Licht" | |
| types | No | Objekttypen filtern: 0=Kat, 1=Inst, 2=Var, 3=Skript, 4=Event, 5=Media, 6=Link (leer=alle) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose all behavioral traits. It mentions the tool 'searches' and returns data, implying read-only, but does not confirm safety, rate limits, or side effects. This is insufficient for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences in German, front-loading the action and return values, with no wasted words. It is optimally sized for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no output schema, the description adequately lists the return fields (ID, type, current value). It is nearly complete but lacks details on ordering, pagination, or error handling, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the baseline is 3. The description adds a use case context but no additional parameter details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches IP-Symcon objects by name (partial match) and returns ID, type, and current value. It also explains the use case (finding variable IDs for scripts), making the purpose specific and distinct from sibling tools like object_children.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for finding object IDs but does not explicitly state when to use this tool versus alternatives like object_children. No exclusions or when-not-to-use guidance is provided.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | PHP-Code der ausgeführt werden soll (ohne <?php Tag) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| info | No | Optionale Beschreibung/Info-Text | |
| name | Yes | Name des neuen Skripts (erscheint im IPS-Objektbaum) | |
| content | Yes | PHP-Quellcode des neuen Skripts | |
| parent_id | No | Übergeordnetes Objekt (0 = Root-Kategorie) |
TDQS
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.
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.
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.
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.
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.
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!
| Name | Required | Description | Default |
|---|---|---|---|
| script_id | Yes | Objekt-ID des zu löschenden Skripts |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| script_id | Yes | Objekt-ID des auszuführenden Skripts | |
| parameters | No | Optionale Parameter als Key-Value-Objekt für IPS_RunScriptEx |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Optionaler Suchbegriff für Skriptnamen (leer = alle) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| script_id | Yes | Objekt-ID des Skripts in IP-Symcon |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Der neue PHP-Quellcode (vollständig, ersetzt alten Inhalt) | |
| script_id | Yes | Objekt-ID des Skripts |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| types | No | Log-Typen: 0=Info, 1=OK, 2=Hinweis, 3=Warnung, 4=Fehler, 5=Debug, 6=Custom |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| variable_id | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| use_action | No | true = RequestAction (für Aktoren), false = SetValue (direkt) | |
| variable_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
13 tool updates
v2.0.0- First observed
object_children - First observed
object_search - First observed
php_eval - First observed
script_create - First observed
script_delete - First observed
script_execute - First observed
script_list - First observed
script_read - First observed
script_write - First observed
system_info - First observed
system_log - First observed
variable_read - First observed
variable_set
TDQS
Scored across 13 tools
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.
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.
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.
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
Related MCP Connectors
Manage your IoT device fleet directly from Claude. Create device templates with datastreams and events, provision new devices, read live sensor data, and control outputs. The Blynk connector integrates with the Blynk IoT platform, enabling direct configuration and monitoring of connected devices and infrastructure.
Live SEO workflow tools for Claude Code, Codex, and AI agents.
Connect Amazon Seller Central to Claude or ChatGPT via MCP. Orders, inventory, pricing, fees, FBA.
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Related MCP Servers
- AlicenseAqualityDmaintenanceConnects AI assistants like Claude to PHP's XDebug debugger for runtime inspection, breakpoint control, and variable tracking, enabling natural language debugging of PHP applications.61Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables Claude AI to control and manage Homey Pro smart home devices, flows, and analytics through natural language.12MIT
- AlicenseAqualityDmaintenanceEnables monitoring and control of SwitchBot devices (temperature sensors, plugs, bots) via Claude Desktop or Home Assistant.106 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables 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