mcp-pulseway
v1.0.0
Published
MCP server exposing the full Pulseway REST API v3 as tools for AI assistants (Windsurf, Claude Desktop, etc.)
Maintainers
Readme
MCP Pulseway
A Model Context Protocol (MCP) server that exposes the full Pulseway REST API v3 as tools — letting AI assistants (Windsurf Cascade, Claude Desktop, etc.) manage your RMM infrastructure through natural language.
Features
- 48 tools covering every Pulseway API v3 endpoint
- Devices, Assets, Automation (Workflows / Tasks / Scripts), Notifications, Webhooks, Organizations, Sites, Groups, Custom Fields, Scopes, Patch Management, Endpoint Protection, Environment, and Audit Logs
- Stdio transport — works with any MCP-compatible client
- Zero config files — credentials passed via environment variables
Prerequisites
- Node.js ≥ 18 (uses native
fetch) - A Pulseway account with API access enabled
- A Token ID and Token Secret from Pulseway (Settings → API Tokens)
Installation
git clone https://github.com/KaosKyun/MCP-Pulseway.git
cd MCP-Pulseway
npm installConfiguration
Windsurf
Add to your mcp_config.json (usually ~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"Pulseway": {
"command": "npx",
"args": ["-y", "mcp-pulseway"],
"env": {
"PULSEWAY_BASE_URL": "https://<your-tenant>.pulseway.com/api/v3",
"PULSEWAY_TOKEN_ID": "<your-token-id>",
"PULSEWAY_TOKEN_SECRET": "<your-token-secret>"
}
}
}
}Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"pulseway": {
"command": "npx",
"args": ["-y", "mcp-pulseway"],
"env": {
"PULSEWAY_BASE_URL": "https://<your-tenant>.pulseway.com/api/v3",
"PULSEWAY_TOKEN_ID": "<your-token-id>",
"PULSEWAY_TOKEN_SECRET": "<your-token-secret>"
}
}
}
}Environment Variables
| Variable | Description |
|---|---|
| PULSEWAY_BASE_URL | Your tenant API URL. Format: https://<tenant>.pulseway.com/api/v3. Find your tenant name in your Pulseway webapp URL (e.g. https://acme.pulseway.com → tenant is acme). |
| PULSEWAY_TOKEN_ID | API Token ID from Pulseway Settings → API Tokens. |
| PULSEWAY_TOKEN_SECRET | API Token Secret associated with the Token ID. |
Available Tools (48)
Devices
| Tool | Description |
|---|---|
| get_devices | List all monitored devices |
| get_device | Get details of a specific device |
| get_device_notifications | Get notifications for a device |
| get_device_antivirus | Get antivirus status |
| get_device_custom_fields | Get custom fields for a device |
| get_device_policies | Get applied policies |
| move_device | Move a device to another group |
Device Assets
| Tool | Description |
|---|---|
| get_assets | Get all device assets |
| get_device_assets | Get assets for a specific device |
Automation – Workflows
| Tool | Description |
|---|---|
| get_workflows | List all workflows |
| get_workflow | Get a specific workflow |
| run_workflow | Execute a workflow |
| get_workflow_executions | Get execution history |
| get_workflow_execution_details | Get execution details |
Automation – Tasks
| Tool | Description |
|---|---|
| get_tasks | List all tasks |
| get_task | Get a specific task |
| run_task | Execute a task |
| get_task_execution | Get execution details |
| get_task_execution_devices | Get devices in an execution |
| get_task_execution_scripts | Get scripts in an execution |
| get_task_execution_script_output | Get script output |
Automation – Scripts
| Tool | Description |
|---|---|
| get_scripts | List all scripts |
| get_script | Get a specific script |
| run_script | Run a script on a device |
| get_script_executions | Get execution history |
| get_script_execution_details | Get execution details |
Notifications
| Tool | Description |
|---|---|
| get_notifications | List all notifications |
| get_notification | Get a specific notification |
| send_notification | Send a push notification |
| delete_notification | Delete a notification |
Notification Webhooks
| Tool | Description |
|---|---|
| get_notification_webhooks | List all webhooks |
| get_notification_webhook | Get a specific webhook |
| create_notification_webhook | Create a webhook |
| update_notification_webhook | Update a webhook |
| delete_notification_webhook | Delete a webhook |
Organizations
| Tool | Description |
|---|---|
| get_organizations | List all organizations |
| get_organization | Get a specific organization |
| create_organization | Create an organization |
| update_organization | Update an organization |
| get_organization_custom_fields | Get custom fields |
Sites
| Tool | Description |
|---|---|
| get_sites | List all sites |
| get_site | Get a specific site |
| create_site | Create a site |
| update_site | Update a site |
| get_site_custom_fields | Get custom fields |
Groups
| Tool | Description |
|---|---|
| get_groups | List all groups |
| get_group | Get a specific group |
| create_group | Create a group |
| update_group | Update a group |
| get_group_custom_fields | Get custom fields |
Custom Fields
| Tool | Description |
|---|---|
| get_custom_fields | List all custom fields |
| get_custom_field | Get a specific custom field |
| get_custom_field_usage | Get usage info |
| assign_custom_field | Assign a custom field |
| update_custom_field_assignment | Update assignment value |
| unassign_custom_field | Remove assignment |
Other
| Tool | Description |
|---|---|
| get_scopes / get_scope / get_scope_usage | Scopes management |
| get_patch_policy / get_patch_global_rules | Patch management |
| get_endpoint_protection_policy | Endpoint protection |
| get_environment | Environment info |
| get_audit_logs | Audit log entries |
Usage Examples
Once configured, you can ask your AI assistant things like:
- "List all my devices"
- "Run workflow 5 on SRV-DEV-01"
- "Show me the antivirus status of all servers"
- "Send a critical notification to my phone"
- "What scripts ran on HOME-PC last week?"
Contributing
Contributions are welcome! Please open an issue or submit a pull request.
License
This project is licensed under the MIT License — see the LICENSE file for details.
