VISO TRUST

官方

直接透過您的 AI 助手存取和管理您的 VISO TRUST 第三方風險計劃。

你可以用 VISO TRUST MCP 做什麼?

  • 按網域搜尋廠商目錄 — 使用 search_vendor_directory 搭配 URL 或網域名稱,在 VISO TRUST 中查詢廠商。
  • 管理第三方關係 — 使用 create_relationshipupdate_relationshiponboard_relationship 等工具,建立、更新、搜尋、入職、離職或歸檔廠商關係。
  • 執行與追蹤廠商評估 — 使用 create_assessment 啟動評估,透過 get_assessment 取得結果,並更新截止日期或後續設定。
  • 檢閱稽核日誌活動 — 使用 get_user_audit_log_eventsget_audit_log_events 查詢指定時間範圍內的使用者或完整稽核事件。
  • 匯入外部情報報告 — 使用 create_bitsight_intelligence_reportcreate_security_scorecard_intelligence_reportcreate_recorded_future_intelligence_report 提交 BitSight、SecurityScorecard 或 Recorded Future 報告。
  • 設定 Webhook — 使用 create_webhook_configurationupdate_webhook_configurationget_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 伺服器:

Install with Docker in VS Code Install with Docker in VS Code Insiders

使用 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 進行測試

  1. 建置 MCP 伺服器 Jar 檔案
./gradlew bootJar
  1. 執行 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

發佈

建立新版本時:

  1. 更新 build.gradle 中的專案版本以符合版本標籤
  2. 將 JAR 檔案上傳至 GitHub 版本,版本號來自版本標籤
  3. 建置 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_COMPLETEDRELATIONSHIP_CREATED);留空以取得全部(字串陣列,可選)

傳回多型稽核記錄事件記錄。每個項目至少包含 auditEventTypedateTime

業務案例

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_YEARSTWO_YEARSANNUALSEMIANNUALQUARTERLY(字串列舉)

回傳已啟用的關係詳細資料。

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:情報提供者(字串列舉:BITSIGHTSECURITY_SCORECARDRECORDED_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 檔案。