iT邦幫忙

2026 iThome 鐵人賽

DAY 19
0
AI Engineering

30 天探索 MCP:從基礎概念到實作系列 第 19 篇

多步驟任務:讓 Agent 自己完成一個小任務

  • 分享至 

  • xImage
  •  

上一篇我們加入了 Prompt Injection,了解 Agent 在使用外部資料時,除了要能取得資訊,也需要注意資料中的內容是否安全,前面我們也陸續做了 SQLite、Calculator、RAG、File System 等 MCP Tool。

不過目前我們大多都是一次測試一個功能,所以今天就來把前面做過的東西串起來,讓 Agent 面對一個比較完整的任務時,自己判斷要使用哪些 Tool,並一步一步完成。


今天要做什麼?

這次我們給 Agent 一個完整的任務:

請幫我分析 CS 系的學生,找出成績低於 60 分的學生,使用 Calculator 計算 CS 系的平均成績,再參考知識庫中的學習建議,最後將完整的分析結果整理成 report.txt。

這個任務裡面其實包含了幾個步驟:

SQLite
  ↓
取得 CS 系學生資料
  ↓
Calculator
  ↓
計算平均成績
  ↓
RAG
  ↓
查詢學習建議
  ↓
File System
  ↓
寫入 report.txt

這次的重點不是我們在程式裡把順序全部寫死,而是讓 Agent 根據使用者的任務,自行決定需要使用哪些 Tool。


加入 File System 的寫入功能

前面 File System MCP 已經可以讀取檔案,這次再加入一個 write_file Tool,讓 Agent 可以建立或修改檔案。

@server.tool()
def write_file(file_path: str, content: str) -> str:
    """在 sandbox 中建立或寫入檔案"""

    path = SANDBOX / file_path

    try:
        path.resolve().relative_to(SANDBOX.resolve())
    except ValueError:
        return "錯誤:不允許寫入 sandbox 外的檔案。"

    path.parent.mkdir(parents=True, exist_ok=True)
    path.write_text(content, encoding="utf-8")

    return f"成功寫入檔案:{file_path}"

這樣 Agent 就多了一個可以實際「產生檔案」的 Tool。


Calculator 增加平均值計算

這次除了原本的四則運算之外,我們也增加 average:

@server.tool()
def average(numbers: list[float]) -> float:
    """計算一組數字的平均值"""

    if not numbers:
        return 0

    return sum(numbers) / len(numbers)

這樣 Agent 就可以把從 SQLite 查到的成績交給 Calculator 計算平均值,而不是直接由模型自己計算,也減少模型一直呼叫 Calculator 導致一分鐘請求次數達到上限


讓 Agent 同時連接多個 MCP Server

這次 Agent 會同時連接四個 MCP Server:

SQLite MCP
Calculator MCP
RAG MCP
File System MCP

每個 Server 負責不同的事情:

MCP Server 負責功能
SQLite MCP 查詢學生資料
Calculator MCP 計算平均成績
RAG MCP 查詢學習建議
File System MCP 建立 report.txt

Agent 會先取得這些 Server 提供的 Tool,接著交給 Gemini 判斷目前任務需要使用哪些工具。


實際測試

首先創建一個文件加入學習建議,接著執行 Agent,並讓它把建議加入RAG

https://ithelp.ithome.com.tw/upload/images/20261003/20178769kBXHTFqTTR.png

然後開始測試這次的任務,可以看到 Agent 依序使用不同的 Tool

https://ithelp.ithome.com.tw/upload/images/20261003/20178769g0SWPm9OsT.png

RAG 再從知識庫找到相關的學習建議,之後 Agent 將整理好的內容交給 write_file,下方圖片可以看到對話結果

https://ithelp.ithome.com.tw/upload/images/20261003/20178769Eo5VgjJQw2.png

最後可以在 day19/sandbox/report.txt 看到產生的分析報告。

https://ithelp.ithome.com.tw/upload/images/20261003/201787693KQ3ejD483.png


總結

到目前為止,我們已經把 SQLite、Calculator、RAG、File System 等不同 MCP Tool 串接起來,今天更進一步,讓 Agent 不只是「會使用 Tool」,而是可以根據一個完整任務,自行組合不同的 Tool,一步一步把事情完成。

這也是 MCP + AI Agent 很重要的一個應用方式:讓不同能力的 Tool 組合起來,共同完成一個任務。


上一篇
Prompt Injection × MCP:AI 為什麼可能被騙?
下一篇
MCP Tool 的設計:什麼樣的 Tool 才好用?
系列文
30 天探索 MCP:從基礎概念到實作 共 21 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言