VSA-X-MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@VSA-X-MCPlist devices in the Production group"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Copy
.env.sampleto.envand configure:VSA_SERVER_NAME=your-vsa-server.example VSA_API_PATH=/api/v3 PORT=3000 READ_ONLY=trueInstall dependencies:
npm installStart the server:
npm start
Related MCP server: cisa-kev-mcp
Configuration
Environment Variables
Variable | Required | Description |
| Yes | VSA X server hostname (e.g., |
| Yes | API path prefix (default: |
| No | Alternative: full base URL (legacy, for backwards compatibility) |
| No | Server port (default: |
| No | Block destructive operations when |
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/devicesEndpoints
Health
GET /health— Health check
Devices
GET /devices— List all devices with optional pagination, filtering, and sortingQuery params:
$top,$skip,$filter,$orderby,$count,scopeIdExample:
GET /devices?$top=50&$skip=0&$filter=contains(tolower(Name),'server')
GET /devices/:id— Get device detailsGET /devices/:id/assets— Get assets for a specific device
Organizations
GET /organizations— List organizations with optional pagination, filtering, and sortingQuery params:
$top,$skip,$filter,$orderby,$countExample:
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 |
| Maximum items to return (pagination) |
|
| Number of items to skip (pagination) |
|
| Filter results using OData syntax |
|
| Sort results by one or more fields |
|
| Include total count in response metadata |
|
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 blockedTo enable writes, set
READ_ONLY=falseor includeconfirm_destructive_action=truein the request
Testing
Run tests with:
npm testAPI Documentation
See openapi.yaml for complete API specification and schema details.
This server cannot be deployed
Maintenance
Related MCP Connectors
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
XFA's remote MCP server — query device posture, compliance, policies & CVEs. Read-only.
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for Microsoft Dataverse API with safe-by-default configuration. Works with any Dataverse / Dynamics 365 environment.2326 npm7MIT
- AlicenseNot gradedqualityDmaintenanceMCP server to query and manage CISA Known Exploited Vulnerabilities catalog with EPSS overlay, enabling vulnerability checks and remediation deadline tracking.42 PyPIMIT
- AlicenseNot gradedqualityBmaintenanceA 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
- AlicenseAqualityCmaintenanceMCP server for the Snipe-IT asset management REST API, enabling read and write operations on assets, licenses, accessories, and more.13Apache 2.0