上一篇我們認識了 MCP Server 裡面的 Tools、Resources、Prompts,也知道 Client 可以透過 tools/list 找到 Server 提供的 Tool。
今天就來打造一個 MCP Tool 看看,這次我們先不做太複雜的功能,就從最簡單的 Hello 開始。
首先打開昨天建立好的 server.py加入:
from mcp.server.mcpserver import MCPServer
server = MCPServer("Hello MCP")
@server.tool()
def hello(name: str) -> str:
return f"Hello, {name}!"
if __name__ == "__main__":
server.run()
這裡最重要的是@server.tool(),它會把下面的 hello() 註冊成 MCP Tool,而這個 Tool 很簡單,只需要一個名字,最後回傳:
Hello, 名字!
接下來在 VS Code 的終端機確認目前還在虛擬環境,(.venv),然後輸入:mcp dev server.py
第一次執行時,如果看到:
(.venv) PS C:\Users\USER\Desktop\mcp-learning> mcp dev server. py
Need to install the following packages:
@modelcontextprotocol/inspector@2.7.0
Ok to proceed? (y)
輸入 y 就可以,讓它安裝 MCP Inspector,安裝完成後瀏覽器會開啟 MCP Inspector。
進入 Inspector 後,可以看到我們的,Server這裡使用的是 STDIO,它會透過uv run --with mcp==2.2.0 mcp run server.py,來啟動我們的 Server。

點擊Disconnected將他切換成Connected。

連線成功的瞬間,你可能會注意到 Inspector 畫面右側跳出了很多列項目(例如 initialize、notifications/initialized、tools/list)。
這裡注意一下右側出現的不是 Tool,而是底層的 Protocol 訊息紀錄,這代表 MCP Client(Inspector)與 Server 正在背後進行握手(Handshake)與溝通。其中最關鍵的一條訊息就是 tools/list,這就是 Client 在問 Server你有哪些 Tool?
連線成功後,在上方找到 Tools,這時候就可以看到在畫面左邊看到我們剛剛建立的hello,點進去後可以看到它需要一個參數 name,

這就是我們在 Python 裡面寫的:
def hello(name: str) -> str:
所以 Inspector 已經知道:
Tool:hello
參數:name
接下來在 name 裡輸入MCP,然後執行 Tool,最後就會看到:

成功!
這代表我們剛剛建立的 MCP Tool 已經真的被呼叫了。
整個流程可以整理成:
MCP Inspector
↓
Connect
↓
tools/list
↓
找到 hello Tool
↓
輸入 name = MCP
↓
呼叫 hello
↓
Hello, MCP!
看到這裡可能會覺得,這不就是一個 Python 函式嗎?沒錯hello() 本身確實就是一個 Python 函式,但加上@server.tool()之後,它就不只是我們程式裡自己呼叫的函式,而是可以透過 MCP Server 提供給 Client 使用的 Tool,我們成功完成了把一個 Python 函式變成 MCP Tool,並讓 Client 成功找到和呼叫它。
今天我們終於把第一個 MCP Tool 跑起來了,從建立@server.tool()````def hello(name: str),到 MCP Inspector 找到hello最後得到Hello, MCP!
雖然這個 Tool 很簡單,但已經把 MCP Tool 最基本的流程跑過一次了,下一篇就來做一個比較實用的 Tool:
Calculator MCP。