上一篇我們做了 File System MCP,讓 MCP Server 可以讀取檔案。
這次來做一個不太一樣的東西:資料庫。
今天會使用 SQLite 建立一個簡單的學生資料庫,再透過 MCP Tool 查詢裡面的資料。
首先在mcp-learning內新增一個資料夾day10,接下來在資料夾建立一個 database.py,這樣建是因為我想保留前幾天我們做過的成果,今天的內容就放在這個day10資料夾裡。接著建立一個 students 資料表,裡面有學生的姓名、系所和成績,以下是我這次建立的程式碼

在終端機執行python database.py,成功後資料夾裡就會出現students.db,這就是我們今天要使用的 SQLite 資料庫。
接著建立 server.py,這次先做兩個 Tool:
get_students:取得所有學生資料get_students_by_department:依照系所查詢學生因為篇幅有限,這裡我也只放部分程式碼

這裡的 get_students() 會執行 SELECT * FROM students,把資料表裡的學生全部查詢出來, get_students_by_department() 則會根據我們輸入的系所進行查詢。
而在 get_students_by_department 中,我們使用了 ? 佔位符進行參數化查詢,避免使用 f-string 直接拼接字串,可以降低惡意 SQL 注入的風險,讓 MCP Tool 在調用資料庫時更加安全!
接著我們在終端機輸入mcp dev server.py啟動 MCP Inspector,打開 Inspector 後,可以看到我們剛剛建立的兩個 Tool:

先執行 get_students

可以看到它把我們之前存進資料庫的資料都查詢出來。
接著測試 get_students_by_department,我這裡輸入CS

可以看到這次只出現了第一、三筆資料,代表它成功依照系所篩選出符合條件的資料,這樣就成功透過 MCP Tool 查詢 SQLite 資料庫了。
今天我們把 MCP Server 和 SQLite 串了起來
前面的 File System MCP 是處理檔案,而這次則是透過 SQL 查詢資料表,雖然目前只是很簡單的學生資料,但可以看到 MCP Tool 不只能讀取檔案,也可以把資料庫的功能包裝起來,讓 MCP Client 可以使用。