TECH ARTICLE

dSPACE dissecto HydraVision MCP:
AI 代理驅動的車用資安測試完整指南

深入解析 HydraVision MCP Server 的連線認證、資源與提示(Prompts)架構、十大功能域的核心工具,以及在 ECU 滲透測試、測試活動管理、失敗分診與報告產出上的實務應用場景。

HydraVision 是 dSPACE 旗下 dissecto 推出的車用資安自動化測試平台,搭配 HydraProbe 硬體探針與 HydraCore 測試框架,涵蓋 CAN / ISO-TP、UDS、DoIP、車載乙太網路、藍牙等介面的安全測試,是導入 ISO/SAE 21434 與 UNECE R155 資安驗證的重要工具。自 2026 年中起,HydraVision 正式支援 Model Context Protocol(MCP),讓 Claude、GitHub Copilot、Cursor、Gemini CLI 等 AI 助理可以直接連線至 HydraVision 執行個體——建立測試目標、設定 Context、啟動測試活動(Campaign)、讀取結果並撰寫報告,全程使用與登入使用者相同的工具與權限。本文以 HydraVision 2026.08 版為基礎,完整介紹 HydraVision MCP 的架構、設定方式、全部工具能力與實務應用。

1. HydraVision MCP 架構總覽

與 dSPACE MCP Hub 採用本機 STDIO 子行程不同,HydraVision MCP 是內建於 HydraVision 伺服器端的遠端 MCP Server,AI 客戶端透過 HTTPS 直接連線,不需在本機安裝任何套件。整體架構由四個角色組成:

元件 角色說明
AI 客戶端(MCP Client) Claude Code、Claude Desktop、VS Code + GitHub Copilot、Cursor、Gemini CLI、MCP Inspector 等,負責理解工程師的自然語言需求並呼叫 MCP 工具
HydraVision MCP Server 內建於 HydraVision 的 /mcp 端點,提供涵蓋十大功能域的工具(Tools)、30 餘種資源(Resources)與多個工作流程提示(Prompts)
HydraProbe(Runner) 實際連接 ECU 的硬體探針(或虛擬探針),負責 CAN / 乙太網路收發、電源控制與測試執行
HydraCore 測試案例(Testcase)所使用的 Python 測試框架;MCP 會將 HydraCore 的類別結構與文件開放給 AI 代理查詢

運作原理:MCP Server 採 Streamable HTTP 傳輸,以 OAuth 2.1 Bearer Token 驗證身分。AI 客戶端呼叫工具後,HydraVision 會在伺服器端建立目標、執行圖(Execution Graph)與測試工作(Job),再派送到對應的 HydraProbe 執行;結果、日誌與時序資料則存回 HydraVision,供 AI 代理後續讀取分析。所有動作都在登入帳號的群組權限範圍內進行,與在網頁介面上操作完全一致。

2. 連線端點與 OAuth 認證

HydraVision MCP 使用標準的 OAuth 2.1 授權流程,外部 AI 客戶端永遠不會接觸到使用者密碼。主要規格如下:

項目 規格
MCP 端點https://<your-instance>.hydravision.dissec.to/mcp
傳輸方式Streamable HTTP(遠端 MCP Server)
資源中繼資料/.well-known/oauth-protected-resource(RFC 9728),資源名稱「Hydravision MCP」
授權伺服器中繼資料/.well-known/oauth-authorization-server(RFC 8414)
支援授權類型Authorization Code + PKCE(S256)、Refresh Token、Device Code
客戶端註冊支援動態客戶端註冊(Dynamic Client Registration),VS Code / Copilot 可自動完成註冊
Scopemcp

3. 連線設定流程(五步驟)

由於 HydraVision MCP 是遠端伺服器,設定流程比本機 MCP Server 更精簡,不需安裝 Python 或任何相依套件:

01

確認 HydraVision 帳號

確認您擁有 HydraVision 執行個體的帳號,且所屬群組可存取要操作的目標與測試範本。

02

登錄 MCP 端點

在 AI 客戶端的 MCP 設定中新增一個 HTTP 類型的 Server,URL 指向執行個體的 /mcp 端點。

03

OAuth 登入授權

客戶端首次連線時會開啟瀏覽器,於 HydraVision 登入頁(含 2FA)完成登入並同意授權。

04

讀取伺服器指引

AI 代理第一步呼叫 get_server_instructions,取得官方工作流程、安全規範與分頁規則。

05

驗證連線

讀取 hydravision://runners 確認探針在線,讀取 hydravision://targets 確認可看到測試目標。

3.1 MCP 客戶端配置範例

Claude Code(終端機一行指令新增,首次使用時於 /mcp 完成登入):

# 以 HTTP 傳輸方式新增 HydraVision MCP
claude mcp add --transport http hydravision https://<your-instance>.hydravision.dissec.to/mcp

VS Code + GitHub Copilot(工作區 .vscode/mcp.json):

{
  "servers": {
    "hydravision": {
      "type": "http",
      "url": "https://<your-instance>.hydravision.dissec.to/mcp"
    }
  }
}

Cursor(.cursor/mcp.json):

{
  "mcpServers": {
    "hydravision": {
      "url": "https://<your-instance>.hydravision.dissec.to/mcp"
    }
  }
}

提示:設定檔中不需要也不應該填入帳號密碼或 Token——OAuth 流程會由客戶端自動處理,Token 到期時以 Refresh Token 續期。若客戶端不支援瀏覽器跳轉(例如遠端 SSH 環境),可使用 Device Code 授權流程。過期未完成的授權同意連結會自動失效。

4. 資源(Resources)與工作流程提示(Prompts)

除了工具之外,HydraVision MCP 將平台上的資料以 hydravision:// URI 形式開放為唯讀資源,並依類別(category)分組,方便 AI 代理快速定位。所有清單型資源皆分頁回傳(預設 20 筆、上限 100 筆),回應中的 pagination.truncated 與 hint 會提示下一頁的 offset。對於不支援原生 MCP Resources 的客戶端(例如部分 CLI 工具),可改用 list_hydravision_resources 與 read_hydravision_resource 兩個工具存取。

類別 代表資源 URI 內容
runnerhydravision://runners、…/runners/{id}/queue探針在線狀態、最後連線時間、執行中與排隊中的工作
targethydravision://targets、…/targets/{id}/graphs、…/queueECU / 車輛目標、執行圖清單、佇列中的執行定義
context…/targets/{id}/context/entries、…/context/{key}目標的 Context 項目(CanBus、CanSocket、UdsEndpoint、PowerSupplyUnit 等)
templatehydravision://templates/testcases、…/templates/{id}/files測試案例範本目錄、範本原始碼檔案、Git 提交紀錄
test_planhydravision://test_plans測試計畫與其依序排列的範本清單
graph…/graphs/{id}/summary、…/execution_definitions執行圖儀表板、每個執行定義(ED)的最新工作狀態
jobhydravision://remote_jobs、…/jobs/{id}/artifacts、…/timeseries/measurements測試工作、產出檔案(Artifacts)、Context 快照、時序量測清單、分析師留言
hydracorehydravision://hydracore/docs、…/python_packages與目前 HydraCore 版本相符的開發文件與類別結構 Schema
systemhydravision://system/health、…/system/events探針群健康狀態、執行中工作、近期錯誤與後端事件
admin / artifacthydravision://reports、…/artifact_types、…/users、…/groups報告、產出檔案類型、使用者與群組(依權限顯示)

HydraVision MCP 也內建一組工作流程提示(Prompts),把官方建議的操作順序封裝起來,AI 代理可直接套用:

  • configure_new_target:建立新目標 → 設定 Context → 啟動測試計畫活動。
  • fork_testcase_from_template:複製既有範本 → 查詢 HydraCore API → 安全地修改 test_case.py → 冒煙測試。
  • analyze_job_failure:針對單一失敗工作,依序讀取日誌、結果、留言、Context 快照與產出檔案。
  • summarize_test_campaign / triage_failures:彙整活動通過/失敗統計,並跨活動依根因歸類失敗項目。
  • compare_job_runs:比對同一執行定義的兩次執行結果,找出 pass→fail 的回歸項目。
  • diagnose_runner_offline:排查探針離線或卡住的工作。
  • probe_debug_session:在硬體探針上開啟互動式偵錯工作階段。
  • generate_target_report / edit_target_report:從已完成的工作產出並編修目標報告。

5. 工具能力詳解(10 個功能域)

以下依功能域列出 HydraVision MCP 的主要工具與其能力。

5.1 伺服器指引與資源存取(3 個工具)

工具名稱能力說明
get_server_instructions取得伺服器使用指引、工作流程與安全規範(應最先呼叫)
list_hydravision_resources列出所有 hydravision:// 資源與 URI 範本及其類別
read_hydravision_resource以 URI 讀取單一資源,支援 limit / offset 分頁

5.2 測試目標與 Context 管理(5 個工具)

工具名稱能力說明
create_target建立新的 ECU 測試目標並指定所用探針
update_target更新目標名稱、說明、類型或探針(部分更新)
set_context_entry建立或取代 Context 項目;寫入前依 HydraCore JSON Schema 驗證整份 Context,含跨項目參照
delete_context_entry軟刪除 Context 項目;若仍被其他項目參照則拒絕刪除
search_hydracore_symbols搜尋 HydraCore 類別結構,回傳建構子欄位、方法與介面,供設定 Context 或撰寫測項時查詢

5.3 測試計畫與測試活動(8 個工具)

工具名稱能力說明
create_test_plan建立測試計畫,以有序的範本 ID 清單定義測試順序
update_test_plan更新測試計畫名稱、說明或範本清單
start_test_plan_campaign對目標啟動測試活動;預設分階段(只啟用第一個範本),auto_run=True 則與 GUI 一樣自動串接;可用 credits 限制自動啟動的工作數
enable_campaign_templates同步探索階段新產生的 Context 後,啟用下一階段的指定範本
get_campaign_status活動儀表板:通過/失敗/執行中/等待中數量與提示
wait_for_campaign等待活動中所有工作結束(每次最長 1800 秒,可重複呼叫)
pause_campaign暫停自動執行,並將尚未開始的執行定義移出佇列(不中斷執行中工作)
resume_campaign恢復對新執行定義的自動執行

5.4 執行圖與測試執行(10 個工具)

工具名稱能力說明
run_testcase一次呼叫完成單一測項的快速執行(自動建立臨時執行圖並啟動),適合冒煙測試
start_execution啟動指定執行定義的工作;exclusive=True 可避免結束後自動串接其他測項
wait_for_job等待工作進入終止狀態(成功或錯誤)
stop_job停止執行中或等待中的工作
dequeue_execution_definitions將尚未開始的執行定義移出佇列(對應 GUI 的 Dequeue)
create_graph為目標建立自訂執行圖(進階用法)
create_graph_from_test_plan由測試計畫建立執行圖並計算執行定義(進階用法)
patch_graph更新執行圖的範本、Context 篩選與自動啟動設定(進階修復)
patch_execution_definition啟用/停用單一執行定義,或覆寫其 Context 鍵
set_all_execution_definitions_enabled一次啟用或停用執行圖中所有執行定義

5.5 測試結果與資料分析(7 個工具)

工具名稱能力說明
get_job_logs取得精選日誌、錯誤描述與產出檔案清單,用於失敗分診
get_job_log_lines讀取指定量測(logger)的原始日誌行
get_job_results取得已完成工作的結果、摘要與結果表格
get_job_timeseries查詢數值型時序資料(例如掃描期間的電源電壓/電流),支援聚合視窗
get_artifact_content預覽文字型產出檔案內容(上限 512 KiB)
get_artifact_download_link取得產出檔案的 REST 下載連結(需 Bearer Token,不將二進位內容送入模型)
recompile_artifact在沙箱中重新編譯(後處理)產出檔案(管理員)

5.6 分析師註記與嚴重度(3 個工具)

工具名稱能力說明
set_job_severity設定分析師嚴重度(UNSET / INFO / LOW / MEDIUM / HIGH / CRITICAL),與機器判定結果分開記錄
add_job_comment新增留言,可錨定到日誌行、結果行、時間點或產出檔案;會帶入報告
list_job_comments列出工作上的所有留言與嚴重度

5.7 測試案例範本開發(9 個工具)

測試案例範本以 Git 儲存庫管理,每次編輯都是一筆原子提交(atomic commit),Python 檔案在提交前會經過 AST 語法驗證,改錯了也能隨時回滾。

工具名稱能力說明
copy_job_template以新名稱複製既有範本為可編輯的本地範本
read_template_file讀取範本檔案(支援行號區間)
grep_template_files以正規表示式搜尋範本檔案內容
edit_template_files以 write / replace / patch / delete 操作編輯檔案,單一 Git 提交
replace_template_line_range取代或插入指定行號區間(精準編輯)
refresh_job_template_metadata修改測項參數後重新產生中繼資料,並排入沙箱深度驗證
read_template_file_at_git_commit讀取檔案在指定 Git 版本時的內容
reset_template_git_revision將範本重設到指定的先前版本
rewind_template_git_commits將範本回退 N 個提交

5.8 探針偵錯工作階段(11 個工具)

Probe Debug 讓 AI 代理在 HydraProbe 上開啟一個受控的偵錯工作階段,用於環境檢查與測項除錯。

工具名稱能力說明
start_probe_mcp / stop_probe_mcp開啟/關閉探針端的偵錯工作階段(內部工作,結束後自動清除)
wait_for_debug_command / get_debug_command_status等待或查詢非同步指令狀態與結束碼
get_debug_command_output分段讀取非同步指令的 stdout / stderr
write_debug_command_stdin寫入非同步指令的標準輸入
interrupt_debug_command以 SIGINT / SIGTERM / SIGKILL 中斷指令
exec_debug_list_dir / exec_debug_read_file列出目錄、讀取檔案(限工作目錄內)
start_testcase_debug / stop_testcase_debug以 openvscode 圖形化偵錯模式啟動/停止測項,供工程師手動除錯

5.9 測試報告(12 個工具)

工具名稱能力說明
create_report_from_jobs由已完成的工作產生 Git 管理的目標報告(含留言與嚴重度)
create_report_template建立自訂報告範本(版面與產生器腳本)
read_report_file / grep_report_files讀取或搜尋報告檔案(主要為 report.md)
edit_report_files / replace_report_line_range編修報告內容,每次為一筆 Git 提交
read_report_file_at_git_commit讀取報告檔案的歷史版本
reset_report_git_revision / rewind_report_git_commits將報告回滾到先前版本
export_report_docx回傳 Word(DOCX)下載路徑,供工程師下載交付
update_report更新報告名稱、說明與範本連結
copy_report複製報告或範本(含 Git 儲存庫)

5.10 產出檔案類型與後處理編譯器(4 個工具)

工具名稱能力說明
create_artifact_type / update_artifact_type建立自訂產出檔案類型、修改顯示名稱(admin / staff)
create_artifact_compiler_config / update_artifact_compiler_config設定沙箱後處理編譯器,將原始產出自動轉換為團隊需要的格式(管理員)

6. 實務應用:車用資安測試場景

HydraVision 內建多個官方測試計畫範本,涵蓋 UDS over CAN / DoIP 基礎評估、UDS 模糊測試、乙太網路安全掃描、TLS / SSH 基線檢查與實車 UDS 掃描等。搭配 MCP,工程師只要描述目標,AI 代理就能組合出完整的測試流程。以下範例中的 ID 皆為示意值。

6.1 新 ECU 上線:從建立目標到分階段測試活動

工程師輸入:「幫我在 CAN 探針上建立一個新的 BCM 目標,跑 UdsBasicCAN 測試計畫,先跑探索階段就好。」AI 代理會依 configure_new_target 流程執行:

# 1. 確認探針在線、查詢測試計畫
read_hydravision_resource(uri="hydravision://runners")
read_hydravision_resource(uri="hydravision://test_plans")

# 2. 建立目標並設定 Context(欄位先以 search_hydracore_symbols 查詢)
create_target(name="BCM_Sample", remote_runner=2)
set_context_entry(target_id=31, key="PowerSupplyUnit_0",
                  value={"cls": "PowerSupplyUnit", "channel": "PSU_1"})
set_context_entry(target_id=31, key="CanBus_0", value={...})
set_context_entry(target_id=31, key="CanSocket_0", value={...})

# 3. 啟動分階段測試活動(預設只啟用第一個範本)
start_test_plan_campaign(target_id=31, test_plan_id=10)
wait_for_campaign(campaign_id=118)

# 4. 探索完成後,由工程師確認再啟用下一階段
enable_campaign_templates(campaign_id=118, template_ids=[...])

設計重點:MCP 預設採分階段執行,探索類測項(如 IsotpScan)完成後可能產生大量 Context 組合;工程師可先檢視結果、篩減佇列,再決定是否進入下一階段,避免一次排入大量測試佔用探針。

6.2 失敗工作分診與分析師註記

測試活動結束後,工程師詢問:「這次活動哪些測項失敗?幫我分析原因並標註嚴重度。」AI 代理依 triage_failures 與 analyze_job_failure 流程:

  • 以 get_campaign_status 取得失敗清單,依根因分組(例如通訊逾時、ECU 無回應、Context 缺漏)。
  • 以 get_job_logs、get_job_results 讀取日誌與結果表,必要時以 get_job_timeseries 檢查掃描期間的電源曲線,判斷 ECU 是否重啟。
  • 將判讀結果交由工程師確認後,以 set_job_severity 與 add_job_comment(錨定到關鍵日誌時間點)寫回 HydraVision,這些註記會自動帶入後續報告。

6.3 韌體改版後的回歸比對

ECU 韌體更新後重新執行同一組測試,再以 compare_job_runs 流程比對同一執行定義的前後兩次結果,自動列出「通過→失敗」與「失敗→通過」的項目,快速確認資安修補是否生效、是否引入新問題。

6.4 客製化測項開發:AI 輔助修改 test_case.py

當官方測項需要針對專案調整(例如加入特定的 DID 範圍或專案專屬的 Session 切換順序),AI 代理可依 fork_testcase_from_template 流程:

# 複製官方範本為本地可編輯版本
copy_job_template(template_id=72, name="IsotpScan_ProjectX")

# 查詢 HydraCore API,再以精準的行號區間修改
search_hydracore_symbols(query="IsotpSocket")
grep_template_files(template_id=412, pattern="def test_case")
replace_template_line_range(template_id=412, path="test_case.py",
                            start_line=58, end_line=64, new_content="...")

# 更新中繼資料並在虛擬 ECU 上冒煙測試
refresh_job_template_metadata(template_id=412)
run_testcase(target_id=5, template_id=412)
wait_for_job(job_id=2051)

每次修改都是一筆 Git 提交,並經 AST 語法驗證;若結果不如預期,可用 rewind_template_git_commits 一鍵回滾。建議先在 Virtual ECU(VECU)目標上驗證,再移到實體 ECU 執行。

6.5 自動產出資安測試報告

完成註記後,工程師要求:「把這次 BCM 活動的結果整理成報告。」AI 代理以 create_report_from_jobs 產生報告,讀取 report.md 撰寫摘要與改善建議,經工程師審閱修訂後,以 export_report_docx 取得 Word 下載路徑。報告內含每個測項的結果、分析師嚴重度與留言,可作為 ISO/SAE 21434 驗證活動(TARA 後的 Cybersecurity Validation)與 UNECE R155 / GB 44495 合規文件的佐證資料。

6.6 與 dSPACE VEOS / HSIL 虛擬驗證整合

HydraVision 可直接匯入 dSPACE HSIL 模擬組態,將 VEOS 中的 CAN 與乙太網路主題轉換為目標的 Context 項目,讓資安測試在虛擬 ECU 上左移(Shift-Left)執行。搭配本站《dSPACE MCP Hub》一文介紹的 VEOS MCP,AI 代理即可在同一個工作階段中啟動模擬,並由 HydraVision MCP 對虛擬 ECU 執行資安測試,打造從 SIL 到 HIL 一致的自動化流程。

7. 安全性設計

資安測試平台本身必須足夠安全。HydraVision MCP 在設計上納入多層防護:

  • OAuth 2.1 與權限繼承:AI 客戶端不接觸密碼,只取得 mcp scope 的存取權杖;所有操作都受登入帳號的群組權限限制,唯讀帳號也無法透過 MCP 修改任何資料。
  • 不可信內容標記:受測 ECU 的回應、日誌、產出檔案、測項原始碼與其他使用者的留言,都可能含有惡意內容。HydraVision 會在這類回應中加上 content_provenance 與 content_warning 標記,並明確要求 AI 代理只將其視為資料、絕不當作指令執行。
  • 分階段執行預設:測試活動預設只啟用第一階段,避免 AI 代理一次排入大量可能影響 ECU 行為的測試;具副作用的測試計畫(例如會寫回資料或觸發 RoutineControl 的掃描)在說明中皆有明確警示。
  • Git 版本控管與驗證:測項與報告的每次修改都是可追溯、可回滾的 Git 提交;Context 寫入前經 HydraCore JSON Schema 完整驗證,不合法的設定在儲存前就會被拒絕。
  • 使用注意:部分測試(UDS 模糊測試、乙太網路 DoS 韌性測試等)可能影響 ECU 運作或觸發實體動作,請僅在授權的測試環境、具備適當實驗室防護措施下執行,並優先在虛擬 ECU 上驗證流程。

8. 捷策動能技術支援

Jotactic 捷策動能為 dSPACE dissecto HydraVision 在台代理與技術服務夥伴,提供:

導入與環境建置

HydraVision / HydraProbe 部署、MCP 連線設定與 AI 客戶端整合。

測試計畫規劃

依 ISO/SAE 21434、UNECE R155、GB 44495 需求規劃測試計畫與客製化測項。

教育訓練與 Demo

AI 代理驅動資安測試工作流程教育訓練與客製化 Demo 驗證。

歡迎來電 03-6109669 或來信 info@jotactic.com 洽詢。