使用说明
Commvault MCP服务器
A. 模型上下文协议(MCP) 服务器与 Commvault 环境。此服务器使AI代理能够安全地访问和管理作业详细信息、commcell指标、客户端和存储信息、用户权限、计划配置和备份时间表。
特征
Commvault MCP服务器可与Commvault环境无缝集成,提供以下功能:
| 类别 | 功能 |
|---|---|
| 作业管理 | •查看作业详细信息和历史记录 •控制作业(暂停、恢复、重新提交、终止) •监控作业状态和绩效 |
| 通讯单元管理 | •检索SLA状态和合规性 •查看安全态势和分数 •访问存储空间利用率指标 •获取通讯单元详细信息和实体计数 |
| 客户管理 | •访问客户组和客户信息 •管理子客户和客户财产 •查看客户关联 |
| 存储管理 | •查看存储策略和配置 •访问存储池信息 •监控存储资源 |
| 用户管理 | •列出用户和用户组 •访问安全关联 |
| 计划管理 | •查看平面配置和详细信息 •访问计划组件和设置 |
| 进度管理 | •访问备份时间表 •查看日程配置 •监控进度绩效 |
| DocuSign集成 | •设置文档库和工作流程 •将信封备份到Commvault S3保管库 •列出并恢复DocuSign信封备份 |
| Salesforce集成 | •将Salesforce组织ID解析为Commvault客户端 •从最新快照浏览备份的Salesforce对象记录 •使用可选的WHERE子句查询筛选记录 •分页访问大型记录集 |
先决条件
在运行Commvault MCP服务器之前,请确保满足以下要求:
1.Python环境
- Python 3.11或更高版本
uv包管理器(用于依赖关系管理和运行服务器)
2.身份验证和安全配置
Commvault MCP服务器支持两种身份验证方法:
Option 1: OAuth Authentication
注: OAuth身份验证仅支持运行Commvault的环境 SP42 CU 27及以上. 在使用此选项之前,必须在CommServe中正确配置OAuth。
使用OAuth身份验证时,您需要:
- 发现终结点URL: OAuth发现/元数据端点
- 客户端ID: OAuth应用程序的客户端标识符
- 客户端密码: OAuth应用程序的客户端密钥
- 所需范围: 所需的OAuth作用域
- 基本URL: MCP服务器的基本URL
重要提示: 重定向URI必须设置为
OAUTH_BASE_URL/auth/callback在OAuth提供商的应用程序/客户端配置中。
Option 2: Traditional Token-Based Authentication
在设置过程中将收集以下值:
-
Commvault访问凭据: 你需要一个有效的
access_token和refresh_token以通过Commvault API进行身份验证。 在此处了解如何生成这些令牌: 创建访问令牌-Commvault文档 -
密钥: 这个秘密必须包含在 MCP客户端 在
Authorization所有工具请求的标题。 它充当远程服务器中工具访问的安全层。你可以自己设置。
重要提示: 使用传统的基于令牌的身份验证时,安装脚本需要一个安全的、操作系统原生的密钥环后端来安全地存储敏感凭据。出于安全原因,只允许使用安全后端。
在同一主机上运行多个MCP服务器? 操作系统密钥环是针对每个用户的,因此默认情况下,每次安装都会写入相同的密钥环插槽和最新的
setup.pyrun会覆盖以前安装的凭据。设置唯一MCP_INSTANCE_ID每次安装--请参阅 在同一主机上运行多个实例 在...之下 附加配置.
按平台支持的安全后端
| 平台 | 支持的后端 | 描述 |
|---|---|---|
| 视窗 | WinVaultKeyring, WinCredentialStore |
使用Windows凭据管理器(Windows Vault)进行安全存储 |
| macOS | macOS Keyring |
使用本地macOS钥匙链进行安全存储 |
| Linux | SecretService (侏儒), KWallet (KDE) |
使用Freedesk Secret Service API(GNOME)或KWallet(KDE |
设置
1.克隆存储库
git clone https://github.com/Commvault/commvault-mcp-server.git
cd commvault-mcp-server
2.运行安装脚本
安装脚本将指导您完成配置选项,包括:
- 金属或内部部署 --对于Metall设置,网关URL是自动配置的
- 传输模式(stdio、可流式传输http或sse)
- 服务器连接详细信息(用于远程模式)
- 身份验证方法(传统令牌或OAuth)
- OAuth配置(如果选择)
- 安全令牌存储
uv run setup.py
Metallic (Cloud) Setup
当系统提示时 “这是金属装置吗?”,选择 是。安装脚本将自动配置:
- 网关URL:
https://api.metallic.io
服务器URL不需要额外配置;所有其他设置步骤(传输模式、身份验证等)正常进行。
3.启动MCP服务器
uv run -m src.server
Secure Production Deployment
对于生产部署,建议使用带有TLS/HTTPS和安全标头的反向代理。MCP服务器应绑定到 127.0.0.1 (仅限本地主机)以防止直接公共访问。
快速设置
- 为本地主机配置MCP服务器:设置
MCP_HOST=127.0.0.1在你的.env文件 - 安装反向代理:选择nginx或Caddy
- 配置TLS:使用Let's Encrypt进行自动证书管理
- 添加安全标头:配置 建议使用OWASP 标头(HSTS、X-Frame-Options、CSP等)
- 更新客户端配置:使用
https://your-domain.com/mcp而不是http://HOST:PORT/mcp
使用Docker运行
Docker镜像运行服务器 仅限OAuth模式.
先决条件: Docker已安装,Commvault环境正在运行 SP42 CU 27或以上 配置了OAuth。
1.生成一个 .env 文件
在主机上运行交互式安装脚本。当系统提示输入身份验证方法时,选择 认证.
uv run setup.py
这产生了一个 .env 包含所有必需变量的文件,包括OAuth端点和凭据。
2.塑造形象
docker build -t commvault-mcp-server .
3.运行容器
传递生成的 .env 运行时将文件保存到容器中:
docker run --rm -p 9090:9090 --env-file .env commvault-mcp-server
配置客户端
注:
npx使用基于令牌的身份验证时需要。您可以通过安装来获取它 Node.js 其中包括npx默认情况下。
While using OAuth
有关集成步骤,请参阅您的AI客户端的文档。例如,Claude要求在其连接器配置中指定服务器名称和MCP服务器URL。
Remote MCP Server (Streamable HTTP / SSE)
{
"mcpServers": {
"Commvault": {
"command": "npx",
"args": ["mcp-remote", "HOST:PORT/mcp", "--header", "Authorization: <secret stored in server keyring>"]
}
}
}
Remote MCP Server (Client on Windows)
{
"mcpServers": {
"Commvault": {
"command": "cmd",
"args": ["/c", "npx", "mcp-remote", "HOST:PORT/mcp", "--header", "Authorization: <secret stored in server keyring>"]
}
}
}
Remote MCP Server (HTTP)
{
"mcpServers": {
"Commvault": {
"command": "npx",
"args": ["mcp-remote", "HOST:PORT/mcp", "--header", "Authorization: <secret stored in server keyring>", "--allow-http"]
}
}
}
Local MCP Server (STDIO) - Unix
{
"mcpServers": {
"Commvault": {
"command": "C:\\YOUR\\PATH\\TO\\commvault-mcp-server\\.venv\\bin\\python",
"args": [
"C:\\YOUR\\PATH\\TO\\commvault-mcp-server\\src\\server.py"
]
}
}
}
Local MCP Server (STDIO) - Windows
{
"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"
]
}
}
}
附加配置
注: 这些是扩展MCP服务器功能的可选配置。
Running Multiple Instances on the Same Host
用于存储服务器机密和Commvault API令牌的OS密钥环是 每用户默认情况下,给定主机上每次安装MCP服务器都会写入服务名称下的相同密钥环条目 commvault-mcp-server。如果在同一操作系统用户下运行两个或多个MCP服务器安装,则每次重新运行 setup.py 静默地覆盖其他实例的凭据,这些凭据通常以 401 Invalid token 重新启动或重新引导未受影响的实例后。
要在同一操作系统用户下在同一主机上运行多个MCP服务器实例,请设置一个唯一的 MCP_INSTANCE_ID 每次安装。安装脚本在开始时会提示它;您还可以直接在每个安装中设置它 .env:
# Instance A's .env
MCP_INSTANCE_ID=prod
# Instance B's .env
MCP_INSTANCE_ID=dr
设置实例ID后,密钥环服务名称变为 commvault-mcp-server:<MCP_INSTANCE_ID>,隔离每个安装 server_secret, server_secret_expiry, access_token,以及 refresh_token.
规则和注意事项
- 允许的字符:字母、数字、,
.,-,_(最多32个字符)。 - 离开
MCP_INSTANCE_ID未设置(或将其设置为default)保留原始行为并重用现有行为commvault-mcp-server钥匙圈条目,所以 现有的单实例安装不需要做任何事情. - 每个安装仍应位于其自己的目录中,并有自己的
.env因此运输方式、港口、,CC_SERVER_URL等等,不要碰撞。实例ID仅对密钥环进行命名空间设置。 - 变更后
MCP_INSTANCE_ID对于现有安装,请重新运行uv run setup.py因此,秘密和令牌都写在新的命名空间服务名称下。 - 也有效的替代隔离策略:在专用操作系统用户下或在其自己的主机/VM/容器中运行每个实例。
Trusted Proxy Configuration
当部署在反向代理或负载均衡器后面时,请配置 TRUSTED_PROXY_IPS 使用逗号分隔的代理IP地址的环境变量启用每个客户端的速率限制 X-Forwarded-For 头球例如:
export TRUSTED_PROXY_IPS="10.0.0.1,10.0.0.2,192.168.1.100"
Salesforce Backup Integration
Salesforce集成允许浏览存储在Commvault中的备份Salesforce记录。它提供了两个工具:
| 工具 | 说明 |
|---|---|
get_salesforce_client |
将Salesforce组织ID(15或18个字符)解析为相应的Commvault clientId |
get_salesforce_records |
获取Salesforce对象的备份记录(例如。 Account, Contact, Opportunity)从最新的备份快照 |
先决条件
- 环境变量:设置
ENABLE_SALESFORCE_TOOLS=true在您的环境中 - Commvault Salesforce备份:必须在Commvault中配置和备份至少一个Salesforce组织
用法示例
浏览备份 Account Salesforce组织的记录:
Get all backed-up Account records for Salesforce org 00D2w000005mBCpEAM
该工具将自动将组织ID解析为Commvault客户端,并返回最新备份的记录。
参数 get_salesforce_records
| 参数 | 必填 | 说明 |
|---|---|---|
salesforce_org_id |
是 | Salesforce组织ID(15或18个字符) |
object_name |
是 | Salesforce API对象名称(例如。 Account, Contact) |
limit |
否 | 要返回的最大记录数(默认值 50,最大值 1000) |
offset |
否 | 分页偏移量(默认值 0) |
free_query |
否 | 可选的WHERE子句过滤器(例如。 "Name = 'Acme'") |
DocuSign Backup Integration
DocuSign备份集成可将已完成的DocuSsign信封备份到Commvault S3保管库。此集成提供了全面的文档管理功能,包括备份、列出和还原操作。
先决条件
- 环境变量:设置
ENABLE_DOCUSIGN_TOOLS=true在您的环境中 - Commvault S3保险库:在Commvault中配置S3端点
- 了解更多: S3 Vault入门
- DocuSign API访问:有效的DocuSign集成凭据
配置文件
在中创建以下文件 config/ 目录:
1.DocuSign配置(docusign_config.json)
基于模板文件 config/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私钥(docusign_key.pem)
将DocuSign私钥文件放在 config/ 目录为 docusign_key.pem.
LiteLLM注释
我们不建议使用 轻量级LLM 作为MCP客户端。LiteLLM的每轮会话生命周期触发美容 ClosedResourceError 由于上游的竞争情况,服务器终端中的回溯 mcp Python SDK——这些是无害的,但有噪音。
安全考虑
多服务器信任边界(工具中毒和工具阴影)
MCP协议强制执行 服务器之间没有隔离 共享单个代理会话。与Commvault MCP在同一会话中运行的任何其他MCP服务器都有实际能力影响代理对Commvault操作的推理,即使没有直接访问CommServe或任何特权。
此架构属性有两条攻击路径:
- 工具中毒 --恶意服务器的工具描述迫使代理从主机端存储中读取操作员存储的Commvault身份验证令牌(例如。
~/.claude.json,项目级别.mcp.json,或操作系统钥匙链条目commvault-mcp-server)并将令牌值作为参数传递给攻击者控制的工具,然后该工具将其泄露。 - 工具阴影 --恶意服务器的工具描述将Commvault工具标识符命名为(例如。
kill_job,disable_schedule,set_user_enabled)并指示代理在操作员合法调用这些工具时执行额外或修改后的Commvault操作。Commvault MCP本身就是这些呼吁的参与者;它的代码和响应没有损坏。腐败存在于代理的推理中,由第三方服务器的元数据引起。
这两条路径都不需要Commvault MCP服务器代码中的任何缺陷。两者都是当前指定的MCP架构的属性。
对操作员的建议:
- 在包含Commvault工具的代理会话中,仅安装第一方或独立审核的MCP服务器。
- 在可行的情况下,使用 隔离代理会话 其中Commvault MCP是唯一的集成。
- 如果隔离不可行,请在会话期间限制代理的通用文件系统和出站网络工具功能。
凭证卫生
- 使用带有显式刷新的短期访问令牌 而不是长期持有的代币。有界的令牌生命周期限制了泄露的凭据保持可用的窗口,并且在攻击者对其采取行动之前,轮换会使泄露的令牌无效。
- 限制来自MCP主机的出站流量。 在您的环境支持的情况下,应用一个网络策略,将运行MCP服务器的主机的出站HTTP/HTTPS限制为一个有记录的分配列表。来自MCP主机的意外出站呼叫是此类攻击的主要渗透通道,也是最可靠的检测信号。
贡献
- 我们将继续向此MCP服务器添加更多功能。如果您想留下反馈、提交错误或提供功能请求,请在此存储库上打开问题。
- 欢迎拉取请求!对于重大更改,请先打开一个问题来讨论您想要更改的内容。
许可证
此项目根据Apache许可证获得许可。请参阅 许可证 文件以获取详细信息。
