iT邦幫忙

2026 iThome 鐵人賽

DAY 12
0
AI Engineering

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

一個 Client 同時連接多個 MCP Server

  • 分享至 

  • xImage
  •  

上一篇我們讓 MCP Server 可以透過 REST API 取得外部的天氣資料,也慢慢累積了幾個不同用途的 MCP Server。

到目前為止,我們已經有:

  • Calculator MCP:計算數字
  • File System MCP:讀取檔案
  • SQLite MCP:查詢資料庫
  • REST API MCP:取得天氣資訊

那如果今天我希望一個 Client 同時使用這些 MCP Server 呢?
這篇就來實際做看看。


為什麼需要連接多個 MCP Server?

如果只有一個 MCP Server,其實直接連線就可以了,但實際使用時,很可能會遇到這種情況:

              ┌─ File System MCP
              │
Client ───────┼─ SQLite MCP
              │
              └─ Weather MCP

每個 MCP Server 負責不同的事情。

例如:

  • File System MCP 負責檔案
  • SQLite MCP 負責資料庫
  • Weather MCP 負責天氣

Client 不需要把這些功能全部寫在同一個 Server 裡,而是可以分別連接不同的 MCP Server,這也是 MCP 很重要的一個特點。


今天要做什麼?

我們先建立一個簡單的 Client,讓它同時連接:

  • File System MCP
  • SQLite MCP

流程大概是:

multi_client.py
      │
      ├── File System MCP
      │
      └── SQLite MCP

Client 會完成三件事情:

  1. 同時連接兩個 MCP Server
  2. 分別取得兩個 Server 提供的 Tools
  3. 分別呼叫這些 Tools

建立 Client

這次在 day12 裡建立 multi_client.py,我這裡有把之前做過的內容分開放在不同的資料夾,所以這次會需要使用 day8、day10,以及今天的 day12。
專案結構大概會變成:

mcp-learning/
├─ day8/
│  ├─ sandbox/
│  └─ file_server.py
│
├─ day10/
│  ├─ sqlite_server.py
│  └─ students.db
│
└─ day12/
   └─ multi_client.py

接著在 multi_client.py 裡建立 MCP Client,並設定要連接的兩個 MCP Server,以下是這次的程式碼

https://ithelp.ithome.com.tw/upload/images/20260926/20178769T3WiI8a9FC.png
https://ithelp.ithome.com.tw/upload/images/20260926/20178769rPsYMdbIpE.png
https://ithelp.ithome.com.tw/upload/images/20260926/201787697oeJtnWWQD.png

這裡我們使用 StdioServerParameters 設定每個 MCP Server 的啟動方式,另外也設定了 cwd,讓每個 Server 都可以在自己的資料夾中執行。這一點對我們目前的專案很重要,因為 File System MCP 的 sandbox 和 SQLite MCP 的 students.db 都放在各自的資料夾裡。

接著使用 stdio_client() 分別建立兩個連線,第一個連接 File System MCP,第二個連接 SQLite MCP。這樣同一個 Client 就可以同時和兩個不同的 MCP Server 溝通。


實際呼叫 Tool

知道有哪些 Tool 之後,就可以直接呼叫。

這次我們實際測試:

  • File System MCP → list_files
  • SQLite MCP → get_students

打開終端機,在day12的目錄下執行python multi_client.py

https://ithelp.ithome.com.tw/upload/images/20260926/201787690vfwLQ4bfP.png

可以看到兩個 Server 的 Tool,以及各自回傳的結果,這就代表我們已經成功讓一個 Client 同時使用兩個 MCP Server。


這次和之前有什麼不同?

之前我們的使用方式比較像:

Client
  ↓
一個 MCP Server
  ↓
多個 Tools

這次則變成:

                 ┌─ File System MCP
                 │      ├─ list_files
                 │      ├─ search_files
Client ──────────┤      └─ read_file
                 │
                 └─ SQLite MCP
                        ├─ get_students
                        └─ get_students_by_department

也就是一個 Client,可以同時連接多個 MCP Server,而每個 Server 又可以提供自己的 Tools。

這樣不同功能就可以分開管理,而不是全部塞進同一個 MCP Server。


總結

今天我們實際建立了一個 MCP Client,讓它同時連接 File System MCP 和 SQLite MCP,並分別取得與呼叫兩個 Server 提供的 Tools。

這次實作也讓我比較清楚看到,MCP Server 不一定要把所有功能放在一起,而是可以把不同功能拆成不同的 Server,再由 Client 統一連接。當之後的 Tool 越來越多時,這種方式也會比較容易管理。


上一篇
把 REST API 變成 MCP Tool
下一篇
AI Agent 到底是什麼?從 Chatbot 到 Agent
系列文
30 天探索 MCP:從基礎概念到實作 共 17 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言