{"id":3512,"date":"2025-09-26T20:11:45","date_gmt":"2025-09-26T18:11:45","guid":{"rendered":"https:\/\/davidka.net\/ru\/?p=3512"},"modified":"2025-10-24T12:43:18","modified_gmt":"2025-10-24T09:43:18","slug":"mcp-powershell-server-dokumentation-stdio-server","status":"publish","type":"post","link":"http:\/\/de.davidka.net\/de\/mcp-powershell-server-dokumentation-stdio-server\/","title":{"rendered":"MCP PowerShell Server Dokumentation. STDIO Server. (mcp-powershell-server-stdio.py)"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Beschreibung<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der MCP PowerShell Server ist ein Server, der das Model Context Protocol (MCP) zur Ausf\u00fchrung von PowerShell-Skripten implementiert. Der Server arbeitet im STDIO-Modus und stellt Werkzeuge zur sicheren Ausf\u00fchrung von PowerShell-Befehlen \u00fcber eine standardisierte Schnittstelle bereit.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Architektur<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Hauptkomponenten<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>JSON-Konverter<\/strong> &#8211; Eine Funktion zum Konvertieren von JSON in PowerShell-Hashtabellen.<\/li>\n\n\n\n<li><strong>Protokollierung (Logging)<\/strong> &#8211; Ein System zum Schreiben von Ereignissen in eine Datei.<\/li>\n\n\n\n<li><strong>MCP-Handler<\/strong> &#8211; Die Kernlogik zur Verarbeitung von MCP-Anfragen.<\/li>\n\n\n\n<li><strong>PowerShell-Executor<\/strong> &#8211; Isolierte Ausf\u00fchrung von Skripten.<\/li>\n\n\n\n<li><strong>STDIO-Schnittstelle<\/strong> &#8211; Kommunikation \u00fcber Standardstr\u00f6me.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Dateistruktur<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">mcp-powershell-stdio.ps1\n\u251c\u2500\u2500 ConvertFrom-JsonToHashtable    # JSON-Konvertierungsfunktion\n\u251c\u2500\u2500 Write-Log                      # Protokollierungsfunktion\n\u251c\u2500\u2500 Test-MCPRequest               # MCP-Anforderungsvalidierung\n\u251c\u2500\u2500 New-MCPResponse               # Erstellung von MCP-Antworten\n\u251c\u2500\u2500 Invoke-PowerShellScript       # Ausf\u00fchrung von PowerShell-Skripten\n\u251c\u2500\u2500 Invoke-MCPMethod              # Verarbeitung von MCP-Methoden\n\u251c\u2500\u2500 Send-MCPResponse              # Senden von Antworten\n\u251c\u2500\u2500 Start-MCPServer               # Hauptschleife des Servers\n\u2514\u2500\u2500 Initialisierung und Start<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Funktionen<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">ConvertFrom-JsonToHashtable<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">function ConvertFrom-JsonToHashtable {\n    param(&#091;string]$Json)\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Zweck<\/strong>: Diese Funktion konvertiert eine JSON-Zeichenkette in PowerShell-Hashtabellen zur Kompatibilit\u00e4t mit PowerShell 5.x.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Parameter<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">Json<\/code> (string) &#8211; Die zu konvertierende JSON-Zeichenkette.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>R\u00fcckgabewert<\/strong>: Eine Hashtabelle mit den konvertierten Daten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Merkmale<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Rekursive Konvertierung von verschachtelten Objekten.<\/li>\n\n\n\n<li>Verarbeitung von Arrays und Sammlungen.<\/li>\n\n\n\n<li>Kompatibilit\u00e4t mit PowerShell 5.x.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Write-Log<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">function Write-Log {\n    param(\n        &#091;Parameter(Mandatory=$true)]\n        &#091;string]$Message,\n\n        &#091;Parameter(Mandatory=$false)]\n        &#091;ValidateSet(&quot;INFO&quot;, &quot;WARNING&quot;, &quot;ERROR&quot;, &quot;DEBUG&quot;)]\n        &#091;string]$Level = &quot;INFO&quot;\n    )\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Zweck<\/strong>: Diese Funktion schreibt Protokolle in eine Datei, da <code class=\"\" data-line=\"\">stdout<\/code> f\u00fcr die MCP-Kommunikation verwendet wird.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Parameter<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">Message<\/code> (string) &#8211; Die Nachricht, die in das Protokoll geschrieben werden soll.<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">Level<\/code> (string) &#8211; Die Protokollierungsstufe (INFO, WARNING, ERROR, DEBUG).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Merkmale<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Schreibt in die Datei <code class=\"\" data-line=\"\">$env:TEMP\\mcp-powershell-server.log<\/code>.<\/li>\n\n\n\n<li>Zeitstempel im Format <code class=\"\" data-line=\"\">yyyy-MM-dd HH:mm:ss<\/code>.<\/li>\n\n\n\n<li>UTF-8-Kodierung.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Test-MCPRequest<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">function Test-MCPRequest {\n    param(\n        &#091;Parameter(Mandatory=$true)]\n        &#091;hashtable]$Request\n    )\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Zweck<\/strong>: Diese Funktion validiert eine MCP-Anfrage auf Einhaltung des Protokolls.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Parameter<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">Request<\/code> (hashtable) &#8211; Die zu validierende MCP-Anfrage.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>R\u00fcckgabewert<\/strong>: Boolean &#8211; Das Ergebnis der Validierung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Pr\u00fcfungen<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Vorhandensein des Feldes <code class=\"\" data-line=\"\">jsonrpc<\/code> mit dem Wert &#8222;2.0&#8220;.<\/li>\n\n\n\n<li>Vorhandensein des obligatorischen Feldes <code class=\"\" data-line=\"\">method<\/code>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">New-MCPResponse<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">function New-MCPResponse {\n    param(\n        &#091;Parameter(Mandatory=$false)]\n        &#091;object]$Id = $null,\n\n        &#091;Parameter(Mandatory=$false)]\n        &#091;object]$Result = $null,\n\n        &#091;Parameter(Mandatory=$false)]\n        &#091;hashtable]$Error = $null\n    )\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Zweck<\/strong>: Diese Funktion erstellt eine standardisierte MCP-Antwort.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Parameter<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">Id<\/code> (object) &#8211; Der Bezeichner der Anfrage.<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">Result<\/code> (object) &#8211; Das Ergebnis der Operation.<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">Error<\/code> (hashtable) &#8211; Informationen \u00fcber den Fehler.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>R\u00fcckgabewert<\/strong>: Eine <code class=\"\" data-line=\"\">Hashtable<\/code> mit der MCP-Antwort.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Invoke-PowerShellScript<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">function Invoke-PowerShellScript {\n    param(\n        &#091;Parameter(Mandatory=$true)]\n        &#091;string]$Script,\n\n        &#091;Parameter(Mandatory=$false)]\n        &#091;hashtable]$Parameters = @{},\n\n        &#091;Parameter(Mandatory=$false)]\n        &#091;int]$TimeoutSeconds = 300,\n\n        &#091;Parameter(Mandatory=$false)]\n        &#091;string]$WorkingDirectory = $PWD\n    )\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Zweck<\/strong>: Diese Funktion f\u00fchrt ein PowerShell-Skript in einem isolierten Prozess aus.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Parameter<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">Script<\/code> (string) &#8211; Das auszuf\u00fchrende PowerShell-Skript.<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">Parameters<\/code> (hashtable) &#8211; Parameter f\u00fcr das Skript.<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">TimeoutSeconds<\/code> (int) &#8211; Ausf\u00fchrungs-Timeout (Standard 300 Sek.).<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">WorkingDirectory<\/code> (string) &#8211; Das Arbeitsverzeichnis.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>R\u00fcckgabewert<\/strong>: Eine <code class=\"\" data-line=\"\">Hashtable<\/code> mit den Ausf\u00fchrungsergebnissen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">success<\/code> (bool) &#8211; Der Ausf\u00fchrungsstatus.<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">output<\/code> (string) &#8211; die Ausgabe des Befehls.<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">errors<\/code> (array) &#8211; Ein Array von Fehlern.<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">warnings<\/code> (array) &#8211; Ein Array von Warnungen.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Merkmale<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Isolation durch einen separaten PowerShell-Prozess.<\/li>\n\n\n\n<li>Timeout-Unterst\u00fctzung.<\/li>\n\n\n\n<li>Sammlung aller Ausgabestr\u00f6me (Output, Error, Warning).<\/li>\n\n\n\n<li>Automatische Ressourcenbereinigung.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">MCP-Methoden<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">initialize<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Zweck<\/strong>: Initialisiert den MCP-Server und tauscht Informationen \u00fcber F\u00e4higkeiten aus.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Antwort<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">{\n  &quot;protocolVersion&quot;: &quot;2024-11-05&quot;,\n  &quot;capabilities&quot;: {\n    &quot;tools&quot;: {\n      &quot;listChanged&quot;: true\n    }\n  },\n  &quot;serverInfo&quot;: {\n    &quot;name&quot;: &quot;PowerShell Script Runner&quot;,\n    &quot;version&quot;: &quot;1.0.0&quot;,\n    &quot;description&quot;: &quot;F\u00fchrt PowerShell-Skripte \u00fcber MCP aus&quot;\n  }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">tools\/list<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Zweck<\/strong>: Ruft die Liste der verf\u00fcgbaren Werkzeuge ab.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Antwort<\/strong>: Ein Array von Werkzeugen mit Beschreibungen ihrer Eingabeparameterschemata.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">tools\/call<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Zweck<\/strong>: Ruft ein bestimmtes Werkzeug mit Parametern auf.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Parameter<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">name<\/code> (string) &#8211; Der Name des Werkzeugs.<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">arguments<\/code> (object) &#8211; Argumente f\u00fcr das Werkzeug.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Werkzeuge<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">run-script<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Zweck<\/strong>: F\u00fchrt ein PowerShell-Skript mit angegebenen Parametern aus.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Eingabeparameterschema<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">{\n  &quot;type&quot;: &quot;object&quot;,\n  &quot;properties&quot;: {\n    &quot;script&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;Auszuf\u00fchrendes PowerShell-Skript&quot;\n    },\n    &quot;parameters&quot;: {\n      &quot;type&quot;: &quot;object&quot;,\n      &quot;description&quot;: &quot;Parameter f\u00fcr das Skript (optional)&quot;,\n      &quot;additionalProperties&quot;: true\n    },\n    &quot;workingDirectory&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;Arbeitsverzeichnis f\u00fcr die Ausf\u00fchrung (optional)&quot;,\n      &quot;default&quot;: &quot;&lt;aktuelles Verzeichnis&gt;&quot;\n    },\n    &quot;timeoutSeconds&quot;: {\n      &quot;type&quot;: &quot;integer&quot;,\n      &quot;description&quot;: &quot;Ausf\u00fchrungs-Timeout in Sekunden (optional)&quot;,\n      &quot;default&quot;: 300,\n      &quot;minimum&quot;: 1,\n      &quot;maximum&quot;: 3600\n    }\n  },\n  &quot;required&quot;: &#091;&quot;script&quot;]\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Antwort<\/strong>: Eine Struktur mit den Ausf\u00fchrungsergebnissen, einschlie\u00dflich:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Formatierte Befehlsausgabe.<\/li>\n\n\n\n<li>Fehler (falls vorhanden).<\/li>\n\n\n\n<li>Warnungen (falls vorhanden).<\/li>\n\n\n\n<li>Ausf\u00fchrungsmetadaten.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Konfiguration<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Kodierung<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">&#091;Console]::OutputEncoding = &#091;System.Text.Encoding]::UTF8\n&#091;Console]::InputEncoding = &#091;System.Text.Encoding]::UTF8<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Der Server ist f\u00fcr die Arbeit mit UTF-8-Kodierung zur korrekten Verarbeitung von JSON-Daten konfiguriert.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Protokollierung (Logging)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Protokolldatei<\/strong>: <code class=\"\" data-line=\"\">$env:TEMP\\mcp-powershell-server.log<\/code><\/li>\n\n\n\n<li><strong>Kodierung<\/strong>: UTF-8<\/li>\n\n\n\n<li><strong>Stufen<\/strong>: INFO, WARNING, ERROR, DEBUG<\/li>\n\n\n\n<li><strong>Format<\/strong>: <code class=\"\" data-line=\"\">[yyyy-MM-dd HH:mm:ss] [LEVEL] Nachricht<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Sicherheit<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Skriptisolierung durch separate PowerShell-Prozesse.<\/li>\n\n\n\n<li>Timeouts zur Verhinderung von H\u00e4ngenbleiben.<\/li>\n\n\n\n<li>Validierung aller eingehenden Anfragen.<\/li>\n\n\n\n<li>Protokollierung aller Operationen.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Verwendung<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Starten des Servers<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">.\\mcp-powershell-stdio.ps1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Der Server startet im STDIO-Modus und wartet auf MCP-Befehle \u00fcber die Standardeingabe.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Beispiel-MCP-Anfragen<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Initialisierung<\/h4>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 1,\n  &quot;method&quot;: &quot;initialize&quot;,\n  &quot;params&quot;: {\n    &quot;protocolVersion&quot;: &quot;2024-11-05&quot;,\n    &quot;capabilities&quot;: {},\n    &quot;clientInfo&quot;: {\n      &quot;name&quot;: &quot;test-client&quot;,\n      &quot;version&quot;: &quot;1.0.0&quot;\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Liste der Werkzeuge&#8222;`json<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">{<br>&#8222;jsonrpc&#8220;: &#8222;2.0&#8220;,<br>&#8222;id&#8220;: 2,<br>&#8222;method&#8220;: &#8222;tools\/list&#8220;<br>}<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">#### Skriptausf\u00fchrung<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">json<br>{<br>&#8222;jsonrpc&#8220;: &#8222;2.0&#8220;,<br>&#8222;id&#8220;: 3,<br>&#8222;method&#8220;: &#8222;tools\/call&#8220;,<br>&#8222;params&#8220;: {<br>&#8222;name&#8220;: &#8222;run-script&#8220;,<br>&#8222;arguments&#8220;: {<br>&#8222;script&#8220;: &#8222;Get-Process | Select-Object -First 5 Name, CPU&#8220;,<br>&#8222;timeoutSeconds&#8220;: 60<br>}<br>}<br>}<br>&#8222;`<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fehlerbehandlung<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">MCP-Fehlercodes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">-32700<\/code>: JSON-Parse-Fehler<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">-32600<\/code>: Ung\u00fcltige MCP-Anfrage<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">-32601<\/code>: Methode oder Werkzeug nicht gefunden<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">-32602<\/code>: Ung\u00fcltige Parameter<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">-32603<\/code>: Interner Serverfehler<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Fehlerprotokollierung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Alle Fehler werden in einer Datei mit detaillierten Informationen protokolliert:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Zeitstempel<\/li>\n\n\n\n<li>Fehlerstufe<\/li>\n\n\n\n<li>Detaillierte Beschreibung<\/li>\n\n\n\n<li>Stack-Trace (falls erforderlich)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Einschr\u00e4nkungen<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Ausf\u00fchrungs-Timeout<\/strong>: Maximal 3600 Sekunden (1 Stunde).<\/li>\n\n\n\n<li><strong>Prozessisolierung<\/strong>: Jedes Skript wird in einem separaten Prozess ausgef\u00fchrt.<\/li>\n\n\n\n<li><strong>Kodierung<\/strong>: Nur UTF-8.<\/li>\n\n\n\n<li><strong>Kompatibilit\u00e4t<\/strong>: PowerShell 5.x und h\u00f6her.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Leistung<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Minimaler Overhead bei der Prozesserstellung.<\/li>\n\n\n\n<li>Effiziente JSON-Serialisierung.<\/li>\n\n\n\n<li>Automatische Ressourcenbereinigung.<\/li>\n\n\n\n<li>Optimierte Protokollierung.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Skalierbarkeit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der Server ist daf\u00fcr ausgelegt, eine Anfrage nach der anderen im synchronen Modus zu verarbeiten. F\u00fcr die parallele Verarbeitung m\u00fcssen mehrere Instanzen des Servers ausgef\u00fchrt werden.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Dokumentationsversion: 1.0.0<\/em><br><em>Erstellungsdatum: 15. September 2025<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Beschreibung Der MCP PowerShell Server ist ein Server, der das Model Context Protocol (MCP) zur Ausf\u00fchrung von PowerShell-Skripten implementiert. Der Server arbeitet im STDIO-Modus und stellt Werkzeuge zur sicheren Ausf\u00fchrung von PowerShell-Befehlen \u00fcber eine standardisierte Schnittstelle bereit. Architektur Hauptkomponenten Dateistruktur Funktionen ConvertFrom-JsonToHashtable Zweck: Diese Funktion konvertiert eine JSON-Zeichenkette in PowerShell-Hashtabellen zur Kompatibilit\u00e4t mit PowerShell 5.x.&hellip;&nbsp;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[],"tags":[],"class_list":["post-3512","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/posts\/3512","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/comments?post=3512"}],"version-history":[{"count":0,"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/posts\/3512\/revisions"}],"wp:attachment":[{"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/media?parent=3512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/categories?post=3512"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/tags?post=3512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}