Skip to content
> ๐Ÿ’ป ๐Ÿง  ืงื•ื“ 1001 > โšก ื”ืคื™ืœื•ืกื•ืคื™ื” ืฉืœ PowerShell > > ืฉืจืช MCP PowerShell. README>

ืฉืจืช MCP PowerShell. README>

ืฉืจืช MCP (Model Context Protocol) ืœื”ืจืฆืช ืกืงืจื™ืคื˜ื™ื ืฉืœ PowerShell, ื”ืชื•ืžืš ื‘ืžืฆื‘ื™ ืขื‘ื•ื“ื” HTTP ื•-STDIO.

ืชื™ืื•ืจ

ืฉืจืช MCP PowerShell ืžืืคืฉืจ ืœืขื•ื–ืจื™ AI ืœื”ืจื™ืฅ ืคืงื•ื“ื•ืช ื•ืกืงืจื™ืคื˜ื™ื ืฉืœ PowerShell ื“ืจืš ืคืจื•ื˜ื•ืงื•ืœ MCP ื”ืžืชื•ืงื ืŸ. ื”ืฉืจืช ืชื•ืžืš ื‘ืฉื ื™ ืžืฆื‘ื™ ืขื‘ื•ื“ื”:

  • ืžืฆื‘ STDIO: ืœืื™ื ื˜ื’ืจืฆื™ื” ืขื gemini-cli ื•ืœืงื•ื—ื•ืช MCP ืžืงื•ืžื™ื™ื ืื—ืจื™ื.
  • ืžืฆื‘ HTTP: ืœื™ื™ืฉื•ืžื™ ืื™ื ื˜ืจื ื˜ ื•ืื™ื ื˜ื’ืจืฆื™ื” ื‘ืจืฉืช ื“ืจืš REST API.

ื‘ืื™ื–ื” ืžืฆื‘ ืœื‘ื—ื•ืจ: HTTP ืื• STDIO?

ื”ื‘ื—ื™ืจื” ื‘ื™ืŸ mcp-powershell-http.ps1 ืœื‘ื™ืŸ mcp-powershell-stdio.ps1 ืชืœื•ื™ื” ื‘ืื™ืš ื•ืžืื™ืคื” ืืคืœื™ืงืฆื™ื™ืช ื”ืœืงื•ื— ืชืชืงืฉืจ ืขื ื”ืฉืจืช.

  • mcp-powershell-http.ps1 (ืžืฆื‘ HTTP) ืขื•ื‘ื“ ื›ืžื• ืžืœืฆืจ ื‘ืžืกืขื“ื”. ื”ื•ื ืžืงื‘ืœ ื”ื–ืžื ื•ืช (ื‘ืงืฉื•ืช HTTP) ืžื›ืœ ืœืงื•ื— ื‘ืจืฉืช, ืžืขื‘ื™ืจ ืื•ืชืŸ ืœ"ืžื˜ื‘ื—" (PowerShell) ื•ืžื—ื–ื™ืจ ืืช ื”ืชื•ืฆืื” ื”ืžื•ื›ื ื” (ืชืฉื•ื‘ืช HTTP).
  • mcp-powershell-stdio.ps1 (ืžืฆื‘ STDIO) ืขื•ื‘ื“ ื›ืžื• ืขื•ื–ืจ ืื™ืฉื™ ื‘ืžื˜ื‘ื—. ื”ื•ื ืžืงื‘ืœ ืžืฉื™ืžื•ืช ื™ืฉื™ืจื•ืช (ื“ืจืš ืงืœื˜ ืกื˜ื ื“ืจื˜ื™ stdin) ืžืชื”ืœื™ืš ืžื ื”ืœ (ืœืžืฉืœ, gemini-cli) ืฉื”ืคืขื™ืœ ืื•ืชื•, ื•ืžื—ื–ื™ืจ ืžื™ื“ ืืช ื”ืชื•ืฆืื” (ื“ืจืš ืคืœื˜ ืกื˜ื ื“ืจื˜ื™ stdout).

ืžืชื™ ืœื”ืฉืชืžืฉ ื‘ืžืฆื‘ HTTP

ื›ื“ืื™ ืœื‘ื—ื•ืจ ื‘-HTTP ืื ื ื“ืจืฉืช ืชืงืฉื•ืจืช ืจืฉืช.

  • ื ื™ื”ื•ืœ ืžืจื—ื•ืง: ืืคืœื™ืงืฆื™ื™ืช ื”ืœืงื•ื— ื ืžืฆืืช ืขืœ ืžื—ืฉื‘ ืื—ืจ.
  • ืื™ื ื˜ื’ืจืฆื™ื™ืช ืื™ื ื˜ืจื ื˜: ื™ืฉ ืฆื•ืจืš ืœืงืจื•ื ืœืกืงืจื™ืคื˜ื™ื ืฉืœ PowerShell ืžื™ื™ืฉื•ื ืื™ื ื˜ืจื ื˜, ืคืื ืœ ื ื™ื”ื•ืœ ืื• ื“ืจืš ื‘ืงืฉื•ืช AJAX.
  • ืืจื›ื™ื˜ืงื˜ื•ืจืช ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื: ืฉื™ืจื•ืชื™ื ืื—ืจื™ื ื‘ืจืฉืช ืฉืœืš ืฆืจื™ื›ื™ื ืœืชืงืฉืจ ืขื PowerShell.
  • ื‘ื“ื™ืงื•ืช ืคืฉื•ื˜ื•ืช: ืืชื” ืจื•ืฆื” ืœื”ืฉืชืžืฉ ื‘ื›ืœื™ื ื›ืžื• curl, Postman ืื• Invoke-RestMethod ื›ื“ื™ ืœืฉืœื•ื— ืคืงื•ื“ื•ืช.

ื‘ืžื™ืœื™ื ืคืฉื•ื˜ื•ืช: ื‘ื—ืจ HTTP ืื ื™ืฉ ืจืฉืช ื‘ื™ืŸ ื”ืœืงื•ื— ืœืฉืจืช.

ืžืชื™ ืœื”ืฉืชืžืฉ ื‘ืžืฆื‘ STDIO

ืžืฆื‘ ื–ื” ืื™ื“ื™ืืœื™ ืขื‘ื•ืจ ืื™ื ื˜ื’ืจืฆื™ื” ืžืงื•ืžื™ืช ื•ืžืื•ื‘ื˜ื—ืช.

  • ืชืจื—ื™ืฉ ืขื™ืงืจื™ โ€” Gemini CLI: ื”ื›ืœื™ gemini-cli ืžืคืขื™ืœ ื‘ืขืฆืžื• ืืช mcp-powershell-stdio.ps1 ื›ืชื”ืœื™ืš ื‘ืŸ ื•ืžืชืงืฉืจ ืื™ืชื• ื™ืฉื™ืจื•ืช ื“ืจืš ื–ืจืžื™ ืงืœื˜/ืคืœื˜ ืกื˜ื ื“ืจื“ื˜ื™ื™ื.
  • ืื™ื ื˜ื’ืจืฆื™ื” ืขื ื™ื™ืฉื•ืžื™ื ืžืงื•ืžื™ื™ื ืื—ืจื™ื: ื”ืชื•ื›ื ื™ืช ืฉืœืš ื‘-Python, Node.js ืื• ืฉืคื” ืื—ืจืช ื™ื›ื•ืœื” ืœื”ืคืขื™ืœ ื•ืœื ื”ืœ ืืช ื”ืฉืจืช ืžื‘ืœื™ ืœืคืชื•ื— ืคื•ืจื˜ื™ื ื‘ืจืฉืช.
  • ืื‘ื˜ื—ื” ืžื•ื’ื‘ืจืช: ืžื›ื™ื•ื•ืŸ ืฉืื™ืŸ ืคืชื™ื—ืช ืคื•ืจื˜ื™ื ื‘ืจืฉืช, ืฉื™ื˜ื” ื–ื• ืžืื•ื‘ื˜ื—ืช ื™ื•ืชืจ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ.

ื‘ืžื™ืœื™ื ืคืฉื•ื˜ื•ืช: ื‘ื—ืจ STDIO ืื ื”ืœืงื•ื— ื•ื”ืฉืจืช ื ืžืฆืื™ื ืขืœ ืื•ืชื” ืžื›ื•ื ื”, ื•ื”ืœืงื•ื— ืžืคืขื™ืœ ืืช ื”ืฉืจืช ื‘ืขืฆืžื•.

ื˜ื‘ืœืช ื”ืฉื•ื•ืื”

ืžืืคื™ื™ืŸืžืฆื‘ HTTP (mcp-powershell-http.ps1)ืžืฆื‘ STDIO (mcp-powershell-stdio.ps1)
ืชืจื—ื™ืฉ ืขื™ืงืจื™ืชืงืฉื•ืจืช ืจืฉืช, Web APIืื™ื ื˜ื’ืจืฆื™ื” ืžืงื•ืžื™ืช ืขื ื›ืœื™ CLI
ืกื•ื’ ืชืงืฉื•ืจืชืœืงื•ื—-ืฉืจืช ื‘ืจืฉืช (TCP/IP)ืชืงืฉื•ืจืช ื‘ื™ืŸ ืชื”ืœื™ื›ื™ื (IPC)
ืžื™ืงื•ืื”ืœืงื•ื— ื•ื”ืฉืจืช ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ืขืœ ืžื›ื•ื ื•ืช ืฉื•ื ื•ืชื”ืœืงื•ื— ื•ื”ืฉืจืช ื—ื™ื™ื‘ื™ื ืœื”ื™ื•ืช ืขืœ ืื•ืชื” ืžื›ื•ื ื”
ืื‘ื˜ื—ื”ื“ื•ืจืฉ ืชืฉื•ืžืช ืœื‘ (ื’ื™ืฉื” ืœืคื•ืจื˜, ื—ื•ืžืช ืืฉ)ืžืื•ื‘ื˜ื— ื™ื•ืชืจ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ (ืื™ืŸ ืคื•ืจื˜ื™ื ืคืชื•ื—ื™ื)
ืœืงื•ื—ื•ืช ื˜ื™ืคื•ืกื™ื™ืcurl, Postman, ื™ื™ืฉื•ืžื™ ืื™ื ื˜ืจื ื˜, ืกืงืจื™ืคื˜ื™ื ืžืจื•ื—ืงื™ืgemini-cli, ื™ื™ืฉื•ืžื™ ืขื˜ื™ืคื” ืžืงื•ืžื™ื™ื

ืชื›ื•ื ื•ืช

  • โœ… ืชืžื™ื›ื” ื‘ืคืจื•ื˜ื•ืงื•ืœ MCP ื’ืจืกื” 2024-11-05
  • โœ… ืฉื ื™ ืžืฆื‘ื™ ืขื‘ื•ื“ื”: STDIO ื•-HTTP
  • โœ… ื‘ื™ื“ื•ื“ ื”ืจืฆืช ืกืงืจื™ืคื˜ื™ื ื‘ืชื”ืœื™ื›ื™ PowerShell ื ืคืจื“ื™ื
  • โœ… ื–ืžื ื™ ืงืฆื•ื‘ (timeout) ื ื™ืชื ื™ื ืœื”ื’ื“ืจื”
  • โœ… ืจื™ืฉื•ื ืžืคื•ืจื˜ ืฉืœ ื›ืœ ื”ืคืขื•ืœื•ืช
  • โœ… ื˜ื™ืคื•ืœ ื‘ืฉื’ื™ืื•ืช ื•ืื–ื”ืจื•ืช ืฉืœ PowerShell
  • โœ… ืชืžื™ื›ื” ื‘ืคืจืžื˜ืจื™ื ืœืกืงืจื™ืคื˜ื™ื
  • โœ… ืกืคืจื™ื™ืช ืขื‘ื•ื“ื” ื ื™ืชื ืช ืœื”ื’ื“ืจื”
  • โœ… ืžืคืขื™ืœื™ื ืื•ื˜ื•ืžื˜ื™ื™ื ืœื”ืคืขืœื” ืคืฉื•ื˜ื”

ื“ืจื™ืฉื•ืช ืžืขืจื›ืช

  • PowerShell 7.0 ื•ืžืขืœื”
  • Windows 10/11 ืื• Windows Server 2019+
  • .NET 6.0 ื•ืžืขืœื”

ืžื‘ื ื” ื”ืคืจื•ื™ืงื˜

mcp-powershell-server/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ clients/           # ื™ื™ืฉื•ืžื™ ืœืงื•ื—
โ”‚   โ”‚   โ”œโ”€โ”€ node/         # ืœืงื•ื— Node.js
โ”‚   โ”‚   โ”œโ”€โ”€ powershell/   # ืœืงื•ื— PowerShell
โ”‚   โ”‚   โ””โ”€โ”€ python/       # ืœืงื•ื— Python
โ”‚   โ””โ”€โ”€ servers/          # ืจื›ื™ื‘ื™ ืฉืจืช
โ”‚       โ”œโ”€โ”€ mcp-powershell-stdio.ps1   # ื’ืจืกืช STDIO ืฉืœ ื”ืฉืจืช
โ”‚       โ”œโ”€โ”€ mcp-powershell-http.ps1    # ื’ืจืกืช HTTP ืฉืœ ื”ืฉืจืช
โ”‚       โ”œโ”€โ”€ test-mcp.ps1               # ืฉืจืช ื‘ื“ื™ืงื•ืช
โ”‚       โ””โ”€โ”€ config.json                # ืงื•ื‘ืฅ ืชืฆื•ืจื”
โ”œโ”€โ”€ docs/                 # ืชื™ืขื•ื“
โ”œโ”€โ”€ README.md            # ืงื•ื‘ืฅ ื–ื”
โ””โ”€โ”€ how-to-use.md        # ืžื“ืจื™ืš ืฉื™ืžื•ืฉ ืžืคื•ืจื˜

ื”ืชื—ืœื” ืžื”ื™ืจื”

ืžืฆื‘ STDIO (ืขื‘ื•ืจ gemini-cli)

  1. ื”ืคืขืœืช ื”ืฉืจืช:
    powershell .\src\servers\mcp-powershell-stdio.ps1
  2. ื‘ื“ื™ืงื”:
    powershell .\src\servers\test-mcp.ps1

ืžืฆื‘ HTTP

  1. ื”ืคืขืœื” ื‘ืกื™ืกื™ืช:
    powershell .\src\servers\mcp-powershell-http.ps1
  2. ืขื ืคืจืžื˜ืจื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช:
    powershell .\src\servers\mcp-powershell-http.ps1 -Port 9090 -ServerHost "0.0.0.0"
  3. ืขื ืงื•ื‘ืฅ ืชืฆื•ืจื”:
    powershell .\src\servers\mcp-powershell-http.ps1 -ConfigFile ".\src\servers\config.json"

ื›ืœื™ MCP ื–ืžื™ื ื™ื

run-script

ืžืจื™ืฅ ืกืงืจื™ืคื˜ PowerShell ืขื ืคืจืžื˜ืจื™ื ืฉืฆื•ื™ื ื•.

ืคืจืžื˜ืจื™ื:

  • script (ื—ื•ื‘ื”) – ืงื•ื“ PowerShell ืœื”ืจืฆื”
  • parameters (ืื•ืคืฆื™ื•ื ืœื™) – ื˜ื‘ืœืช ื’ื™ื‘ื•ื‘ ืฉืœ ืคืจืžื˜ืจื™ื
  • workingDirectory (ืื•ืคืฆื™ื•ื ืœื™) – ืกืคืจื™ื™ืช ื”ืขื‘ื•ื“ื”
  • timeoutSeconds (ืื•ืคืฆื™ื•ื ืœื™) – ื–ืžืŸ ืงืฆื•ื‘ ืœื”ืจืฆื” (1-3600 ืฉื ื™ื•ืช)

ื“ื•ื’ืžื” ืœืฉื™ืžื•ืฉ ื“ืจืš MCP:

{
  "name": "run-script",
  "arguments": {
    "script": "Get-Process | Select-Object -First 5 | Format-Table",
    "workingDirectory": "C:\\",
    "timeoutSeconds": 30
  }
}

ืชืฆื•ืจื”

ื”ืฉืจืช ืชื•ืžืš ื‘ืชืฆื•ืจื” ื‘ืืžืฆืขื•ืช ืงื•ื‘ืฅ config.json:

{
  "Port": 8090,
  "Host": "localhost",
  "MaxConcurrentRequests": 10,
  "TimeoutSeconds": 300,
  "AllowedPaths": [
    "C:\\Scripts\\",
    "C:\\Tools\\"
  ],
  "Security": {
    "EnableScriptValidation": true,
    "BlockDangerousCommands": true,
    "RestrictedCommands": [
      "Remove-Item",
      "Format-Volume",
      "Stop-Computer",
      "Restart-Computer"
    ]
  }
}

ืื‘ื˜ื—ื”

  • ื”ืจืฆืช ืกืงืจื™ืคื˜ื™ื ืžืชื‘ืฆืขืช ื‘ืชื”ืœื™ื›ื™ PowerShell ืžื‘ื•ื“ื“ื™ื
  • ืชืžื™ื›ื” ื‘ืจืฉื™ืžืช ืคืงื•ื“ื•ืช ืืกื•ืจื•ืช
  • ื”ื’ื‘ืœืช ื–ืžืŸ ื”ืจืฆื”
  • ืจื™ืฉื•ื ื›ืœ ื”ืคืงื•ื“ื•ืช ื”ืžื•ืจืฆื•ืช
  • ืืคืฉืจื•ืช ืœื”ื’ื‘ื™ืœ ื ืชื™ื‘ื™ื ื–ืžื™ื ื™ื

ืจื™ืฉื•ื (ืœื•ื’ื™ื)

  • ืžืฆื‘ STDIO: ื”ืœื•ื’ื™ื ื ื›ืชื‘ื™ื ืœืงื•ื‘ืฅ %TEMP%\mcp-powershell-server.log
  • ืžืฆื‘ HTTP: ื”ืœื•ื’ื™ื ืžื•ืฆื’ื™ื ื‘ืงื•ื ืกื•ืœื” ืขื ื”ื“ื’ืฉืช ืฆื‘ืข

ืจืžื•ืช ืจื™ืฉื•ื: DEBUG, INFO, WARNING, ERROR

ืื™ื ื˜ื’ืจืฆื™ื” ืขื ืขื•ื–ืจื™ AI

Gemini CLI

gemini --mcp-config "path/to/mcp_servers.json" -m gemini-2.5-pro -p "ื”ืฆื’ ืืช 5 ื”ืชื”ืœื™ื›ื™ื ื”ืจืืฉื•ื ื™ื ื‘ืžืขืจื›ืช"

ืœืงื•ื—ื•ืช MCP ืื—ืจื™ื

ื”ืฉืจืช ืชื•ืื ืœื›ืœ ื”ืœืงื•ื—ื•ืช ื”ืชื•ืžื›ื™ื ื‘ืคืจื•ื˜ื•ืงื•ืœ MCP 2024-11-05.

ืคืชืจื•ืŸ ื‘ืขื™ื•ืช

ื‘ืขื™ื•ืช ื ืคื•ืฆื•ืช

  1. ื”ืคื•ืจื˜ ืชืคื•ืก: ืฉื ื” ืืช ื”ืคื•ืจื˜ ื‘ืชืฆื•ืจื” ืื• ืขืฆื•ืจ ืืช ื”ืชื”ืœื™ืš ื”ืžืฉืชืžืฉ ื‘ืคื•ืจื˜.
  2. ื”ืจืฉืื•ืช ื’ื™ืฉื”: ื”ืจืฆื” ืขืœ ืคื•ืจื˜ื™ื ืžื•ืขื“ืคื™ื (<1024) ื“ื•ืจืฉืช ื”ืจืฉืื•ืช ืžื ื”ืœ.
  3. ืงื™ื“ื•ื“: ื•ื“ื ืฉ-PowerShell ืžื•ื’ื“ืจ ืœ-UTF-8.
  4. ื’ืจืกืช PowerShell: ื ื“ืจืฉืช ื’ืจืกื” 7 ื•ืžืขืœื” ืฉืœ PowerShell.

ืื‘ื—ื•ืŸ

ื‘ื“ื•ืง ืืช ื”ืœื•ื’ื™ื ืฉืœ ื”ืฉืจืช ืœืื‘ื—ื•ืŸ ื‘ืขื™ื•ืช:

Get-Content "$env:TEMP\mcp-powershell-server.log" -Tail 20

ืคื™ืชื•ื— ื•ื”ืจื—ื‘ื”

ื ื™ืชืŸ ืœื”ืจื—ื™ื‘ ืืช ื”ืฉืจืช ื‘ืงืœื•ืช ืขื ื›ืœื™ MCP ื—ื“ืฉื™ื. ืขื™ื™ืŸ ื‘-how-to-use.md ืœื”ื•ืจืื•ืช ืคื™ืชื•ื— ืžืคื•ืจื˜ื•ืช.

ืจื™ืฉื™ื•ืŸ

ืคืจื•ื™ืงื˜ ื–ื” ืžื•ืคืฅ ืชื—ืช ืจื™ืฉื™ื•ืŸ MIT. ืขื™ื™ืŸ ื‘ืงื•ื‘ืฅ LICENSE ืœืคืจื˜ื™ื.

ืชืžื™ื›ื”

  • ืคืชื— Issue ื‘ืžืื’ืจ ื”-GitHub.
  • ืขื™ื™ืŸ ื‘ืชื™ืขื•ื“ ื‘-how-to-use.md.
  • ืขื™ื™ืŸ ื‘ื“ื•ื’ืžืื•ืช ื”ืฉื™ืžื•ืฉ.

ื’ืจืกืื•ืช

  • 1.0.0 – ื’ืจืกื” ืจืืฉื•ื ื™ืช ืขื ืชืžื™ื›ื” ื‘ืžืฆื‘ื™ STDIO ื•-HTTP.

ื›ืชื™ื‘ืช ืชื’ื•ื‘ื”

ื”ืื™ืžื™ื™ืœ ืœื ื™ื•ืฆื’ ื‘ืืชืจ. ืฉื“ื•ืช ื”ื—ื•ื‘ื” ืžืกื•ืžื ื™ื *