Commvault

by chandansgowda-cv

Not rated
GitHub

About

Interact with Commvault software to access job details, security posture, and SLA status of the commcell.

Details

Author
chandansgowda-cv
Categories
Cloud Service, Infrastructure

2. Authentication & Security Configuration

The Commvault MCP Server supports two authentication methods:

Note:OAuth authentication is only supported for Commvault environments runningSP42 CU 27 and above. OAuth must be properly configured in the CommServe before using this option.

When using OAuth authentication, you'll need:

- Discovery Endpoint URL:The OAuth discovery/metadata endpoint
- Client ID:Your OAuth application's client identifier
- Client Secret:Your OAuth application's client secret
- Required Scopes:Required OAuth scopes
- Base URL:Base URL of the MCP Server

Important:The redirect URI must be set toOAUTH_BASE_URL/auth/callbackin your OAuth provider's app/client configuration.

The following values will be collected during the setup process:

-

Commvault Access Credentials:You need a validaccess_tokenandrefresh_tokento authenticate with the Commvault API. Learn how to generate these tokens here:](https://github.com/astral-sh/uv)Creating an Access Token – Commvault Docs

Secret Key:This secret must be included by theMCP Clientin theAuthorizationheader of all tool requests. It acts as a security layer for tool access in remote server. You can set your own.

Important:When using traditional token-based authentication, the setup script requires a secure, OS-native keyring backend to store sensitive credentials securely. Only secure backends are allowed for security reasons.

Running multiple MCP servers on the same host?The OS keyring is per-user, so by default every install writes to the same keyring slots and the most recentsetup.pyrun overwrites the previous install's credentials. Set a uniqueMCP_INSTANCE_IDper install — seeRunning Multiple Instances on the Same HostunderAdditional Configuration.

git clone https://github.com/Commvault/commvault-mcp-server.git cd commvault-mcp-server

The setup script will guide you through configuration options including:

- Metallic or on-premise deployment— for Metallic setups, the gateway URL is configured automatically
- Transport mode (stdio, streamable-http, or sse)
- Server connection details (for remote modes)
- Authentication method (traditional tokens or OAuth)
- OAuth configuration (if selected)
- Secure token storage

When prompted"Is this a Metallic setup?", selectyes. The setup script will automatically configure:

No additional configuration is needed for the server URL; all other setup steps (transport mode, authentication, etc.) proceed as normal.

For production deployments, it is recommended to use a reverse proxy with TLS/HTTPS and security headers. The MCP server should bind to127.0.0.1(localhost only) to prevent direct public access.
- Configure MCP Server for localhost: SetMCP_HOST=127.0.0.1in your.envfile
- Install reverse proxy: Choose nginx or Caddy
- Configure TLS: Use Let's Encrypt for automatic certificate management
- Add security headers: Configure
OWASP-recommendedheaders (HSTS, X-Frame-Options, CSP, etc.)
- Update client config: Usehttps://your-domain.com/mcpinstead ofhttp://HOST:PORT/mcp

The Docker image runs the server inOAuth mode only.

Prerequisites:Docker installed, and a Commvault environment runningSP42 CU 27 or abovewith OAuth configured.

Run the interactive setup script on your host machine. When prompted for the authentication method, selectOAuth.

This produces a.envfile with all required variables, including the OAuth endpoints and credentials.

Pass the generated.envfile to the container at runtime:

docker run --rm -p 9090:9090 --env-file .env commvault-mcp-server

Note:npxis required while using Token-Based Authentication. You can get it by installingNode.jswhich includesnpxby default.

Refer to your AI client’s documentation for integration steps. For example, Claude requires specifying a server name and the MCP server URL in its connector configuration.

{ "mcpServers": { "Commvault": { "command": "npx", "args": ["mcp-remote", "HOST:PORT/mcp", "--header", "Authorization: <secret stored in server keyring>"] } } }
{ "mcpServers": { "Commvault": { "command": "cmd", "args": ["/c", "npx", "mcp-remote", "HOST:PORT/mcp", "--header", "Authorization: <secret stored in server keyring>"] } } }
{ "mcpServers": { "Commvault": { "command": "npx", "args": ["mcp-remote", "HOST:PORT/mcp", "--header", "Authorization: <secret stored in server keyring>", "--allow-http"] } } }
{ "mcpServers": { "Commvault": { "command": "C:\\YOUR\\PATH\\TO\\commvault-mcp-server\\.venv\\bin\\python", "args": [ "C:\\YOUR\\PATH\\TO\\commvault-mcp-server\\src\\server.py" ] } } }
{ "mcpServers": { "Commvault": { "command": "C:\\YOUR\\PATH\\TO\\commvault-mcp-server\\.venv\\Scripts\\python.exe", "args": [ "C:\\YOUR\\PATH\\TO\\commvault-mcp-server\\src\\server.py" ] } } }

Note:These are optional configurations that extend the MCP server's capabilities.

The OS keyring used to store the server secret and Commvault API tokens isper-user. By default every install of the MCP server on a given host writes to the same keyring entries under the service namecommvault-mcp-server. If you run two or more MCP server installs under the same OS user, each rerun ofsetup.pysilently overwrites the other instances' credentials, which typically surfaces as a401 Invalid tokenafter a restart or reboot of the unaffected instance.

To run multiple MCP server instances on the same host under the same OS user, set a uniqueMCP_INSTANCE_IDper install. The setup script prompts for it at the start; you can also set it directly in each install's.env:

# Instance A's .env MCP_INSTANCE_ID=prod # Instance B's .env MCP_INSTANCE_ID=dr

With an instance ID set, the keyring service name becomescommvault-mcp-server:<MCP_INSTANCE_ID>, isolating each install'sserver_secret,server_secret_expiry,access_token, andrefresh_token.

- Allowed characters: letters, digits,.,-,_(max 32 chars).
- LeavingMCP_INSTANCE_IDunset (or setting it todefault) preserves the original behaviour and reuses the existingcommvault-mcp-serverkeyring entries, soexisting single-instance installs do not need to do anything.
- Each install should still live in its own directory with its own.envso transport mode, port,CC_SERVER_URL, etc. don't collide. The instance ID only namespaces the keyring.
- After changingMCP_INSTANCE_IDfor an existing install, rerunuv run setup.pyso the secret and tokens are written under the new namespaced service name.
- Alternative isolation strategies that also work: run each instance under a dedicated OS user, or in its own host/VM/container.

When deployed behind a reverse proxy or load balancer, configureTRUSTED_PROXY_IPSenvironment variable with comma-separated proxy IP addresses to enable per-client rate limiting using theX-Forwarded-Forheader. For example:

export TRUSTED_PROXY_IPS="10.0.0.1,10.0.0.2,192.168.1.100"

The Salesforce integration enables browsing of backed-up Salesforce records stored in Commvault. It provides two tools:
- Environment Variable: SetENABLE_SALESFORCE_TOOLS=truein your environment
- Commvault Salesforce Backup: At least one Salesforce organisation must be configured and backed up in Commvault

To browse backed-upAccountrecords for a Salesforce org:

Get all backed-up Account records for Salesforce org 00D2w000005mBCpEAM

The tool will automatically resolve the org ID to a Commvault client and return the latest backed-up records.

The DocuSign backup integration enables backup of completed DocuSign envelopes to a Commvault S3 vault. This integration provides comprehensive document management capabilities including backup, listing, and restore operations.
- Environment Variable: SetENABLE_DOCUSIGN_TOOLS=truein your environment
- Commvault S3 Vault: Configure an S3 endpoint in Commvault

- Learn more:[Getting Started with S3 Vault

Create the following files in theconfig/directory:

1. DocuSign Configuration (docusign_config.json)

Based on the template fileconfig/docusign_config_template.json:

{ "docusign": { "integrationKey": "YOUR_INTEGRATION_KEY_HERE", "userId": "YOUR_USER_ID_HERE", "authServer": "account-d.docusign.com", "scopes": "signature impersonation", "basePath": "https://demo.docusign.net/restapi" }, "fromDate": "2024-07-01T00:00:00Z" }

AModel Context Protocol (MCP)server for seamless integration withCommvaultenvironments. This server enables AI agents to securely access and manage job details, commcell metrics, client and storage information, user permissions, plan configurations, and backup schedules.

The Commvault MCP Server enables seamless integration with Commvault environments, offering the following:

Before running the Commvault MCP Server, ensure the following requirements are met:

- Python 3.11 or higher
-
uvpackage manager (used for dependency management and running the server)

2. Authentication & Security Configuration

The Commvault MCP Server supports two authentication methods:

Note:OAuth authentication is only supported for Commvault environments runningSP42 CU 27 and above. OAuth must be properly configured in the CommServe before using this option.

When using OAuth authentication, you'll need:

- Discovery Endpoint URL:The OAuth discovery/metadata endpoint
- Client ID:Your OAuth application's client identifier
- Client Secret:Your OAuth application's client secret
- Required Scopes:Required OAuth scopes
- Base URL:Base URL of the MCP Server

Important:The redirect URI must be set toOAUTH_BASE_URL/auth/callbackin your OAuth provider's app/client configuration.

The following values will be collected during the setup process:

-

Commvault Access Credentials:You need a validaccess_tokenandrefresh_tokento authenticate with the Commvault API. Learn how to generate these tokens here:Creating an Access Token – Commvault Docs

Secret Key:This secret must be included by theMCP Clientin theAuthorizationheader of all tool requests. It acts as a security layer for tool access in remote server. You can set your own.

Important:When using traditional token-based authentication, the setup script requires a secure, OS-native keyring backend to store sensitive credentials securely. Only secure backends are allowed for security reasons.

Running multiple MCP servers on the same host?The OS keyring is per-user, so by default every install writes to the same keyring slots and the most recentsetup.pyrun overwrites the previous install's credentials. Set a uniqueMCP_INSTANCE_IDper install — seeRunning Multiple Instances on the Same HostunderAdditional Configuration.

git clone https://github.com/Commvault/commvault-mcp-server.git cd commvault-mcp-server

The setup script will guide you through configuration options including:

- Metallic or on-premise deployment— for Metallic setups, the gateway URL is configured automatically
- Transport mode (stdio, streamable-http, or sse)
- Server connection details (for remote modes)
- Authentication method (traditional tokens or OAuth)
- OAuth configuration (if selected)
- Secure token storage

When prompted"Is this a Metallic setup?", selectyes. The setup script will automatically configure:

No additional configuration is needed for the server URL; all other setup steps (transport mode, authentication, etc.) proceed as normal.

For production deployments, it is recommended to use a reverse proxy with TLS/HTTPS and security headers. The MCP server should bind to127.0.0.1(localhost only) to prevent direct public access.
- Configure MCP Server for localhost: SetMCP_HOST=127.0.0.1in your.envfile
- Install reverse proxy: Choose nginx or Caddy
- Configure TLS: Use Let's Encrypt for automatic certificate management
- Add security headers: Configure
OWASP-recommendedheaders (HSTS, X-Frame-Options, CSP, etc.)
- Update client config: Usehttps://your-domain.com/mcpinstead ofhttp://HOST:PORT/mcp

The Docker image runs the server inOAuth mode only.

Prerequisites:Docker installed, and a Commvault environment runningSP42 CU 27 or abovewith OAuth configured.

Run the interactive setup script on your host machine. When prompted for the authentication method, selectOAuth.

This produces a.envfile with all required variables, including the OAuth endpoints and credentials.

Pass the generated.envfile to the container at runtime:

docker run --rm -p 9090:9090 --env-file .env commvault-mcp-server

Note:npxis required while using Token-Based Authentication. You can get it by installingNode.jswhich includesnpxby default.

Refer to your AI client’s documentation for integration steps. For example, Claude requires specifying a server name and the MCP server URL in its connector configuration.

{ "mcpServers": { "Commvault": { "command": "npx", "args": ["mcp-remote", "HOST:PORT/mcp", "--header", "Authorization: <secret stored in server keyring>"] } } }
{ "mcpServers": { "Commvault": { "command": "cmd", "args": ["/c", "npx", "mcp-remote", "HOST:PORT/mcp", "--header", "Authorization: <secret stored in server keyring>"] } } }
{ "mcpServers": { "Commvault": { "command": "npx", "args": ["mcp-remote", "HOST:PORT/mcp", "--header", "Authorization: <secret stored in server keyring>", "--allow-http"] } } }
{ "mcpServers": { "Commvault": { "command": "C:\\YOUR\\PATH\\TO\\commvault-mcp-server\\.venv\\bin\\python", "args": [ "C:\\YOUR\\PATH\\TO\\commvault-mcp-server\\src\\server.py" ] } } }
{ "mcpServers": { "Commvault": { "command": "C:\\YOUR\\PATH\\TO\\commvault-mcp-server\\.venv\\Scripts\\python.exe", "args": [ "C:\\YOUR\\PATH\\TO\\commvault-mcp-server\\src\\server.py" ] } } }

Note:These are optional configurations that extend the MCP server's capabilities.

The OS keyring used to store the server secret and Commvault API tokens isper-user. By default every install of the MCP server on a given host writes to the same keyring entries under the service namecommvault-mcp-server. If you run two or more MCP server installs under the same OS user, each rerun ofsetup.pysilently overwrites the other instances' credentials, which typically surfaces as a401 Invalid tokenafter a restart or reboot of the unaffected instance.

To run multiple MCP server instances on the same host under the same OS user, set a uniqueMCP_INSTANCE_IDper install. The setup script prompts for it at the start; you can also set it directly in each install's.env:

# Instance A's .env MCP_INSTANCE_ID=prod # Instance B's .env MCP_INSTANCE_ID=dr

With an instance ID set, the keyring service name becomescommvault-mcp-server:<MCP_INSTANCE_ID>, isolating each install'sserver_secret,server_secret_expiry,access_token, andrefresh_token.

- Allowed characters: letters, digits,.,-,_(max 32 chars).
- LeavingMCP_INSTANCE_IDunset (or setting it todefault) preserves the original behaviour and reuses the existingcommvault-mcp-serverkeyring entries, soexisting single-instance installs do not need to do anything.
- Each install should still live in its own directory with its own.envso transport mode, port,CC_SERVER_URL, etc. don't collide. The instance ID only namespaces the keyring.
- After changingMCP_INSTANCE_IDfor an existing install, rerunuv run setup.pyso the secret and tokens are written under the new namespaced service name.
- Alternative isolation strategies that also work: run each instance under a dedicated OS user, or in its own host/VM/container.

When deployed behind a reverse proxy or load balancer, configureTRUSTED_PROXY_IPSenvironment variable with comma-separated proxy IP addresses to enable per-client rate limiting using theX-Forwarded-Forheader. For example:

export TRUSTED_PROXY_IPS="10.0.0.1,10.0.0.2,192.168.1.100"

The Salesforce integration enables browsing of backed-up Salesforce records stored in Commvault. It provides two tools:
- Environment Variable: SetENABLE_SALESFORCE_TOOLS=truein your environment
- Commvault Salesforce Backup: At least one Salesforce organisation must be configured and backed up in Commvault

To browse backed-upAccountrecords for a Salesforce org:

Get all backed-up Account records for Salesforce org 00D2w000005mBCpEAM

The tool will automatically resolve the org ID to a Commvault client and return the latest backed-up records.

The DocuSign backup integration enables backup of completed DocuSign envelopes to a Commvault S3 vault. This integration provides comprehensive document management capabilities including backup, listing, and restore operations.
- Environment Variable: SetENABLE_DOCUSIGN_TOOLS=truein your environment
- Commvault S3 Vault: Configure an S3 endpoint in Commvault

- Learn more:Getting Started with S3 Vault

Create the following files in theconfig/directory:

1. DocuSign Configuration (docusign_config.json)

Based on the template fileconfig/docusign_config_template.json:

{ "docusign": { "integrationKey": "YOUR_INTEGRATION_KEY_HERE", "userId": "YOUR_USER_ID_HERE", "authServer": "account-d.docusign.com", "scopes": "signature impersonation", "basePath": "https://demo.docusign.net/restapi" }, "fromDate": "2024-07-01T00:00:00Z" }

2. DocuSign Private Key (docusign_key.pem)

Place your DocuSign private key file in theconfig/directory asdocusign_key.pem.

We do not recommend usingLiteLLMas an MCP client. LiteLLM's per-turn session lifecycle triggers cosmeticClosedResourceErrortracebacks in the server terminal due to a race condition in the upstreammcpPython SDK — these are harmless but noisy.

Multi-Server Trust Boundary (Tool Poisoning & Tool Shadowing)

The MCP protocol enforcesno isolation between serversthat share a single agent session. Any other MCP server running in the same session as the Commvault MCP has the practical ability to influence the agent's reasoning about Commvault operations, even without direct access to CommServe or any privileges against it.

Two attack paths follow from this architectural property:

- Tool Poisoning— A malicious server's tool description coerces the agent to read the operator's stored Commvault auth token from host-side storage (e.g.~/.claude.json, a project-level.mcp.json, or the OS keychain entry forcommvault-mcp-server) and pass the token value as a parameter to an attacker-controlled tool, which then exfiltrates it.
- Tool Shadowing— A malicious server's tool description names Commvault tool identifiers (e.g.kill_job,disable_schedule,set_user_enabled) and instructs the agent to perform additional or modified Commvault operations whenever the operator legitimately invokes those tools. The Commvault MCP itself is the actor in these calls; its code and responses are not corrupted. The corruption lives in the agent's reasoning, induced by the third-party server's metadata.

Neither path requires any defect in the Commvault MCP Server code. Both are properties of the MCP architecture as currently specified.

- Install only first-party or independently audited MCP servers in agent sessions that include Commvault tools.
- Where feasible, use anisolated agent sessionin which the Commvault MCP is the only integration.
- Where isolation is not feasible, restrict the agent's general filesystem and outbound-network tool capabilities for the duration of the session.

- Use short-lived access tokens with explicit refreshrather than long-lived bearer tokens. A bounded token lifetime limits the window during which an exfiltrated credential remains usable, and rotation invalidates leaked tokens before an attacker can act on them.
- Restrict outbound traffic from the MCP host.Where your environment supports it, apply a network policy that limits outbound HTTP/HTTPS from the host running the MCP server to a documented allowlist. Unexpected outbound calls from an MCP host are the principal exfiltration channel for this class of attack and the most reliable detection signal.

- We're continuing to add more functionality to this MCP server. If you'd like to leave feedback, file a bug or provide a feature request, please open an issue on this repository.
- Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.

This project is licensed under the Apache License. See theLICENSEfile for details.

Navigate your Aiven projects and interact with the PostgreSQL®, Apache Kafka®, ClickHouse® and OpenSearch® services

Yunxiao MCP Server provides AI assistants with the ability to interact with the Yunxiao platform.

Get prescriptive CDK advice, explain CDK Nag rules, check suppressions, generate Bedrock Agent schemas, and discover AWS Solutions Constructs patterns.

This AWS Labs Model Context Protocol (MCP) server for CloudTrail enables your AI agents to query AWS account activity for security investigations, compliance auditing, and operational troubleshooting.

Core AWS MCP server providing prompt understanding and server management capabilities.

Analyze CDK projects to identify AWS services used and get pricing information from AWS pricing webpages and API.

Query and analyze your Axiom logs, traces, and all other event data in natural language

Manage and interact with Microsoft Azure services.

Bastion: External Attack Surface Monitoring

Ask your AI assistant about your attack surface: run scans, catch expiring certificates and domains, triage findings, and generate reports.

Agent-ready global image CDN that AI agents can install and operate through MCP.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.