bitdefender-gravityzone-mcp
v1.0.1
Published
MCP Server for Bitdefender GravityZone Cloud API
Readme
Bitdefender GravityZone MCP Server
MCP server for Bitdefender GravityZone Cloud API using TypeScript and stdio transport.
Supported services
bitdefender_server_infobitdefender_accountsbitdefender_companiesbitdefender_networkbitdefender_policiesbitdefender_incidentsbitdefender_licensingbitdefender_reportsbitdefender_sandbox_reportbitdefender_push
Each service tool accepts:
method: GravityZone JSON-RPC method name from the allowed listparams: raw JSON object forwarded to GravityZoneversion: API version, when the service supports multiple versions
Environment variables
Copy .env.example to .env and set:
BITDEFENDER_API_KEY=your_api_key_here
BITDEFENDER_API_BASE_URL=https://cloud.gravityzone.bitdefender.com/apiIf you already keep secrets in an external env file, do not hardcode them in source code or MCP config. Instead, point the server at that file with BITDEFENDER_ENV_FILE.
For EU cloud, use:
BITDEFENDER_API_BASE_URL=https://cloudgz.gravityzone.bitdefender.com/apiInstall
npm install
npm run buildRun locally
BITDEFENDER_API_KEY=your_api_key_here npm run devRun on demand with pnpm dlx
After the first npm release, you can run it without keeping a local clone:
pnpm dlx bitdefender-gravityzone-mcpRecommended MCP config after publish:
{
"mcpServers": {
"bitdefender-gravityzone": {
"command": "pnpm",
"args": ["dlx", "bitdefender-gravityzone-mcp"],
"env": {
"BITDEFENDER_ENV_FILE": "/home/rookief/.env/bitdefender.env"
}
}
}
}If you publish under a scope, replace the package name accordingly, for example @your-scope/bitdefender-gravityzone-mcp.
Release flow
The first release means the first public package version and GitHub release, for example v1.0.0.
This repository is set up so that:
- pushing a tag like
v1.0.0triggers npm publish - the workflow checks that the tag matches
package.jsonversion - GitHub release notes are generated automatically
Recommended: use npm Trusted Publishing with GitHub Actions OIDC instead of storing NPM_TOKEN.
That means:
- no long-lived npm token stored in GitHub secrets
- npm trusts this GitHub repository/workflow to publish
- safer for multiple projects because each repo can be explicitly authorized
One-time npm setup is still required in npm package settings to trust this repository.
Fallback option: if you do not want OIDC yet, you can still use a repo secret named NPM_TOKEN and switch the workflow back to token-based publish.
Release commands:
npm version patch
git push origin main --follow-tagsIf you want to release 1.0.0 exactly and the package already has that version, create and push the tag directly:
git tag v1.0.0
git push origin v1.0.0Example MCP config
Add this server to your MCP client config:
{
"mcpServers": {
"bitdefender-gravityzone": {
"command": "node",
"args": ["/absolute/path/to/bitdefender/dist/index.js"],
"env": {
"BITDEFENDER_ENV_FILE": "/absolute/path/to/bitdefender.env"
}
}
}
}Example for your WSL file path:
{
"mcpServers": {
"bitdefender-gravityzone": {
"command": "node",
"args": ["/absolute/path/to/bitdefender/dist/index.js"],
"env": {
"BITDEFENDER_ENV_FILE": "/home/rookief/.env/bitdefender.env"
}
}
}
}Use the real Linux path in WSL, not the vscode-remote://... URI.
Tool usage examples
Get accounts list
{
"method": "getAccountsList",
"params": {
"page": 1,
"perPage": 50
}
}Get endpoints list
{
"method": "getEndpointsList",
"version": "v1.1",
"params": {
"page": 1,
"perPage": 100
}
}Get license info
{
"method": "getLicenseInfo",
"params": {}
}Notes
- Authentication uses HTTP Basic Auth with
API_KEY:encoded as base64. - GravityZone Cloud API uses JSON-RPC 2.0 over HTTP POST.
- Rate limiting is enforced by Bitdefender. If you hit a limit, the API returns
429withRetry-After. - This server forwards
paramsas-is so you can use new or niche API fields without changing the MCP code.
