VSA-X-MCP
Click on "Install 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 installed
Maintenance
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
- AlicenseAqualityBmaintenanceMCP server for Microsoft Dataverse API with safe-by-default configuration. Works with any Dataverse / Dynamics 365 environment.23237MIT
- Alicense-qualityBmaintenanceMCP server to query and manage CISA Known Exploited Vulnerabilities catalog with EPSS overlay, enabling vulnerability checks and remediation deadline tracking.MIT
- Alicense-qualityBmaintenanceA 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
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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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