Skip to main content
Glama
posidron

PowerShell MCP Server

by posidron

PowerShell MCP-сервер

Сервер Model Context Protocol для взаимодействия с PowerShell. Этот сервер предоставляет инструменты для выполнения команд PowerShell, получения системной информации, управления модулями и т. д.

Требования

  • Node.js 18+

  • PowerShell 5.1 или PowerShell Core 7+

Related MCP server: MCP Personal Assistant Agent

Установка

  1. Установить зависимости:

    npm install
  2. Создайте проект:

    npm run build

Конфигурация

Для рабочего стола Клода

Изменить конфигурацию: $HOME/Library/Application\ Support/Claude/claude_desktop_config.json

Добавить в mcpServers:

{
  "mcpServers": {
    "mcp-powershell": {
      "command": "node",
      "args": [
        "/absolute/path/to/mcp-powershell/dist/index.js"
      ]
    }
  }
}

Для VS-кода

Изменить конфигурацию: $HOME/Library/Application\ Support/Code/User/settings.json

Добавить в настройки:

"mcp": {
  "servers": {
    "mcp-powershell": {
      "command": "node",
      "args": [
        "/absolute/path/to/mcp-powershell/dist/index.js"
      ]
    }
  }
}

Для курсора IDE

Изменить конфигурацию: $HOME/.cursor/mcp.json

Добавить в mcpServers:

{
  "mcpServers": {
    "mcp-powershell": {
      "command": "node",
      "args": [
        "/absolute/path/to/mcp-powershell/dist/index.js"
      ]
    }
  }
}

Доступные инструменты

Этот сервер PowerShell MCP предоставляет следующие инструменты:

выполнить_пс

Выполните команду PowerShell и получите результат.

Parameters:
- command (string): PowerShell command to execute

Пример использования:

execute_ps(command: "Get-Process | Select-Object -First 5")

получить_системную_информацию

Получите подробную информацию о системе, включая сведения об ОС, процессоре, памяти и версии PowerShell.

Parameters: None

Пример использования:

get_system_info()

список_модулей

Выведите список всех установленных модулей PowerShell с указанием таких сведений, как имя, версия и тип.

Parameters: None

Пример использования:

list_modules()

получить_команду_помощь

Получите подробную справку по конкретной команде PowerShell, включая синтаксис, параметры и примеры.

Parameters:
- command (string): PowerShell command to get help for

Пример использования:

get_command_help(command: "Get-Process")

find_commands

Поиск команд PowerShell по имени или шаблону.

Parameters:
- search (string): Search term for PowerShell commands

Пример использования:

find_commands(search: "Process")

запустить_скрипт

Запустите файл скрипта PowerShell с дополнительными параметрами.

Parameters:
- scriptPath (string): Path to the PowerShell script file
- parameters (string, optional): Optional parameters to pass to the script

Пример использования:

run_script(scriptPath: "/path/to/script.ps1", parameters: "-Name 'Test' -Value 123")

Разработка

Для запуска в режиме разработки:

npm run dev

Расширение сервера

Чтобы добавить собственные инструменты PowerShell:

  1. Редактировать src/index.ts

  2. Добавить новые инструменты в метод registerTools()

  3. Следуйте существующей схеме для последовательной обработки ошибок.

  4. Сборка с помощью npm run build

Пример добавления инструмента

// In the registerTools() method:
this.server.tool(
  "my_ps_tool",
  {
    param1: z.string().describe("Description of parameter 1"),
    param2: z.number().optional().describe("Optional numeric parameter"),
  },
  async ({ param1, param2 }) => {
    try {
      // Your PowerShell command
      const command = `Your-PowerShell-Command -Param1 "${param1}" ${param2 ? `-Param2 ${param2}` : ''}`;

      const { stdout, stderr } = await execAsync(`powershell -Command "${command.replace(/"/g, '\\"')}"`);

      if (stderr) {
        return {
          isError: true,
          content: [
            {
              type: "text" as const,
              text: `Error in my_ps_tool: ${stderr}`,
            },
          ],
        };
      }

      return {
        content: [
          {
            type: "text" as const,
            text: stdout,
          },
        ],
      };
    } catch (error) {
      return {
        isError: true,
        content: [
          {
            type: "text" as const,
            text: `Error in my_ps_tool: ${(error as Error).message}`,
          },
        ],
      };
    }
  }
);

Соображения безопасности

  • Этот сервер выполняет команды PowerShell непосредственно в вашей системе.

  • Команды выполняются с теми же привилегиями, что и процесс, запускающий сервер MCP.

  • Будьте осторожны при раскрытии деструктивных операций

  • Рассмотрите возможность внедрения дополнительной проверки для конфиденциальных команд.

Поиск неисправностей

Общие проблемы

  1. Ограничения политики выполнения PowerShell

    • Возможно, вам придется настроить политику выполнения PowerShell, чтобы разрешить выполнение скрипта.

    • Используйте Set-ExecutionPolicy RemoteSigned -Scope CurrentUser для разрешения локальных скриптов.

  2. Ошибки «Путь не найден»

    • Убедитесь, что пути к файлам являются абсолютными или правильно указаны относительно рабочего каталога.

    • Используйте соответствующие разделители пути для вашей ОС.

  3. Ошибки «Команда не найдена»

    • Некоторые команды могут потребовать установки определенных модулей.

    • Используйте Install-Module ModuleName для установки необходимых модулей.

Лицензия

Массачусетский технологический институт

Install Server
A
security – no known vulnerabilities
F
license - not found
A
quality - confirmed to work

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/posidron/mcp-powershell'

If you have feedback or need assistance with the MCP directory API, please join our Discord server