npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@teamnetwork-nz/vsa-mcp-server

v1.2.0

Published

MCP server for Kaseya VSA 9.5 REST API

Downloads

300

Readme

@teamnetwork-nz/vsa-mcp-server

MCP server for Kaseya VSA 9.5 — remote monitoring and management (RMM) via the VSA REST API.

Compatible with Claude Desktop, Claude Code, Cursor, Cline, and any MCP-capable client.

Requirements

  • Node.js 20+
  • Kaseya VSA 9.5 instance with REST API access
  • VSA personal token (VSA → User menu → Personal Tokens)

Installation

npx @teamnetwork-nz/vsa-mcp-server

Or install globally:

npm install -g @teamnetwork-nz/vsa-mcp-server
vsa-mcp-server

Configuration

Set these environment variables before starting the server:

Required

| Variable | Description | |---|---| | VSA_BASE_URL | Base URL of your VSA instance, e.g. https://vsa.example.com | | VSA_USERNAME | VSA username | | VSA_PERSONAL_TOKEN | Personal token from VSA → User menu → Personal Tokens |

Optional

| Variable | Default | Description | |---|---|---| | VSA_READWRITE | false | Set to true to enable write operations | | VSA_DATETIMEFORMAT | local | Timezone for date input/output — see Datetime handling |

Datetime handling

All VSA API timestamps are UTC. By default this server converts them automatically — inputs from local time to UTC (in OData filter expressions), outputs from UTC to local — so you never have to think about UTC offsets.

VSA_DATETIMEFORMAT controls which timezone is applied:

| Value | Behaviour | |---|---| | local (default) | Use the system's local timezone (Intl.DateTimeFormat auto-detection) | | IANA name e.g. Pacific/Auckland | Use this explicit timezone regardless of system locale | | UTC | No conversion — dates pass through unchanged |

Output dates are returned as strings with a short timezone name, e.g. 2026-05-09 13:44:56 NZST.

OData filter dates should be written as local wall-clock time using the OData datetime literal format: datetime'2024-01-15T09:00:00'. The server converts them to UTC before sending to the API.

Claude Desktop configuration

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "vsa": {
      "command": "npx",
      "args": ["-y", "@teamnetwork-nz/vsa-mcp-server"],
      "env": {
        "VSA_BASE_URL": "https://vsa.example.com",
        "VSA_USERNAME": "your-username",
        "VSA_PERSONAL_TOKEN": "your-token"
      }
    }
  }
}

Claude Code configuration

claude mcp add vsa \
  -e VSA_BASE_URL=https://vsa.example.com \
  -e VSA_USERNAME=your-username \
  -e VSA_PERSONAL_TOKEN=your-token \
  -- npx -y @teamnetwork-nz/vsa-mcp-server

Available tools

Connection & authentication

| Tool | Description | |---|---| | vsa_test_connection | Test connectivity and verify credentials |

Organisations

| Tool | Description | |---|---| | vsa_list_orgs | List all organisations (clients) with OrgId, OrgRef, contact info | | vsa_get_org | Get full details for a specific organisation |

Agents

| Tool | Description | |---|---| | vsa_list_agents | List managed agents — filter by org, name, IP, or OData expression | | vsa_get_agent | Get full details for a specific agent by ID |

Assets & audit

| Tool | Description | |---|---| | vsa_list_assets | List asset records with hardware/OS details | | vsa_get_asset | Get full asset details for a specific asset ID | | vsa_get_asset_custom_fields | Get custom field values for an asset | | vsa_get_audit_summary | Hardware/OS/disk summary across agents — filter by org or agent | | vsa_run_audit | Trigger an audit on a specific agent immediately | | vsa_get_disk_volumes | Disk volume details (size, free space, drive letter) across all agents | | vsa_get_local_groups | Local user groups on a specific agent |

Procedures

| Tool | Description | |---|---| | vsa_list_procedures | List available agent procedures (automation scripts) | | vsa_run_procedure | Execute a procedure on a specific agent (runs asynchronously) | | vsa_get_procedure_history | Get execution history for a procedure |

Variables

| Tool | Description | |---|---| | vsa_list_agent_variables | List agent variable definitions | | vsa_set_agent_variable | Set a variable value on a specific agent |

Agent guidance

Organisation hierarchy

VSA organises agents into organisations and machine groups. The OrgRef from vsa_list_orgs (e.g. acme-81234) forms the MachineGroup path: root.<OrgRef>. Use this as the orgName parameter in vsa_list_agents.

OData filtering

All list tools support OData $filter, $orderby, $top, and $skip:

# Agents matching "server" in ComputerName
filter: substringof('server', ComputerName) eq true

# Agents in a specific org (use M suffix for Edm.Decimal OrgId)
filter: OrgId eq 42M

# Offline agents
filter: Online eq 0

Procedure execution

vsa_run_procedure dispatches the procedure asynchronously — the agent may not run it immediately. Use vsa_get_procedure_history to check the result after a short wait.

Read-only mode (default)

All write operations require VSA_READWRITE=true. In read-only mode, tools like vsa_run_procedure and vsa_run_audit are still registered (they are operational tools, not configuration writes) — but broader configuration changes require the flag.

Development

npm install
npm run build

# Run locally
VSA_BASE_URL=https://vsa.example.com \
VSA_USERNAME=your-username \
VSA_PERSONAL_TOKEN=your-token \
node dist/index.js

Test with the MCP inspector:

npx @modelcontextprotocol/inspector node dist/index.js

License

MIT