iT邦幫忙

2025 iThome 鐵人賽

DAY 25
0

以下內容以先前五篇(依序:Gradle/相依、MCP 設定、MCP 工具實作、Simulation 概念與程式)為基礎,整理成:我做了什麼、怎麼做、哪些是配置/計畫而非程式碼實作,與下一步如何把 ai-agent 接上 MCP。

一、我做了什麼

  • 建置多模組 Gradle 專案與必要相依(Spring Boot、Feign、Spring AI MCP starter、Jackson、Lombok 等),確保 MCP module 可獨立編譯與部署。
  • 設計並實作 MCP 平台入口配置:McpToolConfig(透過 MethodToolCallbackProvider 將多個帶 @Tool 的 bean 註冊為可被 MCP 呼叫的工具),以及 application.yml 的基本部署/endpoint 與下游服務位址。
  • 實作一組核心 MCP tools:
    • OrderBookMcpToolMarketMetricsMcpToolTradingMcpToolUserManagementMcpTool、以及 SimulationMcpTool。這些工具封裝對下游 order/wallet/match-engine 的呼叫(多以 Feign client 為橋接),並用 @Tool 供 MCP 使用。
  • 實作 Simulation :包含 SimulationRequest/SimulationResult DTO 與 SimulationService 的 run-loop,能在每個 step 取得 market metrics、評估 spread 並依策略產生模擬或真實下單(executeReal 開關)。

二、怎麼做(實作細節、重要決策)

  • MCP 工具註冊
    • 採用一個集中配置 McpToolConfig,將工具 bean 傳入 MethodToolCallbackProvider.builder()。這讓工具的生命週期與依賴注入由 Spring 管理,且 MCP framework 只需拿到 provider 就能呼叫工具。
  • 下游呼叫的抽象化
    • 以 Feign interface(例如 OrderServiceClientWalletServiceClient)作為外部 HTTP 呼叫的邊界,讓工具類只關注業務邏輯與 DTO 映射,便於在未來替換或 mock 測試。
  • Simulation 的設計思路
    • 將每一步的市場狀態讀取(透過 MarketMetricsMcpTool)與下單動作(透過 TradingMcpTool)做明確分工;SimulationService 負責策略判斷、價格選擇(topBid/topAsk/mid)、以及模擬 vs 實單的差異處理。
    • 對外回傳 SimulationResult 包含 events、fills、marketSnapshots 與 parsedFills,方便做回放、報表或 KPI 分析。

三、我在 ai-agent 中如何串接(簡短總結)

簡單總結:我已經把 MCP tools 以 Spring Bean(@Tool)與 MethodToolCallbackProvider 封裝好,並在 eap-mcp 中透過 Spring AI 的 MCP 支援暴露它們。

這讓 eap-ai-client(下一篇會介紹的我的ai-service)可以直接以一個輕量的 MCP client(例如現有的 McpToolClient / McpConnectionService)呼叫工具,省去直接處理下游 HTTP/Feign 或 internal wiring 的複雜度。

詳細的 execution-在後續 ai-service 專文中實作。

小結

現在的架構已把工具與通訊邊界明確分離eap-mcp 提供穩定的 tool contract,eap-ai-client 只需呼叫 MCP 提供的 tool entrypoints 即可開始建置 ai-agent,透過將MCP Tool切出作為一個介面,如果未來有需要多種ai-agent程式需要掉用我的eap服務都可以輕鬆串接。


上一篇
Day24 | Simulation 程式碼摘錄和解釋(下)
下一篇
Day 26 | eap-ai-client 技術棧解剖:讓模型會想、工具會做、工程師少加班
系列文
事件驅動電力交易平台:Spring Boot 實戰26
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言