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 伺服器:
使用 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
Build
建置應用程式並建立 JAR 檔案:
./gradlew build
Publish
建立新版本時:
- 將 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 - 在 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_YEARS、TWO_YEARS、ANNUAL、SEMIANNUAL或QUARTERLY(字串列舉)
傳回已上線的關係詳細資訊。
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:情報提供者 (字串列舉:
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 檔案。