VISO信任MCP服务器
模型上下文协议(MCP)服务器,用于集成VISO TRUST API功能和人工智能助手。
需求
- Java 21+
- Gradle
- Docker(容器化部署可选)
- MCP检查员(测试可选)
配置
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)
有关如何为生成API令牌的信息 visotrust.api.token 环境变量,请参见 VISO TRUST支持文档.
应用程序配置文件
此应用程序支持Spring Boot配置文件,以便为不同的部署场景启用不同的配置。
远程配置
这 remote 配置文件是专门为 使用服务器发送事件(SSE)的远程MCP支持此配置文件将应用程序配置为在分布式环境中最佳工作,其中MCP服务器需要通过HTTP/SSE连接与远程客户端通信。
远程配置文件的主要区别:
- 配置为基于SSE的通信,而不是标准I/O
- 优化了远程客户端连接的服务器设置
- 用于分布式调试的增强日志记录
如何激活远程配置文件:
直接使用Java运行时:
java -jar viso-mcp-server-.jar --spring.profiles.active=remote使用Gradle跑步时:
./gradlew bootRun --args="--spring.profiles.active=remote"使用Docker时:
docker run -i --rm \
-e VISOTRUST_API_TOKEN= \
-e SPRING_PROFILES_ACTIVE=remote \
viso-mcp-server何时使用远程配置文件:
- 将MCP服务器部署到远程服务器或云环境时
- 当客户端将通过HTTP/SSE而不是直接stdio连接时
- 当您需要增强分布式部署的日志记录和监控时
- 当与需要SSE通信的基于网络的AI助手集成时
对于本地开发和直接stdio通信,使用默认配置文件(不需要配置文件规范)。
安装
快速安装
点击以下按钮之一,在VS Code中安装VISO MCP服务器:
使用VS代码手动设置
将以下JSON块添加到VS Code中的用户设置(JSON)文件中。您可以通过按Ctrl+Shift+P并键入首选项:打开用户设置(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}"
}
}
}
}
}您可以选择在工作区中的.vcode/mcp.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}"
}
}
}
}与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": "",
"VISOTRUST_API_BASEURL": "https://app.visotrust.com"
}
}
}
}Java配置
{
"mcpServers": {
"viso-mcp": {
"command": "java",
"args": [
"-jar",
"viso-mcp-server-.jar",
"--port",
"8080",
"--host",
"localhost"
],
"env": {
"JAVA_TOOL_OPTIONS": "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005",
"VISOTRUST_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= viso-mcp-server调试
安装MCP检查器
npm -g install @modelcontextprotocol/inspector运行MCP检查器进行测试
- 构建MCP服务器Jar文件
./gradlew bootJar- 运行MCP检查器
npx @modelcontextprotocol/inspector \
-e JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=\*:5005 \
-e VISOTRUST_API_TOKEN= \
java -jar build/libs/viso-mcp-server-.jar \
--port 8080 --host localhost替换 ` 根据项目的当前版本(例如。, 1.0.0` 或最新版本的版本)。
CI/CD管道
该项目使用GitHub Actions进行持续集成和部署。工作流程包括以下作业:
棉绒
使用Spotless检查代码格式:
./gradlew spotlessCheck构建
构建应用程序并创建JAR文件:
./gradlew build发布
创建新版本时:
- 更新build.gradle中的项目版本以匹配发布标签
- 将JAR文件与release标签中的版本一起上传到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(数字,必填)
- 收件人电子邮件:评估收件人的电子邮件地址(字符串,可选)
- recipientFirstName:评估接收者的名字(字符串,可选)
- 收件人姓氏:评估收件人的姓氏(字符串,可选)
- publicDocumentUrls:要包含在评估中的公共文档的URL(string\[\],可选)
- followType:后续类型(字符串枚举,可选)
- followRiskThreshold:触发跟进的风险级别阈值(字符串枚举,可选)
- followTimeline:后续操作的时间线(字符串枚举,可选)
- collectionTimeline:供应商完成评估提交的时间线(字符串枚举,可选)
- noVendorResponseAction:当供应商没有响应时采取的操作(字符串枚举,可选)
- aiProcessingOnly:是否仅使用AI进行处理而不进行人工审核(布尔值,可选)
- requestedAuditTypes:为此评估请求的审核类型(字符串\[\],可选)
返回创建的评估详细信息。
update_assessment_expiration_date -更新供应商必须提交评估回复的截止日期
- id:评估id(编号,必填)
- 到期日期:新的到期日期/时间,ISO-8601,有偏移;必须在未来(字符串,必填)
返回确认消息。
update_assessment_followup -更新评估的后续配置
- id:评估id(编号,必填)
- followType:后续类型(字符串枚举,必填)
- followupRiskThreshold:当风险阈值达到或超过该阈值时,应触发后续评估(字符串枚举,可选)
- followTimeline:跟进时间线(字符串枚举,可选)
返回确认消息。
审计日志
get_user_audit_log_events -为您的组织获取用户范围的审核日志事件
- start:查询的开始日期/时间,ISO-8601,带偏移量(字符串,必填)
- end:查询的结束日期/时间,ISO-8601,带偏移量(字符串,必填)
- eventTypes:要筛选的可选事件类型集(例如。
USER_LOGGED_IN);全部留空(string\[\],可选)
返回用户审核日志事件列表,限制为500条记录。
get_audit_log_events -获取经过筛选的审核日志事件(用户、组织、评估和关系事件)
- start:查询的开始日期/时间,ISO-8601,带偏移量(字符串,必填)
- end:查询的结束日期/时间,ISO-8601,带偏移量(字符串,必填)
- eventTypes:要筛选的可选事件类型集(例如。
ASSESSMENT_COMPLETED,RELATIONSHIP_CREATED);全部留空(string\[\],可选)
返回多态审计日志事件记录。每个项目至少有 auditEventType 和 dateTime.
商业案例
get_all_business_cases -为您的组织获取所有可用的商业案例
无需参数。
返回您的组织可用的所有业务案例的列表。
数据类型
get_all_datatypes -获取组织的所有可用数据类型
无需参数。
返回组织可用的所有数据类型的列表。
供应商名录
search_vendor_directory -通过URL或域在VISO TRUST供应商目录中查找供应商
- urlOrDomain:要搜索的URL或域名,例如。
example.com(字符串,必填)
返回基本的供应商元数据(名称、主页、描述、favicon、已知域)。
关系
get_all_relationships -获取所有关系及其评估详细信息的列表
无需参数。
返回有关第三方供应商的信息,包括其评估状态、风险级别和联系方式。
get_relationship_by_id -按ID获取特定关系及其评估详细信息
- id:关系id(数字,必填)
返回有关第三方供应商的详细信息,包括评估状态、风险级别和联系方式。
get_relationship_assessment_history -获取关系的评估历史记录
- id:关系id(数字,必填)
返回与指定关系关联的评估列表。
create_relationship -与第三方供应商建立新的关系
- name:关系/供应商的名称(字符串,必填)
- 主页:供应商的主页URL(字符串,必填)
- businessOwnerEmail:企业主的电子邮件地址(字符串,必填)
- businessOwnerFirstName:企业所有者的名字(字符串,可选)
- businessOwnerLastName:企业所有者的姓氏(字符串,可选)
- description:关系/供应商的描述(字符串,可选)
- contextTypes:此关系的业务上下文类型列表(object\[\],可选)
- dataTypes:此关系中处理的数据类型列表(object\[\],可选)
- tags:用于对此关系进行分类的标签列表(string\[\],可选)
- 第三方联系人:第三方供应商代表的详细联系方式(对象,可选)
返回创建的关系详细信息。
create_relationship_by_domain -仅使用供应商域创建新关系
- domain:供应商的域名,例如。
visotrust.com(字符串,必填) - vendorName:供应商的名称(字符串,必填)
- product:供应商提供的产品(字符串,可选)
- description:供应商关系的描述(字符串,可选)
返回创建的关系详细信息。
update_relationship -更新与第三方供应商的现有关系
- id:关系id(数字,必填)
- name:关系/供应商的名称(字符串,必填)
- 主页:供应商的主页URL(字符串,可选)
- description:关系/供应商的描述(字符串,可选)
- contextTypes:业务上下文类型列表(object\[\],可选)
- dataTypes:此关系中处理的数据类型列表(object\[\],可选)
- businessOwnerEmail:企业主的电子邮件地址(字符串,可选)
- businessOwnerFirstName:企业所有者的名字(字符串,可选)
- businessOwnerLastName:企业所有者的姓氏(字符串,可选)
- tags:标签列表(string\[\],可选)
返回更新的关系详细信息。
partially_update_relationship -部分更新现有关系
接受与相同的字段 update_relationship。仅更改请求中提供的字段;其他字段保持不变。
返回更新的关系详细信息。
search_relationships -按域名或供应商名称搜索关系
- domains:要搜索的域名列表(string\[\],必填)
- name:要搜索的供应商/关系的名称(字符串,必填)
返回匹配关系及其评估详细信息的列表。
create_tags -创建新标签以对关系进行分类
- tags:要创建的标记名称列表(string\[\],必填)
返回所有标记的列表,包括新创建的标记。
update_third_party_contact -更新第三方供应商的联系方式
- relationshipId:关系ID(数字,必填)
- email:联系电子邮件(字符串,必填)
- firstName:联系人名字(字符串,必填)
- lastName:联系人姓氏(字符串,必填)
返回更新的关系详细信息。
onboard_relationship -建立关系,可选择使用审批摘要和生命周期管理设置
- id:关系id(数字,必填)
- approvalSummary:在入职时记录的可选审批摘要(字符串,可选)
- lifecycleManagementUpdateRequest:可选的生命周期管理设置(对象,可选)
- artifactUpdateSettings.artifactUpdateType:工件更新类型(字符串枚举) - 重新认证设置。重新认证类型:重新认证类型(字符串枚举) - 重新认证设置。重新认证日期:下一次重新认证的日期/时间,ISO-8601,带偏移量(字符串) - 重新认证设置。审查频率: THREE_YEARS, TWO_YEARS, ANNUAL, SEMIANNUAL,或 QUARTERLY (字符串枚举)
返回已登录的关系详细信息。
offboard_relationship -走出一段关系
- id:关系id(数字,必填)
返回已关闭的关系详细信息。
archive_relationship -将关系存档
- id:关系id(数字,必填)
返回已存档的关系详细信息。
网络钩子
get_all_webhooks -获取所有webhooks
无需参数。
返回所有webhook配置的列表。
get_webhook -按id获取webhook配置
- id:Webhook id(数字,必填)
返回特定webhook配置的详细信息。
create_webhook_configuration -创建webhook配置
- request:Webhook创建参数(对象,必填)
- url:Webhook url(字符串,必填) - secret:Webhook secret(字符串,必填) - eventTypes:触发webhook的事件类型(字符串\[\],必填) - serviceType:webhook的服务类型(字符串,必填)
返回创建的webhook配置。
update_webhook_configuration -更新webhook配置
- request:Webhook更新参数(对象,必填)
- id:Webhook id(数字,必填) - url:Webhook url(字符串,可选) - secret:Webhook secret(字符串,可选) - 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评级颜色(字符串,可选) - 置信度:BitSight评级的置信度(字符串,可选)
返回创建的情报报告。
create_security_scorecard_intelligence_report -创建新的SecurityScorecard情报报告
- 请求:SecurityScorecard报告参数(对象,必填)
- vendorDomain:供应商的主域名(字符串,必填) - reportDate:生成报告的日期/时间(ISO 8601字符串,必填) - link:指向提供者UI的可选链接(字符串,可选) - grade:安全记分卡字母等级(字符串,必填) - 域:与记分卡实体关联的域(字符串,可选) - score:来自SecurityScorecard的数字分数(数字,可选)
返回创建的情报报告。
create_recorded_future_intelligence_report -创建新的Recorded Future情报报告
- request:记录的未来报告参数(对象,必填)
- vendorDomain:供应商的主域名(字符串,必填) - reportDate:生成报告的日期/时间(ISO 8601字符串,必填) - entityType:记录的未来实体类型,例如。 Company (字符串,必填) - entity:记录的未来实体标识符(字符串,必填) - riskScore:数字风险评分(数字,必填) - riskLevel:风险等级标签,例如。 Critical/High/Medium/Low (字符串,必填) - link:可选链接到提供者UI中的报告(字符串,可选) - firstSeen:实体的最早观察日期,ISO 8601(字符串,可选) - lastSeen:实体的最近观测日期,ISO 8601(字符串,可选) - triggerdRuleCount:已触发的已记录未来规则的数量(数字,可选) - maxRuleCount:已评估的未来记录规则的最大数量(数字,可选) - summary:来自Recorded Future的可选摘要文本(字符串,可选) - criticalyLabel:记录实体的未来关键性标签(字符串,可选)
返回创建的情报报告。
get_intelligence_reports_by_vendor -获取供应商的所有情报报告
- vendorDomain:供应商的主域名(字符串,必填)
返回指定供应商的情报报告列表。
get_latest_intelligence_report -从特定来源获取供应商的最新情报报告
- vendorDomain:供应商的主域名(字符串,必填)
- 来源:情报提供者(字符串枚举:
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:新用户的姓氏(字符串,必填)
返回创建的用户。
代码格式化
此项目使用 无瑕 使用谷歌Java格式进行代码格式化。预提交钩子会自动设置,以确保代码风格的一致性。
设置
克隆存储库后,当您运行任何Gradle命令时,将自动设置预提交挂钩。
手动格式化
要手动格式化所有文件,请执行以下操作:
./gradlew spotlessApply要检查文件格式是否正确:
./gradlew spotlessCheck如果预提交钩子因格式问题而拒绝您的提交,只需运行 ./gradlew spotlessApply 修复格式,然后再次尝试提交。
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
