VISO TRUST
官方通过AI助手直接访问和管理您的VISO TRUST第三方风险计划。
你可以用 VISO TRUST MCP 做什么?
- 按域名搜索供应商目录 — 使用
search_vendor_directory通过 URL 或域名在 VISO TRUST 中查找供应商。 - 管理第三方关系 — 使用
create_relationship、update_relationship和onboard_relationship等工具创建、更新、搜索、接入、移除或归档供应商关系。 - 运行并跟踪供应商评估 — 使用
create_assessment启动评估,通过get_assessment获取结果,并更新截止日期或后续设置。 - 审查审计日志活动 — 使用
get_user_audit_log_events和get_audit_log_events查询指定时间范围内的用户或完整审计事件。 - 导入外部情报报告 — 使用
create_bitsight_intelligence_report、create_security_scorecard_intelligence_report或create_recorded_future_intelligence_report提交 BitSight、SecurityScorecard 或 Recorded Future 报告。 - 配置 Webhook — 使用
create_webhook_configuration、update_webhook_configuration和get_all_webhooks创建、更新、删除或检查 Webhook 配置。
文档
VISO TRUST MCP 服务器
一个模型上下文协议 (MCP) 服务器,用于将 VISO TRUST API 功能与 AI 助手集成。
托管远程服务器
VISO TRUST 托管了此 MCP 服务器的一个受管实例,因此您无需构建、运行或自行托管任何内容即可开始使用:
https://mcp.visotrust.com/mcp
使用 Streamable HTTP 传输协议将任何 MCP 客户端连接到此端点,并使用您的 VISO TRUST API 令牌进行身份验证。有关如何生成 API 令牌的信息,请参阅 VISO TRUST 支持文档。
客户端配置示例:
{
"mcpServers": {
"viso-mcp": {
"type": "streamable-http",
"url": "https://mcp.visotrust.com/mcp",
"headers": {
"Authorization": "Bearer <your-api-token>"
}
}
}
}
要使用 MCP Inspector 测试托管端点,请运行 npx @modelcontextprotocol/inspector,将 传输类型 设置为 Streamable HTTP,并使用上述 URL。
本文档的其余部分涵盖了自行运行服务器(本地或在您自己的基础设施中)。
要求
- Java 21+
- Gradle
- Docker(可选,用于容器化部署)
- MCP Inspector(可选,用于测试)
配置
VISO TRUST API 配置
可以为 VISO TRUST API 配置以下属性:
visotrust.api.base-url:VISO TRUST API 的基础 URL(默认:http://localhost:8080)visotrust.api.token:来自 VISO TRUST 平台的 API 令牌(必需)visotrust.api.timeout:API 请求超时时间(毫秒)(默认:30000)visotrust.api.connect-timeout:API 连接超时时间(毫秒)(默认:5000)
有关如何为 visotrust.api.token 环境变量生成 API 令牌的信息,请参阅 VISO TRUST 支持文档。
应用程序配置文件
此应用程序支持 Spring Boot 配置文件,以便为不同的部署场景启用不同的配置。
远程配置文件
remote 配置文件专为 通过 Streamable HTTP 传输协议进行远程 MCP 支持 而设计。此配置文件将服务器作为 Web 应用程序运行,以便它可以通过 HTTP 与远程客户端通信。(Streamable HTTP 取代了已弃用的 SSE 传输协议;此处它在无状态模式下配置。)
远程配置文件的主要区别:
- 作为 Servlet Web 应用程序 (Tomcat) 在端口
3001上运行,而不是标准 I/O - 在
POST /mcp(Streamable HTTP) 上公开 MCP 端点 - 在 无状态 模式下运行 — 没有每个会话的服务器状态,因此它可以在负载均衡器后面水平扩展,无需会话亲和性
- 针对远程客户端连接优化了服务器设置
- 增强了日志记录以进行分布式调试
注意: 客户端连接到单个 Streamable HTTP 端点
…/mcp。不再提供旧版 SSE 端点(/sse+/mcp/message)。
如何激活远程配置文件:
直接使用 Java 运行时:
java -jar viso-mcp-server-<version>.jar --spring.profiles.active=remote
使用 Gradle 运行时:
./gradlew bootRun --args="--spring.profiles.active=remote"
使用 Docker 时:
docker run -i --rm \
-e VISOTRUST_API_TOKEN=<your-api-token> \
-e SPRING_PROFILES_ACTIVE=remote \
viso-mcp-server
何时使用远程配置文件:
- 将 MCP 服务器部署到远程服务器或云环境时
- 当客户端将通过 Streamable HTTP 而不是直接 stdio 连接时
- 当您需要为分布式部署增强日志记录和监控时
- 与通过 Streamable HTTP 连接的基于 Web 的 AI 助手集成时
对于本地开发和直接 stdio 通信,请使用默认配置文件(无需指定配置文件)。
安装
快速安装
单击下面的按钮之一,在 VS Code 中安装 VISO MCP 服务器:
使用 VS Code 手动设置
将以下 JSON 块添加到 VS Code 中的用户设置 (JSON) 文件。您可以通过按 Ctrl + Shift + P 并键入 Preferences: Open User Settings (JSON) 来执行此操作。
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "viso_baseurl",
"description": "VISO TRUST API Base URL",
"default": "https://app.visotrust.com"
},
{
"type": "promptString",
"id": "viso_token",
"description": "VISO TRUST API Token",
"password": true
}
],
"servers": {
"viso-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"VISOTRUST_API_TOKEN",
"-e",
"VISOTRUST_API_BASEURL",
"visotrustai/viso-mcp-server:latest"
],
"env": {
"VISOTRUST_API_BASEURL": "${input:viso_baseurl}",
"VISOTRUST_API_TOKEN": "${input:viso_token}"
}
}
}
}
}
或者,您可以将类似的示例(即不带 mcp 键)添加到工作区中名为 .vscode/mcp.json 的文件中。这将允许您与他人共享配置。
{
"inputs": [
{
"type": "promptString",
"id": "viso_baseurl",
"description": "VISO TRUST API Base URL",
"default": "https://app.visotrust.com"
},
{
"type": "promptString",
"id": "viso_token",
"description": "VISO TRUST API Token",
"password": true
}
],
"servers": {
"viso-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"VISOTRUST_API_TOKEN",
"-e",
"VISOTRUST_API_BASEURL",
"visotrustai/viso-mcp-server:latest"
],
"env": {
"VISOTRUST_API_BASEURL": "${input:viso_baseurl}",
"VISOTRUST_API_TOKEN": "${input:viso_token}"
}
}
}
}
与 Claude Desktop 和其他 MCP 客户端一起使用
Docker 配置
{
"mcpServers": {
"viso-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e", "VISOTRUST_API_TOKEN",
"-e", "VISOTRUST_API_BASEURL",
"visotrustai/viso-mcp-server:latest"
],
"env": {
"VISOTRUST_API_TOKEN": "<your-api-token>",
"VISOTRUST_API_BASEURL": "https://app.visotrust.com"
}
}
}
}
Java 配置
{
"mcpServers": {
"viso-mcp": {
"command": "java",
"args": [
"-jar",
"viso-mcp-server-<version>.jar",
"--port",
"8080",
"--host",
"localhost"
],
"env": {
"JAVA_TOOL_OPTIONS": "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005",
"VISOTRUST_API_TOKEN": "<your-api-token>",
"VISOTRUST_API_BASEURL": "https://app.visotrust.com"
}
}
}
}
注意:JAVA_TOOL_OPTIONS 环境变量用于设置远程调试的 JVM 选项。地址和端口可以根据需要更改。
💻 开发
Docker 设置
构建 Docker 镜像
docker build -t viso-mcp-server .
运行 Docker 容器
docker run -i --rm -e VISOTRUST_API_TOKEN=<your-api-token> viso-mcp-server
调试
安装 MCP Inspector
npm -g install @modelcontextprotocol/inspector
运行 MCP Inspector 进行测试
- 构建 MCP 服务器 Jar 文件
./gradlew bootJar
- 运行 MCP Inspector
npx @modelcontextprotocol/inspector \
-e JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=\*:5005 \
-e VISOTRUST_API_TOKEN=<your-api-token> \
java -jar build/libs/viso-mcp-server-<version>.jar \
--port 8080 --host localhost
将 <version> 替换为项目的当前版本(例如,1.0.0 或最新版本中的版本)。
CI/CD 流水线
此项目使用 GitHub Actions 进行持续集成和部署。工作流程包括以下作业:
Lint
使用 Spotless 检查代码格式:
./gradlew spotlessCheck
构建
构建应用程序并创建 JAR 文件:
./gradlew build
发布
创建新版本时:
- 将 build.gradle 中的项目版本更新为与发布标签匹配
- 将 JAR 文件上传到 GitHub 发布版本,版本号来自发布标签
- 构建 Docker 镜像并将其推送到 Docker Hub,标签为:
latest- 发布标签(例如,
v1.0.0)
发布所需的密钥
要启用 Docker Hub 发布,请将这些密钥添加到您的 GitHub 仓库:
DOCKERHUB_USERNAME:您的 Docker Hub 用户名DOCKERHUB_TOKEN:您的 Docker Hub 访问令牌
🛠️ 工具
本节提供了 VISO MCP 服务器公开的工具的文档。每个工具都有特定的用途、输入参数和输出格式。
评估
get_assessment - 通过 ID 获取评估
- id:评估 ID(数字,必需)
返回有关特定评估的详细信息。
get_assessment_summary - 通过 ID 获取评估摘要
- id:评估 ID(数字,必需)
返回特定评估的摘要详细信息。
create_assessment - 为现有关系启动评估
- relationshipId:要为其创建评估的关系 ID(数字,必需)
- recipientEmail:评估接收者的电子邮件地址(字符串,可选)
- recipientFirstName:评估接收者的名字(字符串,可选)
- recipientLastName:评估接收者的姓氏(字符串,可选)
- publicDocumentUrls:要包含在评估中的公开文档的 URL(字符串数组,可选)
- followupType:跟进类型(字符串枚举,可选)
- followupRiskThreshold:触发跟进的风险级别阈值(字符串枚举,可选)
- followupTimeline:跟进操作的时间线(字符串枚举,可选)
- collectionTimeline:供应商完成评估提交的时间线(字符串枚举,可选)
- noVendorResponseAction:供应商未响应时采取的操作(字符串枚举,可选)
- aiProcessingOnly:是否仅使用 AI 处理而无需人工审核(布尔值,可选)
- requestedAuditTypes:为此评估请求的审计类型(字符串数组,可选)
返回创建的评估详细信息。
update_assessment_expiration_date - 更新供应商必须提交其评估响应的截止日期
- id:评估 ID(数字,必需)
- expirationDate:新的到期日期/时间,ISO-8601 格式带偏移量;必须是未来的时间(字符串,必需)
返回确认消息。
update_assessment_followup - 更新评估的跟进配置
- id:评估 ID(数字,必需)
- followupType:跟进类型(字符串枚举,必需)
- followupRiskThreshold:应触发跟进评估的风险阈值(达到或超过此阈值)(字符串枚举,可选)
- followupTimeline:跟进时间线(字符串枚举,可选)
返回确认消息。
审计日志
get_user_audit_log_events - 获取您组织的用户范围审计日志事件
- start:查询的开始日期/时间,ISO-8601 格式带偏移量(字符串,必需)
- end:查询的结束日期/时间,ISO-8601 格式带偏移量(字符串,必需)
- eventTypes:要过滤的可选事件类型集(例如
USER_LOGGED_IN);留空表示全部(字符串数组,可选)
返回用户审计日志事件列表,限制为 500 条记录。
get_audit_log_events - 获取过滤后的审计日志事件(用户、组织、评估和关系事件)
- start:查询的开始日期/时间,ISO-8601 格式带偏移量(字符串,必需)
- end:查询的结束日期/时间,ISO-8601 格式带偏移量(字符串,必需)
- eventTypes:要过滤的可选事件类型集(例如
ASSESSMENT_COMPLETED、RELATIONSHIP_CREATED);留空表示全部(字符串数组,可选)
返回多态审计日志事件记录。每个项目至少包含 auditEventType 和 dateTime。
业务案例
get_all_business_cases - 获取您组织的所有可用业务案例
无需参数。
返回您组织可用的所有业务案例的列表。
数据类型
get_all_datatypes - 获取您组织的所有可用数据类型
无需参数。
返回您组织可用的所有数据类型的列表。
供应商目录
search_vendor_directory - 通过 URL 或域名在 VISO TRUST 供应商目录中查找供应商
- urlOrDomain:要搜索的 URL 或域名,例如
example.com(字符串,必需)
返回基本供应商元数据(名称、主页、描述、网站图标、已知域名)。
关系
get_all_relationships - 获取所有关系及其评估详细信息的列表
无需参数。
返回有关第三方供应商的信息,包括其评估状态、风险级别和联系方式。
get_relationship_by_id - 通过 ID 获取特定关系及其评估详细信息
- id:关系 ID(数字,必需)
返回有关第三方供应商的详细信息,包括评估状态、风险级别和联系方式。
get_relationship_assessment_history - 获取关系的评估历史记录
- id:关系 ID(数字,必需)
返回与指定关系关联的评估列表。
create_relationship - 创建与第三方供应商的新关系
- name:关系/供应商的名称(字符串,必需)
- homepage:供应商的主页 URL(字符串,必需)
- businessOwnerEmail:业务负责人的电子邮件地址(字符串,必需)
- businessOwnerFirstName:业务负责人的名字(字符串,可选)
- businessOwnerLastName:业务负责人的姓氏(字符串,可选)
- description:关系/供应商的描述(字符串,可选)
- contextTypes:此关系的业务上下文类型列表(对象数组,可选)
- dataTypes:此关系中处理的数据类型列表(对象数组,可选)
- tags:用于分类此关系的标签列表(字符串数组,可选)
- thirdPartyContact:第三方供应商代表的联系方式(对象,可选)
返回创建的关系详细信息。
create_relationship_by_domain - 仅使用供应商域创建新关系
- domain:供应商的域名,例如
visotrust.com(字符串,必需) - vendorName:供应商的名称(字符串,必需)
- product:供应商提供的产品(字符串,可选)
- description:供应商关系的描述(字符串,可选)
返回创建的关系详细信息。
update_relationship - 更新与第三方供应商的现有关系
- id:关系 ID(数字,必填)
- name:关系/供应商的名称(字符串,必填)
- homepage:供应商的主页 URL(字符串,可选)
- description:关系/供应商的描述(字符串,可选)
- contextTypes:业务上下文类型列表(对象数组,可选)
- dataTypes:此关系中处理的数据类型列表(对象数组,可选)
- businessOwnerEmail:业务负责人的电子邮件地址(字符串,可选)
- businessOwnerFirstName:业务负责人的名(字符串,可选)
- businessOwnerLastName:业务负责人的姓(字符串,可选)
- tags:标签列表(字符串数组,可选)
返回更新后的关系详情。
partially_update_relationship - 部分更新现有关系
接受的字段与 update_relationship 相同。仅更改请求中提供的字段;其他字段保持不变。
返回更新后的关系详情。
search_relationships - 按域名或供应商名称搜索关系
- domains:要搜索的域名列表(字符串数组,必填)
- name:要搜索的供应商/关系名称(字符串,必填)
返回匹配关系的列表及其评估详情。
create_tags - 创建用于分类关系的新标签
- tags:要创建的标签名称列表(字符串数组,必填)
返回包含新创建标签的所有标签列表。
update_third_party_contact - 更新第三方供应商的联系方式
- relationshipId:关系 ID(数字,必填)
- email:联系电子邮件(字符串,必填)
- firstName:联系人名(字符串,必填)
- lastName:联系人姓(字符串,必填)
返回更新后的关系详情。
onboard_relationship - 登记一个关系,可选择附带审批摘要和生命周期管理设置
- id:关系 ID(数字,必填)
- approvalSummary:登记时记录的可选审批摘要(字符串,可选)
- lifecycleManagementUpdateRequest:可选的生命周期管理设置(对象,可选)
- artifactUpdateSettings.artifactUpdateType:制品更新类型(字符串枚举)
- recertificationSettings.recertificationType:重新认证类型(字符串枚举)
- recertificationSettings.recertificationDate:下次重新认证的日期/时间,带偏移量的 ISO-8601 格式(字符串)
- recertificationSettings.reviewFrequency:
THREE_YEARS、TWO_YEARS、ANNUAL、SEMIANNUAL或QUARTERLY(字符串枚举)
返回已登记的关系详情。
offboard_relationship - 注销一个关系
- id:关系 ID(数字,必填)
返回已注销的关系详情。
archive_relationship - 归档一个关系
- id:关系 ID(数字,必填)
返回已归档的关系详情。
Webhooks
get_all_webhooks - 获取所有 Webhook
无需参数。
返回所有 Webhook 配置的列表。
get_webhook - 按 ID 获取 Webhook 配置
- id:Webhook ID(数字,必填)
返回特定 Webhook 配置的详细信息。
create_webhook_configuration - 创建 Webhook 配置
- request:Webhook 创建参数(对象,必填)
- url:Webhook URL(字符串,必填)
- secret:Webhook 密钥(字符串,必填)
- eventTypes:触发 Webhook 的事件类型(字符串数组,必填)
- serviceType:Webhook 的服务类型(字符串,必填)
返回创建的 Webhook 配置。
update_webhook_configuration - 更新 Webhook 配置
- request:Webhook 更新参数(对象,必填)
- id:Webhook ID(数字,必填)
- url:Webhook URL(字符串,可选)
- secret:Webhook 密钥(字符串,可选)
- eventTypes:触发 Webhook 的事件类型(字符串数组,可选)
- serviceType:Webhook 的服务类型(字符串,可选)
返回更新后的 Webhook 配置。
delete_webhook_configuration - 删除 Webhook 配置
- id:Webhook ID(数字,必填)
删除指定的 Webhook 配置。
情报报告
create_bitsight_intelligence_report - 创建新的 BitSight 情报报告
- request:BitSight 报告参数(对象,必填)
- vendorDomain:供应商的主域名(字符串,必填)
- reportDate:报告生成的日期/时间(ISO 8601 字符串,必填)
- link:指向提供商 UI 的可选链接(字符串,可选)
- guid:实体的 BitSight GUID(字符串,必填)
- customId:来自 BitSight 的自定义标识符(字符串,可选)
- name:BitSight 实体的显示名称(字符串,可选)
- description:BitSight 实体的描述(字符串,可选)
- primaryDomain:BitSight 实体的主域名(字符串,可选)
- ratingRange:BitSight 评级范围(字符串,可选)
- ratingColor:BitSight 评级颜色(字符串,可选)
- confidence:BitSight 评级的置信度(字符串,可选)
返回创建的情报报告。
create_security_scorecard_intelligence_report - 创建新的 SecurityScorecard 情报报告
- request:SecurityScorecard 报告参数(对象,必填)
- vendorDomain:供应商的主域名(字符串,必填)
- reportDate:报告生成的日期/时间(ISO 8601 字符串,必填)
- link:指向提供商 UI 的可选链接(字符串,可选)
- grade:SecurityScorecard 字母等级(字符串,必填)
- domain:与记分卡实体关联的域名(字符串,可选)
- score:来自 SecurityScorecard 的数字分数(数字,可选)
返回创建的情报报告。
create_recorded_future_intelligence_report - 创建新的 Recorded Future 情报报告
- request:Recorded Future 报告参数(对象,必填)
- vendorDomain:供应商的主域名(字符串,必填)
- reportDate:报告生成的日期/时间(ISO 8601 字符串,必填)
- entityType:Recorded Future 实体类型,例如
Company(字符串,必填) - entity:Recorded Future 实体标识符(字符串,必填)
- riskScore:数字风险评分(数字,必填)
- riskLevel:风险级别标签,例如
Critical/High/Medium/Low(字符串,必填) - link:指向提供商 UI 中报告的可选链接(字符串,可选)
- firstSeen:实体的最早观察日期,ISO 8601 格式(字符串,可选)
- lastSeen:实体的最近观察日期,ISO 8601 格式(字符串,可选)
- triggeredRuleCount:已触发的 Recorded Future 规则数量(数字,可选)
- maxRuleCount:评估的 Recorded Future 规则最大数量(数字,可选)
- summary:来自 Recorded Future 的可选摘要文本(字符串,可选)
- criticalityLabel:实体的 Recorded Future 关键性标签(字符串,可选)
返回创建的情报报告。
get_intelligence_reports_by_vendor - 获取供应商的所有情报报告
- vendorDomain:供应商的主域名(字符串,必填)
返回指定供应商的情报报告列表。
get_latest_intelligence_report - 获取供应商来自特定来源的最新情报报告
- vendorDomain:供应商的主域名(字符串,必填)
- source:情报提供商(字符串枚举:
BITSIGHT、SECURITY_SCORECARD或RECORDED_FUTURE,必填)
返回指定供应商和来源的最新情报报告。
用户
get_all_users - 获取组织中的所有用户
- page:要检索的结果页码(数字,可选;默认 0)
- size:每页记录数(数字,可选;默认 20)
- sort:排序条件,格式为:property(,asc|desc)(字符串,可选)
返回分页的用户列表。
get_user_by_email - 通过电子邮件获取用户
- email:用户的电子邮件地址(字符串,必填)
返回用户详细信息。
create_user - 创建新用户
- request:用户创建参数(对象,必填)
- email:新用户的电子邮件地址(字符串,必填)
- firstName:新用户的名(字符串,必填)
- lastName:新用户的姓(字符串,必填)
返回创建的用户。
代码格式化
本项目使用 Spotless 配合 Google Java Format 进行代码格式化。系统会自动设置一个预提交钩子,以确保代码风格一致。
设置
克隆仓库后,当您运行任何 Gradle 命令时,预提交钩子将自动设置。
手动格式化
要手动格式化所有文件:
./gradlew spotlessApply
要检查文件格式是否正确:
./gradlew spotlessCheck
如果预提交钩子因格式问题拒绝了您的提交,只需运行 ./gradlew spotlessApply 修复格式,然后再次尝试提交。
许可证
本项目根据 MIT 许可证授权 - 有关详细信息,请参阅 LICENSE 文件。