VISO TRUST MCP Server

官方

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

文件

VISO TRUST MCP 伺服器

一個用於整合 VISO TRUST API 功能與 AI 助理的模型上下文協定 (MCP) 伺服器。

需求

  • 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 設定檔專為使用伺服器傳送事件 (SSE) 的遠端 MCP 支援而設計。此設定檔會將應用程式設定為在分散式環境中最佳運作,其中 MCP 伺服器需要透過 HTTP/SSE 連線與遠端用戶端通訊。

遠端設定檔的主要差異:

  • 設定為基於 SSE 的通訊,而非標準 I/O
  • 針對遠端用戶端連線最佳化的伺服器設定
  • 增強記錄功能,以便進行分散式除錯

如何啟用遠端設定檔:

直接使用 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 伺服器部署到遠端伺服器或雲端環境時
  • 用戶端將透過 HTTP/SSE 而非直接的 stdio 連線時
  • 需要針對分散式部署增強記錄和監控時
  • 與需要 SSE 通訊的網頁型 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

Build

建置應用程式並建立 JAR 檔案:

./gradlew build

Publish

建立新版本時:

  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 - 在 VISO TRUST 供應商目錄中依 URL 或網域查詢供應商

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

傳回已上線的關係詳細資訊。

offboard_relationship - 將關係下線

  • id:關係 ID (數字,必要)

傳回已下線的關係詳細資訊。

archive_relationship - 封存關係

  • id:關係 ID (數字,必要)

傳回已封存的關係詳細資訊。

Webhook

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