iT邦幫忙

2026 iThome 鐵人賽

DAY 14
0
AI Engineering

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

第一次做 AI Agent:讓 LLM 呼叫 MCP Tool

  • 分享至 

  • xImage
  •  

上一篇我們讓一個 Client 同時使用多個 MCP Tools,不過目前為止,Tool 的使用方式還是比較偏向由程式直接指定。

今天就再往前一步,讓 LLM 自己判斷什麼時候需要使用 MCP Tool。

這次我使用 Google Gemini 作為 LLM,因為它有提供免費額度可以使用,如果有其他 LLM API 也可以依照自己的需求替換,並直接拿之前 Day 7 做好的 Calculator MCP 來實作。


使用 Gemini

首先打開終端機輸入 pip install google-genai,安裝 Gemini SDK。

接著到 Google AI Studio 取得 API Key,詳細步驟在我之前實作 n8n 的文章裡有,這裡就先不另外介紹。

API Key 使用環境變數保存 $env:GEMINI_API_KEY="你的 API Key"

程式中再透過:

client = genai.Client(
    api_key=os.getenv("GEMINI_API_KEY")
)

建立 Gemini Client,這樣就可以從 Python 呼叫 Gemini。


連接之前的 Calculator MCP

這次不需要重新做 Calculator,直接使用 Day 7 已經完成的 server.py。

server_params = StdioServerParameters(
    command="python",
    args=["../day7/server.py"],
)

接著建立 MCP Client,初始化 Session:

async with stdio_client(server_params) as (read, write):
    async with ClientSession(read, write) as session:
        await session.initialize()

這部分其實跟前面幾天的 MCP Client 差不多,不同的是,這次取得 Tool 之後,我們還要把它提供給 Gemini。


把 MCP Tool 告訴 Gemini

首先使用:

result = await session.list_tools()

取得 MCP Server 提供的 Tools,接著把 MCP Tool 的資訊轉換成 Gemini 可以理解的 Function Declaration:

function_declarations = []

for tool in result.tools:
    function_declarations.append(
        types.FunctionDeclaration(
            name=tool.name,
            description=tool.description,
            parameters_json_schema=tool.input_schema
        )
    )

這裡主要是把 Tool 的:

  • 名稱
  • 說明
  • 參數規格

提供給 Gemini。

以 Calculator Tool 來說,Gemini 就可以知道有一個叫做 calculator 的 Function,以及它需要的 a、b 和 operation 這些參數。


讓 Gemini 判斷要不要使用 Tool

接著把這些 Function Declaration 放進 Gemini 的 Tool:

gemini_tool = types.Tool(
    function_declarations=function_declarations
)

再把使用者的問題送給 Gemini:

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=user_input,
    config=types.GenerateContentConfig(
        tools=[gemini_tool]
    )
)

這時候我們沒有直接告訴 Gemini 一定要使用 Calculator,而是把 Tool 提供給它,讓 Gemini 根據使用者的問題自行判斷是否需要使用。


實際執行流程

前面完成 Gemini 與 MCP Tool 的設定後,接下來就可以實際執行 Agent。

當使用者輸入問題後,Gemini 會先根據目前提供的 Tools 判斷是否需要使用工具。如果需要,就會產生要呼叫的 Tool 名稱以及對應的參數。

接著由 MCP Client 根據 Gemini 提供的資訊,實際呼叫 MCP Tool。這裡使用的就是我們之前 Day 7 建立的 Calculator MCP。

Calculator 執行完成後,MCP Client 會取得 Tool 的結果,再將結果交回 Gemini,最後由 Gemini 整理成自然語言回答。

整個過程可以簡單整理成:

使用者
  ↓
Gemini 判斷是否使用 Tool
  ↓
MCP Client 呼叫 Calculator
  ↓
取得 Tool 結果
  ↓
回傳 Gemini
  ↓
產生最後回答

實際執行後,可以在終端機看到 Gemini 選擇的 Tool、傳入的參數、MCP Tool 的執行結果,以及最後產生的回答。

https://ithelp.ithome.com.tw/upload/images/20260928/20178769eHgE0IGthZ.png


總結

今天第一次把 LLM、MCP Client 和 MCP Tool 串在一起。

雖然目前只有一個 Calculator Tool,但已經可以看到 AI Agent 的基本流程:使用者提出需求後,LLM 先判斷是否需要使用工具,如果需要,就產生 Tool 和參數,再由 MCP Client 實際執行,最後把結果交回 LLM。

前面做的 Calculator、File System、SQLite 和 REST API 等 MCP Tools,到這裡也開始不只是單獨的工具,而是可以成為 Agent 能夠使用的能力。


上一篇
AI Agent 到底是什麼?從 Chatbot 到 Agent
下一篇
Agent Loop 是什麼?讓 AI 自己決定下一步
系列文
30 天探索 MCP:從基礎概念到實作 共 17 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言