Skip to main content
Glama

vsa-x-mcp

MCP wrapper for VSA X API with centralized configuration and multiple endpoints for managing devices, assets, organizations, and rate limits.

Quick Start

  1. Copy .env.sample to .env and configure:

    VSA_SERVER_NAME=your-vsa-server.example
    VSA_API_PATH=/api/v3
    PORT=3000
    READ_ONLY=true
  2. Install dependencies:

    npm install
  3. Start the server:

    npm start

Related MCP server: cisa-kev-mcp

Configuration

Environment Variables

Variable

Required

Description

VSA_SERVER_NAME

Yes

VSA X server hostname (e.g., vsa.example.com)

VSA_API_PATH

Yes

API path prefix (default: /api/v3)

VSA_BASE_URL

No

Alternative: full base URL (legacy, for backwards compatibility)

PORT

No

Server port (default: 3000)

READ_ONLY

No

Block destructive operations when true (default: true)

Note: Use either VSA_SERVER_NAME + VSA_API_PATH (recommended) or VSA_BASE_URL (legacy).

Authentication

Clients authenticate using HTTP Basic Auth:

Authorization: Basic base64(TOKEN_ID:TOKEN_SECRET)

Example:

curl -u "your-token-id:your-token-secret" http://localhost:3000/devices

Endpoints

Health

  • GET /health — Health check

Devices

  • GET /devices — List all devices with optional pagination, filtering, and sorting

    • Query params: $top, $skip, $filter, $orderby, $count, scopeId

    • Example: GET /devices?$top=50&$skip=0&$filter=contains(tolower(Name),'server')

  • GET /devices/:id — Get device details

  • GET /devices/:id/assets — Get assets for a specific device

Organizations

  • GET /organizations — List organizations with optional pagination, filtering, and sorting

    • Query params: $top, $skip, $filter, $orderby, $count

    • Example: GET /organizations?$top=20&$orderby=Name

Rate Limits

  • GET /ratelimits — Get current rate limit status

Query Parameters

The list endpoints (/devices and /organizations) support OData query parameters for powerful filtering and pagination:

Parameter

Description

Example

$top

Maximum items to return (pagination)

$top=50

$skip

Number of items to skip (pagination)

$skip=100

$filter

Filter results using OData syntax

$filter=contains(tolower(Name),'prod')

$orderby

Sort results by one or more fields

$orderby=Name desc

$count

Include total count in response metadata

$count=true

Devices Endpoint - Filterable Properties

Use these properties in $filter expressions: Identifier, Name, GroupId, GroupName, IsAgentInstalled, IsMdmEnrolled, SiteId, SiteName, OrganizationId, OrganizationName

Also supports: scopeId parameter for filtering by scope ID

Devices Endpoint - Sortable Properties

Use these properties in $orderby expressions: Identifier, Name, GroupId, GroupName, IsAgentInstalled, IsMdmEnrolled, SiteId, SiteName, OrganizationId, OrganizationName

Example requests:

# Get first 50 devices sorted by name
curl -u TOKEN_ID:TOKEN_SECRET "http://localhost:3000/devices?$top=50&$orderby=Name"

# Find devices with agent installed and in a specific organization
curl -u TOKEN_ID:TOKEN_SECRET "http://localhost:3000/devices?$filter=IsAgentInstalled eq true and OrganizationName eq 'Acme Corp'&$top=50"

# Paginate through devices with specific group, sorted by name
curl -u TOKEN_ID:TOKEN_SECRET "http://localhost:3000/devices?$top=100&$skip=100&$filter=GroupName eq 'Production'&$orderby=Name"

# Find devices in a specific scope that are not MDM enrolled
curl -u TOKEN_ID:TOKEN_SECRET "http://localhost:3000/devices?scopeId=123&$filter=IsMdmEnrolled eq false&$top=50&$orderby=Name desc"

# Filter organizations by name with total count
curl -u TOKEN_ID:TOKEN_SECRET "http://localhost:3000/organizations?$filter=startswith(Name,'Production')&$count=true"

Features

  • ✅ Basic authentication forwarding per request

  • ✅ Centralized API URL configuration

  • ✅ Per-route write operation guards

  • ✅ Error handling with upstream error details

  • ✅ Rate limit headers forwarding

  • ✅ OpenAPI documentation (openapi.yaml)

Write Operations

Write operations are guarded by READ_ONLY environment variable:

  • When READ_ONLY=true (default), destructive operations are blocked

  • To enable writes, set READ_ONLY=false or include confirm_destructive_action=true in the request

Testing

Run tests with:

npm test

API Documentation

See openapi.yaml for complete API specification and schema details.

F
license - not found
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    MCP server for Microsoft Dataverse API with safe-by-default configuration. Works with any Dataverse / Dynamics 365 environment.
    23
    23
    7
    MIT
  • A
    license
    -
    quality
    B
    maintenance
    MCP server to query and manage CISA Known Exploited Vulnerabilities catalog with EPSS overlay, enabling vulnerability checks and remediation deadline tracking.
    MIT
  • A
    license
    -
    quality
    B
    maintenance
    A Model Context Protocol server for full Qualys portal management — expose VMDR, Policy Compliance, WAS, Cloud Agent, Container Security, TotalCloud, Patch Management, CSAM/GAV, EASM and administration to any MCP‑capable client.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for the Snipe-IT asset management REST API, enabling read and write operations on assets, licenses, accessories, and more.
    13
    Apache 2.0

View all related MCP servers

Related MCP Connectors

  • The official MCP Server from Mia-Platform to interact with Mia-Platform Console

  • MCP server for interacting with the Supabase platform

  • MCP server wrapping the Tesla Fleet API and TeslaMate API

View all MCP Connectors

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/perrytrienekens/VSAX-MCP'

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