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 傳輸;此處設定為無狀態模式。)
遠端設定檔的主要差異:
- 在連接埠
3001上作為 Servlet Web 應用程式 (Tomcat) 執行,而非標準 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:供應商的首頁網址(字串,選填)
- 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 - 取得所有 webhooks
無需參數。
回傳所有 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 檔案。